Quaily CLI
quail-cli は Quaily と対話するためのコマンドラインインターフェースです。ユーザー認証、記事管理、ユーザー情報取得などを簡単に自動化できます。
Quaily CLI は https://api.quaily.com の Quaily API と通信します。
使い方の概要は「🖥️ Introducing Quail CLI: Streamline Your Newsletter Workflow」を参照してください。
インストール
quail-cli は次のコマンドでインストールできます。
bash
$ go install github.com/quailyquaily/quail-cli@latest基本的な使い方
インストール後は、次のように呼び出します。
bash
$ quail-cli [command]利用できるコマンド
- help: 各コマンドのヘルプを表示
- login: OAuth で Quaily にログイン
- me: 現在のユーザー情報を取得
- post: 記事の作成、更新、削除、取得
グローバルフラグ
--api-base string: Quaily API のベース URL(デフォルト:https://api.quaily.com)--auth-base string: Quaily Auth のベース URL(デフォルト:https://quaily.com)--config string: 設定ファイルのパス(デフォルト:$HOME/.config/quail-cli/config.yaml)--format string: 出力形式。humanまたはjson(デフォルト:human)-h, --help:quail-cliのヘルプを表示
使い方
Quaily へログインする
bash
$ quail-cli loginOAuth ログインが開始されます。表示された案内に従って認証を完了してください。
- ターミナルに表示された URL を開く
- アプリケーションを認可する
現在のユーザー情報を取得する
bash
$ quail-cli me現在認証済みのユーザー情報を取得します。
記事操作
記事を作成または更新する
bash
$ quail-cli post upsert your_markdown_file.md -l your_list_slugquail-cli は Markdown ファイルの frontmatter を読み取り、記事を作成または更新します。対象記事が存在しなければ新規作成し、存在すれば更新します。
Markdown ファイルの例:
markdown
---
title: "Here is the title"
slug: your-post-slug
datetime: 2024-09-30 18:42
summary: "This is a summary of the post."
tags: tag1, tag2, tag3
cover_image_url: "your-image-url.jpg"
---
> Any sufficiently advanced technology is indistinguishable from magic.
>
> -- Arthur C. Clarke
This is the body of the post.
int main() {
printf("Hello, World!");
return 0;
}
## Section Title
This is the last section of the post.記事を公開 / 非公開 / 配信 / 削除する
bash
$ quail-cli post publish -l your_list_slug -p your_post_slugbash
$ quail-cli post unpublish -l your_list_slug -p your_post_slugbash
$ quail-cli post deliver -l your_list_slug -p your_post_slugbash
$ quail-cli post delete -l your_list_slug -p your_post_slug設定
デフォルトでは、quail-cli は $HOME/.config/quail-cli/config.yaml を読み込みます。別ファイルを使う場合は --config を指定します。
bash
$ quail-cli --config /path/to/config.yaml設定ファイル例
yaml
# DO NOT modify `app` section, quail-cli will manage it.
app:
access_token: ""
expiry: ""
refresh_token: ""
token_type: ""
post:
# frontmatter_mapping is used to map the frontmatter keys
# for this example:
# you can use`featureImage` in the frontmatter and it will be mapped to `cover_image_url`
frontmatter_mapping:
cover_image_url: featureImage