Draft CLI
git push のように、ターミナルから記事を公開
インストール
# pipxをインストール(まだない場合)
$ brew install pipx # Mac
$ apt install pipx # Linux
# Draft CLIをインストール
$ pipx install git+https://github.com/s-saga011/draft-publish.git
# PowerShellからWSLに入る
> wsl
# 1. pipxをインストール(まだない場合)
$ sudo apt update && sudo apt install -y pipx
$ pipx ensurepath
# ターミナルを再起動
# 2. Draft CLIをインストール
$ pipx install git+https://github.com/s-saga011/draft-publish.git
インストール後 draft --help で確認できます。
初回セットアップ
1. サーバー設定
$ draft remote https://draft-publish.com --lang ja
✅ https://draft-publish.com (lang: ja)
2. SSH鍵を登録
Web UIの設定画面からSSH公開鍵を登録します。CLIはSSH鍵で自動認証されるため、パスワードやAPIキーは不要です。
# 公開鍵を確認(この内容をWeb UIに登録)
$ cat ~/.ssh/id_ed25519.pub
3. シェル補完を有効化 (オプション)
サブコマンドやフラグの TAB 補完を有効化します(例: draft push --+TAB で --unlisted, --draft, --price... が候補表示)。
# zsh 用の補完を書き出す(~/.zfunc/_draft、初回のみ)
$ draft --install-completion zsh
# TAB が効かない場合は ~/.zshrc に以下を追加(typer が自動で入れることが多い)
$ echo 'fpath=(~/.zfunc $fpath)' >> ~/.zshrc
$ echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
$ exec zsh # シェルを再読み込み
# Windows の場合は WSL (Ubuntu/Debian) 内で実行。bash の手順は共通
# bash 用の補完を書き出す(~/.bash_completions/draft.sh)
$ draft --install-completion bash
# TAB が効かない場合は ~/.bashrc から読み込む
$ echo 'source ~/.bash_completions/draft.sh' >> ~/.bashrc
$ exec bash # シェルを再読み込み
# zsh を使ってる場合は Mac タブを参照。fish の場合:
$ draft --install-completion fish
使い方
新規記事を作成
$ draft new "記事タイトル" --price 500 --tags "投資,AI"
📝 ~/drafts/記事タイトル-xxxxxx/
├── article.md ← 編集するファイル
└── draft.json ← メタデータ
記事を編集してpush
# 好きなエディタで編集
$ cursor ~/drafts/記事タイトル-xxxxxx/article.md
# push(SSH鍵で自動認証、画像も自動アップロード)
$ cd ~/drafts/記事タイトル-xxxxxx/
$ draft push
🔑 SSH認証中... ✅
📤 chart1.png
📤 chart2.png
🚀 https://draft-publish.com/articles/...
フォルダごとpush
Markdownと画像をフォルダにまとめてpushできます。サブフォルダ内の画像も自動検出。
$ ls my-article/
article.md charts/ screenshot.png
$ draft push ./my-article/ --price 500
# 画像は自動検出・アップロード・リンク書き換え
# 新規記事の公開状態を指定(初回 push 時のみ反映)
$ draft push ./my-article/ --unlisted # 限定公開(リンクを知ってる人のみ、検索・一覧に出さない)
$ draft push ./my-article/ --draft # 下書き保存(自分だけが閲覧可能)
--unlisted や --draft で作った記事は、以降の draft push で同じ公開状態が維持されます(毎回フラグを付け直す必要なし)。
公開・管理
$ draft publish # 下書き → 公開
$ draft publish --unlisted # 下書き → 限定公開(リンク経由のみ、検索/一覧から除外)
$ draft status # ローカルの記事ブランチ一覧
$ draft list # サーバーの記事一覧
$ draft log # リビジョン履歴
$ draft checkout <slug> # 既存記事をダウンロード
アップデート・アンインストール
# 最新版にアップデート
$ pipx upgrade draft-publish
# アンインストール
$ pipx uninstall draft-publish
Frontmatter
article.mdの先頭にメタデータを記述できます。CLI引数より優先度は低いです。
---
title: "記事タイトル"
price: 500
tags: [投資, AI]
---
# 記事タイトル
ここに本文...
<!-- paywall -->
ここから有料部分...
Markdown — Draft 独自オプション
標準の CommonMark + GFM はそのまま動きます。以下は Draft 独自の拡張記法です(<img width=...> 等の生 HTML はエスケープされるため、下記の書き方を使ってください)。
1. クリック拡大できる画像
画像の末尾に {.zoom} を付けると、ホイール/ピンチで拡大、ダブルクリックでリセットできるようになります。data-max で最大倍率(デフォルト 8)、data-min で最小倍率(デフォルト 0.5)を指定可能。
{.zoom}
{.zoom data-max=4}
{.zoom data-max=4 data-min=0.5}
2. Before / after スライダー — :::compare
:::compare ブロックの中に 画像をちょうど 2 枚書くと、ドラッグで A/B を切り替えるスライダーになります。画像の alt がラベルとして表示されます。
:::compare


:::
{.zoom} と併用可: {.zoom data-max=4}。
3. ブロックに class / id を付ける — {.class} / {#id}
属性ブロックは対象の 1 行前 に置きます。見出し(id / class)、段落、引用、リスト、表セルに付けられます。リンクは末尾にインラインで。
{#intro}
## はじめに
{.lead}
リード文として装飾される段落。
{.callout}
> 重要な注意事項。
[今すぐ購入](/buy){.button}
クラス名は対応する CSS が無いと見た目が変わりません。.callout .lead .button 等は慣例で、組み込みではないので、必要なら CSS を追加してください。
4. ペイウォール — <!-- paywall -->
無料プレビューと有料部分を分割します。無料部分は全体の 30% 以上である必要があります。
無料部分の内容...
<!-- paywall -->
有料部分の内容...
使えない記法: 生 HTML タグ(<img width="...">、<script>、<iframe> など)、インライン span 属性([text]{.x})、画像の style/width/height、見出し末尾の id(## Title {#id} は不可、{#id} を 1 行前に置く)。
コマンド一覧
| コマンド | 説明 |
draft remote <url> | サーバーURLを設定 |
draft new "タイトル" | 新規記事ブランチを作成 |
draft push [path] | 記事をpush(SSH鍵で自動認証) |
draft publish | 下書き → 公開 |
draft publish --unlisted | 下書き → 限定公開(リンク経由のみアクセス可、検索/一覧から除外) |
draft checkout <slug> | 既存記事をダウンロード |
draft status | ローカルの記事ブランチ一覧 |
draft log [slug] | リビジョン履歴 |
draft lang en/ja | 言語を切り替え |
draft list | サーバーの記事一覧 |
認証方式: SSH公開鍵(GitHub方式)。APIキーやパスワードの保存は不要です。
ローカルに保存されるのはサーバーURLのみ(~/.draft/config.json)