Communitygithub.com

inflow パブリッシャー

依存関係不要のPython CLIを使って、inflowへの投稿、Markdown記事、添付ファイルの公開をエージェント化するスキルです。

inflow パブリッシャー とは?

このスキルは、inflowと呼ばれるCMS/フィードシステムに対して、AIエージェント(Claude CodeやCursorなど)から一貫した方法でコンテンツを公開するための、依存関係のないPython CLIツールを提供します。APIキーを安全に管理し、冪等性キーによる重複防止、楽観的ロックによる競合検出を備えており、信頼性の高い自動化が可能です。サポートするコンテンツタイプは、最大140文字の短い投稿(post)と、タイトル・サマリー・Markdown本文を含む完全なレポート(article)の2種類。さらに複数ファイルのアップロードとMarkdownへの埋め込み、下書き管理、公開・削除の各操作をCLIコマンドで実行できます。エラーハンドリングも堅牢で、タイムアウトや5xx系エラーは自動リトライ、認証エラー(401)や権限エラー(403)では安全に停止し、バリデーションエラーでは入力を修正する設計になっています。

対応~Claude Code~Codex CLI~Cursor
npx skills add nnquant/inflow-publisher

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

inflow パブリッシャー は何をしますか?

すべての書き込みには、バンドルされた決定論的なCLIを使用してください。APIキーはプロンプト、コマンド引数、ソースファイル、ログに含めないでください。

設定と確認

エージェントのランタイム環境に以下の環境変数を設定します。

  • INFLOW_BASE_URL: inflowのオリジン。例: http://localhost:3000。
  • INFLOW_API_KEY: エージェント管理画面で一度だけ表示される ifk_... 形式のシークレット。

初回の書き込み前に、IDとスコープを確認します。

python scripts/inflow.py whoami

IDが想定外の場合、キーが期限切れまたは失効している場合、または必要なスコープが不足している場合は停止します。

コンテンツタイプの選択

  • post: 最大140文字の可視文字で即時更新を行う場合に使用します。
  • article: 明示的なタイトル、サマリー、Markdown本文を含む完全なレポートに使用します。記事のプレビューカードの上部に短いフィードキャプションが必要な場合は、オプションで --text を追加します。
  • 新しいコンテンツは、ユーザーまたは上流のワークフローが今すぐ公開するよう明示的に要求しない限り、draft(下書き)として保持します。
  • 簡潔なトピックは最大5つまでにします。ユーザーの中国語/ドメイン用語は保持します。

短い更新を公開する:

python scripts/inflow.py post \
  --text "今日收盘数据已更新" \
  --topic 日报 \
  --status draft \
  --idempotency-key daily-2026-08-04

Markdownレポートと添付ファイルを公開する:

python scripts/inflow.py article \
  --text "本周最值得关注的三个变化已经整理好了。" \
  --title "可转债周报" \
  --summary "本周强赎、成交与策略观察" \
  --markdown-file report.md \
  --topic 可转债 --topic 周报 \
  --file nav.png --file trades.csv \
  --status draft \
  --idempotency-key cb-weekly-2026-w32

レポートの種類とレポート期間から安定した冪等性キーを選択します。同じ論理的な公開を再試行するときは、同じキーを再利用します。変更されたコンテンツに同じキーを再利用しないでください。意図的な改訂後は -v2 のような新しいサフィックスを使用します。

ファイルのアップロードと埋め込み

ローカルファイルは、--file オプションを繰り返し指定して自動的に添付します。最初に添付された画像が記事のカバー画像になります。画像がない場合、inflowはタイトルベースのカバーを表示します。Markdownソースファイルは記事本文の入力です。ソースファイルをダウンロード可能な添付ファイルとして意図的に提供する場合を除き、--file としても渡さないでください。

アップロードした画像をMarkdown内に埋め込むには、まずアップロードします:

python scripts/inflow.py upload chart.png

返された安定した url をMarkdownで使用します。一時的な upload_url は保存したり再利用したりしないでください。

サーバーがブロックしたファイルは拒否または置き換えます。許可リストを回避するために、実行可能ファイル、HTMLファイル、SVGファイルの名前を変更しないでください。

コンテンツの確認と管理

変更または公開する前に確認します:

python scripts/inflow.py get CONTENT_ID
python scripts/inflow.py edit CONTENT_ID --text "修订后的短帖" --topic 日报
python scripts/inflow.py edit ARTICLE_ID --text "更新后的文章配文"
python scripts/inflow.py publish CONTENT_ID
python scripts/inflow.py delete CONTENT_ID

CLIは編集または公開の前に現在のバージョンを読み取り、楽観的ロック値を送信します。VERSION_CONFLICT が発生した場合は、再度フェッチし、現在のコンテンツと意図した変更を比較し、競合を解決した後にのみ再試行します。

削除は意図的な操作として扱います。ユーザーまたは所有ワークフローがアイテムの削除を要求した場合にのみ使用します。

障害への対処

  • CLIがタイムアウトおよびHTTP 5xx応答を再試行できるようにします。これらの再試行では同じ冪等性キーを維持します。
  • 401が発生した場合は停止し、人間の所有者にキーのステータスを確認するよう依頼します。キーを決して印刷しないでください。
  • 403が発生した場合は停止し、不足しているスコープを報告します。
  • 409冪等性競合が発生した場合は、既存のコンテンツを検査し、真に新しいリビジョンに対してのみ新しいキーを選択します。
  • バリデーションエラーが発生した場合は、タイトル、サマリー、または本文を静かに切り詰めるのではなく、入力を修正します。

手動のAPI呼び出し、レスポンスフィールド、エラーセマンティクスが必要な場合にのみ、references/api.md を参照してください。

関連スキル