mcpField
S
square-post

square-post

github.com/binanceマーケティング・グロース1.1k33.0k 回インストール2 日前に更新
リポジトリ

square-post について

square-post は、Binance Square にテキスト、画像、記事、動画を投稿するスキルです。ローカルスクリプトがメディアのアップロードと投稿を処理し、API キーで認証します。

主な機能

  1. 01テキスト投稿と記事の公開
  2. 02最大 4 枚の画像付き投稿
  3. 03自動生成カバー付き動画の投稿
  4. 04公開前のメディア処理とアップロード
  5. 05Binance Square API キーの安全な取り扱い

活用シーン

  1. 01Binance Square への短文投稿
  2. 02カバー画像付き記事の公開
  3. 03抽出したフレームをカバーにした動画投稿

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/binance/binance-skills-hub --skill square-post

インストール後、Claude Code で/square-postを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
scripts/
lib.mjs
post-image.mjs
post-text.mjs
post-video.mjs
save-key.mjs

詳細

Square Post スキル

目的

​​scripts/ 内のローカルスクリプトを実行して、Binance Square に新しいコンテンツを投稿します。

対応する投稿タイプ:

  • テキストのみの短い投稿
  • 最大 4 枚の画像を含む画像投稿
  • タイトルと任意のカバー画像を含む長文記事
  • 自動生成されたカバー画像を含む動画投稿

通常の投稿では、API リクエストを手動で作成しないでください。アップロード、処理状況の確認、カバー画像の生成、公開はスクリプトが行います。

ランタイム依存関係

  • Node.js 18 以降。スクリプトではネイティブの ES モジュールと組み込みの fetch API を使用します。
  • 動画投稿では、post-video.mjs が最初のフレームをカバー画像として抽出するため、ffmpeg が必要です。
  • 動画の長さがユーザーから指定されない場合は、ffprobe が必要です。
  • Binance Square OpenAPI リクエストと署名付きメディアのアップロードには、ネットワークアクセスが必要です。

認証

投稿には Binance Square OpenAPI キーが必要です。

投稿する前に:

  • ユーザーの環境に BINANCE_SQUARE_OPENAPI_KEY があれば、そちらを優先してください。
  • 設定されていない場合、スクリプトは ~/.config/binance-square/openapi-key を自動的に確認します。
  • 有効なキーが見つからない場合は、まずユーザーに API キーの提供を依頼してください。
  • 今後のリクエストでもキーを再利用したい場合は、BINANCE_SQUARE_OPENAPI_KEY=<apiKey> node scripts/save-key.mjs で保存します。それ以外の場合は、現在のコマンド環境でのみ使用してください。
  • API キーは次のページで作成できることをユーザーに伝えてください:https://www.binance.com/square/creator-center/home

キーは BINANCE_SQUARE_OPENAPI_KEY(環境変数または保存ファイル)経由でのみ渡してください。コマンド引数に書き込んだり、キー全体を表示したりしないでください。CLI 引数は ps の出力やシェル履歴に表示されます。キーに言及する際は、abc12...xyz9 のように先頭 5 文字と末尾 4 文字のみを表示してください。

スクリプト

すべてのコマンドは、このスキルのディレクトリから実行してください。

テキストまたは記事の投稿

テキストのみの短い投稿、または画像なしの長文記事に使用します。

node scripts/post-text.mjs --text "Hello #crypto $BTC"

タイトル付きの長文記事(カバー画像なし):

node scripts/post-text.mjs --text "Full article body..." --title "Market Report"

フラグ:

  • --text は必須です。投稿するテキストの内容を指定します。
  • --title は任意です。記事形式のコンテンツとして設定します。
画像投稿

短い画像投稿、またはカバー画像付きの長文記事に使用します。

node scripts/post-image.mjs --text "Chart analysis" --images "./chart1.png,./chart2.png"

タイトルとカバー画像付きの長文記事:

node scripts/post-image.mjs --text "Full analysis..." --title "Market Report" --cover "./chart.png"

フラグ:

  • --text は必須です。投稿または記事の内容を指定します。
  • --images は短い画像投稿で必須です。画像パスをカンマ区切りで指定します。最大 4 枚です。
  • --title は任意です。記事形式のコンテンツとして設定します。指定する場合は、--images を渡さないでください。
  • --title を指定したメディア付き記事では、--cover が必須です。記事モードではカバー画像を 1 枚だけ指定できます。

