課題 / 目的
substack-mcp を使って、Markdown本文とサムネイル画像からSubstack記事を作成し、必要に応じて公開まで進められる導線を整える。今回の実運用対象は「Fable 5(現行の公式表記では Fable リブート)」の記事。
対象範囲
- Markdown記事ファイルから下書きを作成するCLI導線の整備
- ローカル画像またはURLをSubstackへアップロードし、記事カバー画像として設定する導線の整備
--publish 指定時のみ公開する安全な挙動
- Fable記事本文とサムネイルの作成、可能であれば下書き投稿までの実行
完了条件
substack-mcp のパッケージ内コマンドで、本文作成、カバー設定、公開オプションを一連で実行できる
- サムネイル付きの記事下書きが作れる
- 公開操作は明示フラグまたはユーザー確認なしに実行されない
- 関連するテスト、lint、またはbuild相当の検証結果を記録する
実装計画
- 既存の
create_article.py / generate_and_publish.py / SubstackClient の責務を確認する
- パッケージ配下に再利用可能なCLIモジュールを追加し、
pyproject.toml にentry pointを追加する
- cover imageアップロードと
set_cover_image を下書き作成フローに統合する
- dry-runまたはユニットテストで引数処理とクライアント呼び出し順を検証する
- Fable記事本文とサムネイルを作成し、認証情報が利用可能なら下書き作成まで行う
テスト / CI計画
python -m compileall src
- 追加したCLIのユニットテストまたはmock実行
- 認証情報がある場合のみSubstack API実行。認証情報がない場合は下書き投稿をブロックとして記録する
ナレッジログ
- 作業開始時点でopen Issueなし
- 既存MCPには
create_draft、upload_image、set_cover_image、publish_draft が存在
- 既存の
generate_and_publish.py はFAL_KEY依存かつ既存post_id前提なので、今回の「記事本文+サムネ+下書き作成」を単発で実行する導線は不足
課題 / 目的
substack-mcpを使って、Markdown本文とサムネイル画像からSubstack記事を作成し、必要に応じて公開まで進められる導線を整える。今回の実運用対象は「Fable 5(現行の公式表記ではFableリブート)」の記事。対象範囲
--publish指定時のみ公開する安全な挙動完了条件
substack-mcpのパッケージ内コマンドで、本文作成、カバー設定、公開オプションを一連で実行できる実装計画
create_article.py/generate_and_publish.py/SubstackClientの責務を確認するpyproject.tomlにentry pointを追加するset_cover_imageを下書き作成フローに統合するテスト / CI計画
python -m compileall srcナレッジログ
create_draft、upload_image、set_cover_image、publish_draftが存在generate_and_publish.pyはFAL_KEY依存かつ既存post_id前提なので、今回の「記事本文+サムネ+下書き作成」を単発で実行する導線は不足