square-post について
square-post は、Binance Square にテキスト、画像、記事、動画を投稿するスキルです。ローカルスクリプトがメディアのアップロードと投稿を処理し、API キーで認証します。
主な機能
- 01テキスト投稿と記事の公開
- 02最大 4 枚の画像付き投稿
- 03自動生成カバー付き動画の投稿
- 04公開前のメディア処理とアップロード
- 05Binance Square API キーの安全な取り扱い
活用シーン
- 01Binance Square への短文投稿
- 02カバー画像付き記事の公開
- 03抽出したフレームをカバーにした動画投稿
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ binance/ binance-skills-hub --skill square-postインストール後、Claude Code で/square-postを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdscripts/lib.mjspost-image.mjspost-text.mjspost-video.mjssave-key.mjs詳細
Square Post スキル
目的
scripts/ 内のローカルスクリプトを実行して、Binance Square に新しいコンテンツを投稿します。
対応する投稿タイプ:
- テキストのみの短い投稿
- 最大 4 枚の画像を含む画像投稿
- タイトルと任意のカバー画像を含む長文記事
- 自動生成されたカバー画像を含む動画投稿
通常の投稿では、API リクエストを手動で作成しないでください。アップロード、処理状況の確認、カバー画像の生成、公開はスクリプトが行います。
ランタイム依存関係
- Node.js 18 以降。スクリプトではネイティブの ES モジュールと組み込みの
fetchAPI を使用します。 - 動画投稿では、
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 で確認してください。
エージェントのワークフロー
-
API キーを解決します(「認証」を参照)。解決できない場合は、ほかの作業を行う前に停止してユーザーに確認します。
-
以下の表を参考に、ユーザーの意図に応じてスクリプトを選びます。その後、「制約」に照らして検証します。制約に違反している場合は、その旨を説明し、実行しません。
ユーザーの意図 スクリプト 必須フラグ 短文の投稿 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は任意) -
実行前に、以下の例外ケースを確認します。
- タイトルあり、画像がちょうど1枚の場合 → その画像をカバー画像として扱います(
--imagesではなく--cover)。 - タイトルあり、画像が複数の場合 → 停止して、どの画像をカバー画像にするかユーザーに確認します。
- 動画の長さが指定されていない場合 → 最初に
ffprobeを実行して長さを取得します。
- タイトルあり、画像がちょうど1枚の場合 → その画像をカバー画像として扱います(
-
ユーザーのコンテンツをそのまま保持します。書き換え、翻訳、ハッシュタグやキャッシュタグの追加、句読点の変更は行いません。
$coinと#topicのテキストはそのまま渡します。バックエンドが解析します。 -
1回限りの使用として、コマンドの実行環境に
BINANCE_SQUARE_OPENAPI_KEYを設定してスクリプトを実行します(CLI 引数には決して含めません)。 -
結果を報告します。
- 成功した場合は、スクリプトが出力した
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:アカウントまたはデバイスによる投稿が制限されています。
対応範囲
このスキルは、新しい投稿の公開のみをサポートします。以下には対応していません。
- 既存の投稿の閲覧、一覧表示、検索
- 投稿の編集または削除
- コメント、いいね、その他のやり取り
- ユーザープロフィールまたはアカウントの管理
- 予約投稿または下書き