スクリプトは各画像をアップロードして処理が完了するまで待機し、バックエンドから返された処理済み画像 URL を使って公開します。--title を指定すると、contentType=2 で公開し、--cover が必須となります。アップロードした画像 URL は cover としてのみ送信されます。--title を指定しない場合は、contentType=1 で公開し、すべての --images を imageList として送信します。

動画投稿

動画投稿に使用します。

node scripts/post-video.mjs --video "./video.mp4" --duration 7.5 --text "My analysis"

フラグ:

  • --video は必須です。ローカル動画のパスを指定します。
  • --duration は必須です。動画の長さを秒単位で指定します。
  • --text は任意です。投稿するテキストの内容を指定します。

スクリプトは動画をアップロードして処理が完了するまで待機し、ffmpeg で最初のフレームを抽出してカバー画像としてアップロードした後、リクエストに cover を含めて公開します。

ユーザーが動画の長さを指定しない場合は、スクリプトを実行する前に ffprobe で確認してください。

エージェントのワークフロー

  1. API キーを解決します(「認証」を参照)。解決できない場合は、ほかの作業を行う前に停止してユーザーに確認します。

  2. 以下の表を参考に、ユーザーの意図に応じてスクリプトを選びます。その後、「制約」に照らして検証します。制約に違反している場合は、その旨を説明し、実行しません。

    ユーザーの意図スクリプト必須フラグ
    短文の投稿post-text.mjs--text
    長文記事、メディアなしpost-text.mjs--text --title
    画像付き短文投稿(画像1~4枚、タイトルなし)post-image.mjs--text --images "<p1,p2,...>"
    カバー画像付き記事post-image.mjs--text --title --cover
    動画投稿post-video.mjs--video --duration(--text は任意)
  3. 実行前に、以下の例外ケースを確認します。

    • タイトルあり、画像がちょうど1枚の場合 → その画像をカバー画像として扱います(--images ではなく --cover)。
    • タイトルあり、画像が複数の場合 → 停止して、どの画像をカバー画像にするかユーザーに確認します。
    • 動画の長さが指定されていない場合 → 最初に ffprobe を実行して長さを取得します。
  4. ユーザーのコンテンツをそのまま保持します。書き換え、翻訳、ハッシュタグやキャッシュタグの追加、句読点の変更は行いません。$coin と #topic のテキストはそのまま渡します。バックエンドが解析します。

  5. 1回限りの使用として、コマンドの実行環境に BINANCE_SQUARE_OPENAPI_KEY を設定してスクリプトを実行します(CLI 引数には決して含めません)。

  6. 結果を報告します。

    • 成功した場合は、スクリプトが出力した ID と Link を返します。
    • スクリプトが ID: unavailable と Link: unavailable を伴って Success! を出力した場合は、成功として扱います。投稿後に /content/add が 504 を返したため、投稿 ID とリンクは取得できません。
    • 失敗した場合は、スクリプトのエラーと API コード/メッセージを提示します。

制約

  • 画像:1投稿につき最大4枚。記事のカバー画像はちょうど1枚です。
  • 動画:1投稿につき最大1本です。
  • 1つの投稿に画像と動画を同時に添付することはできません。
  • ユーザーが明示的に提供したメディアのみを添付します。自動で添付してはいけません。
  • ユーザーが提供したテキストを変更してはいけません。#topic と $coin はサーバー側で解析されます。
  • 1日の上限:投稿100件、アップロード400件。

よくあるエラー

  • 220003:API キーが見つかりません。
  • 220004:API キーの有効期限が切れています。
  • 220009:OpenAPI の1日の投稿上限を超えています。
  • 220014:1日のアップロード上限を超えています。
  • 20002 または 20022:センシティブな語句が検出されました。
  • 20013:コンテンツの長さが上限を超えています。
  • 20020 または 220011:コンテンツ本文を空にすることはできません。
  • 30008、2000001、または 2000002:アカウントまたはデバイスによる投稿が制限されています。

対応範囲

このスキルは、新しい投稿の公開のみをサポートします。以下には対応していません。

  • 既存の投稿の閲覧、一覧表示、検索
  • 投稿の編集または削除
  • コメント、いいね、その他のやり取り
  • ユーザープロフィールまたはアカウントの管理
  • 予約投稿または下書き

コメント