supsub-mp について
supsub-mp は、WeChat公式アカウントの検索と実行中の検索タスクのキャンセルに使うCLIスキルです。非同期検索の候補をまとめ、名前や説明、購読状況を確認してから購読できます。
主な機能
- 01キーワードでアカウントを検索
- 02非同期結果をポーリングして集約
- 03実行中の検索タスクをキャンセル
- 04結果をJSON形式で出力
- 05候補の購読状況を確認
活用シーン
- 01類似名のアカウントを比較
- 02確認したアカウントを購読に追加
- 03タイムアウト後に残ったタスクをキャンセル
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ supsub-ai/ supsub-cli --skill supsub-mpインストール後、Claude Code で/supsub-mpを入力して読み込まれたか確認します。
詳細
supsub-mp スキル
WeChat 公式アカウントを検索します(非同期タスク、CLI はデフォルトで最大 30 秒間同期的に待機します)。実行中の検索タスクをキャンセルすることもできます。mpId を取得したら、次の手順は supsub sub add --mp-id <mpId> です(supsub-sub スキルを参照)。mp search が返す mpId は WeChat ネイティブの base64 文字列であり、--source-id に渡してはいけません(これは supsub 内部の正の整数 ID で、ID 空間が異なります)。
前提条件
- インストール:
curl -fsSL https://raw.githubusercontent.com/SupSub-AI/supsub-cli/master/scripts/install.sh | bash(ネイティブインストール。~/.localにインストールされ、バックグラウンドでの自動更新をサポートします)。またはパッケージマネージャーでnpm i -g @supsub/cli/pnpm add -g @supsub/cli - ログイン済みであること:
supsub auth statusで Authenticated と表示されます(初回使用時は、先にsupsub auth loginを実行してください) - 未認証(exit 2 / UNAUTHORIZED)の場合、「ログインしていません」と伝えるだけで終わらせないでください:ユーザーのブラウザーで認証画面を開くため、
supsub auth loginを直接実行してください(このコマンドはブラウザーを自動で開き、認証が完了するまで待機します。10 分など、十分に長いタイムアウトを設定してください。ユーザーはブラウザーで確認ボタンをクリックするだけで、ターミナルへの入力は不要です)。認証に成功したら、元のコマンドを再試行してください。ブラウザーがない環境やヘッドレス環境では、代わりにSUPSUB_NO_BROWSER=1 supsub auth loginをユーザーに案内してください。
コマンド
公众号 を検索(非同期、自動ポーリング)
supsub mp search <name>
<name> は公众号名のキーワードです(引用符で囲むことをおすすめします)。コマンドの内部処理は次のとおりです。
POST /api/mps/search-tasksで非同期タスクを作成し、searchIdを取得します。- CLI は 2 秒ごとにタスクの状態をポーリングし、最大 30 秒間待機します。
- バックエンドは複数回のポーリングにわたって候補の公众号を1 件ずつ返し、CLI は自動で蓄積して重複を除外します。
finished=trueを受け取ると、すべての候補をまとめて結果として出力します。- 30 秒以内に完了しなかった場合は終了し、
searchIdを返します(あわせて案内メッセージを表示します)。
各候補のフィールド:mpId、name、img、description、isSubscribed。
# 同步搜索(实测约 15-30 秒,工具超时请设到 60s 以上)
supsub mp search "机器之心"
# JSON
supsub mp search "机器之心" -o json
JSON の形式(成功時):{"success":true,"data":[{"mpId":"...","name":"...","img":"...","description":"...","isSubscribed":false}, ...]}
返されるのは複数の候補(実測では「机器之心」が 10 件、「阮一峰」が 5 件)であり、完全一致する 1 件ではありません。候補を選ぶ際の制約については、下記の「エージェントの使用上の注意」を参照してください。
見つからない場合:MP_NOT_FOUND エラーで終了します(終了コードは 0 以外)。
タイムアウト:MP_SEARCH_TIMEOUT エラーで終了します。エラー本文には data.searchId が含まれ、案内メッセージは 30 秒内未完成,可重试 supsub mp search 或取消任务: supsub mp search-cancel <searchId> のような形式です。
⚠️ タイムアウト時の処理:CLI には、検索を再開するためのクエリコマンドはありません。タイムアウトした場合、ユーザーが選べる方法は 2 つだけです。
supsub mp search <name>を再実行するか、supsub mp search-cancel <searchId>を呼び出して残ったタスクをキャンセルしてから、再試行してください。
実行中の検索タスクをキャンセル
supsub mp search-cancel <searchId>
<searchId> は、直前の supsub mp search がタイムアウト分岐で返したエラーデータから取得します(JSON モードでは、{"success":false,"error":{"code":"MP_SEARCH_TIMEOUT","data":{"searchId":"..."}}} の形式を dieWith と output() が処理します。テーブルモードでは、エラー文字列に searchId が直接含まれます)。
supsub mp search-cancel sid_abc123
supsub mp search-cancel sid_abc123 -o json
JSON の形式:{"success":true,"data":{"message":"已取消"}}
タスクが存在しないか、すでにキャンセルされている場合は、TASK_NOT_FOUND エラーで終了します(HTTP 404 → 終了コードは 0 以外)。
エージェントの使用上の注意
mp searchは同期的にラップされた非同期タスクです。呼び出し側が通常searchIdを気にする必要はなく、結果の配列をそのまま取得できます。searchIdの処理が必要なのは、30 秒のタイムアウト分岐の場合だけです。- 結果の解析には常に
-o jsonを使用してください。成功時、dataはMp[]です。失敗時は標準のErrorEnvelope(code、message、任意のdata.searchId)が返されます。 - 検索から登録までの流れ(最も一般的なケース):
# 1. 列出候选,连 name 一起看(实测「机器之心」返回 10 条) supsub mp search "机器之心" -o json | jq -r '.data[] | "\(.mpId)\t\(.isSubscribed)\t\(.name)"' # 2. 与用户确认选中哪一个后,用 --mp-id 订阅(走 POST /api/mps;type 默认 MP,可省) # 可顺带 --group <gid> 一步入组 supsub sub add --mp-id "MzA3MzI4MjgzMw==" --group 1166 - ⚠️
jq '.data[0]'で最初の候補を直接選ばないでください。 実測では、mp search "机器之心"の候補 10 件には「机器之心PRO会员」「机器之心SOTA模型」のような類似名のアカウントだけでなく、「新智元」「量子位」など、まったく関係のないアカウントも含まれていました。候補(name、description、isSubscribed)をユーザーに提示して選んでもらい、確認後に登録してください。同名または類似名の候補が複数ある場合は、特にユーザーの代わりに決めてはいけません。 - ⚠️
mpIdを--source-idとして使わないでください:mp searchが返すmpIdは WeChat ネイティブの base64 文字列(例:MzkyNTYzODk0NQ==)です。一方、supsub sub add --source-idが想定するのは supsub 内部の正の整数である sourceId(supsub search/sub listから取得)であり、両者は異なる ID 空間に属します。base64 をデコードすると数字になる場合でも、バックエンドは「情報ソースが存在しません」として拒否します。必ず--mp-idを使用してください。 - 候補のフィールドは
mpId/name/img/description/isSubscribedです。isSubscribedフィールドの存在は実測で確認済み(2026-07 に開発環境で確認)です。この値に基づいて登録済みのアカウントをスキップできるため、supsub search --type MPの利用やsub listとの照合は不要です。バックエンドのバージョンによってこのフィールドが実際に欠落している場合は、sub listとの照合に切り替えてください。 mp search内部のポーリング設定は固定です。間隔は 2 秒、合計 30 秒(POLL_INTERVAL_MS/POLL_MAX_MS)で、CLI から調整するフラグは公開されていません。実測では、実際の検索には約 15~30 秒かかります(「机器之心」は 27.4 秒、「阮一峰」は 14.7 秒)。したがって、このコマンドを呼び出す際はツールのタイムアウトを 60 秒以上に設定し、デフォルト値を使わないでください。また、開始前に「この処理には約 30 秒かかります」とユーザーに伝え、応答が止まったように思わせないようにしてください。- バックエンドは候補の公众号を「ストリーミング」方式で返します。CLI がすでに
mpIdに基づいて重複を除外しているため、呼び出し側で再度重複を除外する必要はありません。 - タイムアウト分岐後に実行できる正当な処理は、
supsub mp search-cancel <searchId>で残ったタスクをキャンセルするか、supsub mp search <name>を再実行することだけです。 - 終了コード:
0は正常終了、タイムアウト/見つからない/タスクが存在しないなどの業務エラー(バックエンドの 4xx)は1、2は UNAUTHORIZED、10はネットワークエラー、11はサーバーエラー(5xx)です。