pp-x-twitter について
pp-x-twitterは、Xのデータを読み取り、検索、保存、分析するx-twitter-pp-cliを操作するスキルです。ローカルで検索可能なデータを必要とするエージェント向けに、SQLite検索・分析、構造化出力、モニタリング、執筆コマンドを備え、Xへの書き込み操作は読み取り専用の処理と区別されています。
主な機能
- 01データをSQLiteに同期してオフライン検索
- 02投稿リンクを解決し会話の文脈を再構成
- 03投稿コレクションの保存・エクスポートと検索監視
- 04活動ブリーフの作成と投稿パフォーマンス分析
- 05Markdownからスレッドや長文記事を作成
活用シーン
- 01オフライン検索できるX投稿コーパスの構築
- 02製品への言及やアカウント動向の追跡
- 03会話の再構成と情報源の整理
- 04MarkdownからスレッドやX Articlesを準備
MCP 対応
MCPサーバーを含み、CLI機能をAIエージェントに公開して、複数ステップの意図のオーケストレーションに対応します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-x-twitterインストール後、Claude Code で/pp-x-twitterを入力して読み込まれたか確認します。
詳細
X (Twitter) — Printing Press CLI
前提条件:CLI のインストール
このスキルは x-twitter-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、先にインストールしてください。
- Printing Press インストーラーを使ってインストールします。デフォルトでは、macOS/Linux では
$HOME/.local/binに、Windows では%LOCALAPPDATA%\Programs\PrintingPress\binにバイナリがインストールされます。npx -y @mvanhorn/printing-press-library install x-twitter --cli-only - 確認します:
x-twitter-pp-cli --version - このスキルを実行するエージェント/ランタイムの
$PATHに、表示されたインストールディレクトリが含まれていることを確認します。
npx によるインストールに失敗した場合(Node がない、オフラインなど)は、Go を直接インストールする方法に切り替えてください(Go 1.26.6 以降が必要です)。この方法では $GOPATH/bin(デフォルトでは $HOME/go/bin)にインストールされるため、そのディレクトリを $PATH に追加してください。
go install github.com/mvanhorn/printing-press-library/library/social-and-messaging/x-twitter/cmd/x-twitter-pp-cli@latest
インストール後に --version が「command not found」と表示される場合、ランタイムから $PATH 上のバイナリディレクトリが参照できていません。確認が成功するまで、このスキルのコマンドを実行しないでください。
公式の X v2 API を踏襲し、ほかの X ツールにはない機能を追加しています。同期は一度だけで、FTS5 検索やグループ別分析を何度でも実行できるローカル SQLite ストア、エージェント向けの --json/--select 出力、そしてトークン効率のよいオーケストレーションと名前付きの複数ステップのインテントを通じて、AI エージェントにすべての機能を公開する MCP サーバーを備えています。貼り付けられたリンクを使うワークフローは post resolve から始め、投稿に親投稿/引用/返信のコンテキストが必要な場合は thread context を使います。長期保存するソース資料は collection save/list/export で保存し、継続的な検索は monitor create/run/list で追跡し、保存済みのアクティビティは brief でまとめ、アカウントは account snapshot でスナップショットを作成します。ローンチやリポジトリへのリンクは url mentions で探し、投稿の指標は performance snapshot/backfill/analyze で追跡します。アカウントやクエリのタイムラインは timeline export でエクスポートし、同期済みの会話スレッドは thread show でオフライン再構成し、Markdown から自分宛ての返信スレッドは thread compose で作成できます。また、articles-publish-md で Markdown から長文の X 記事を作成し、users bookmarks find でブックマークの山から目的の投稿を探せます。これは、同期済みブックマークを対象にキーワードと投稿者で検索する機能で、X 自体にはその検索手段がありません。
この CLI を使う場面
最近の投稿をランキング形式で確認するには、x-twitter-pp-cli top-posts --metric engagement --limit 10 --max-fetch 100 --json を実行します。ライブの X タイムラインを読み込むため、ページごとに有料 API クレジットを使用することがあります。--max-fetch には 1~1000 件の投稿を指定でき、応答が少ない場合に備えて追加ページの予算も少量確保されます。この予算内で返されるランキングは不完全な場合があり、その場合はすべての JSON 行で truncated: true となります。--user-id を指定すると、ユーザー名を別途検索せずに数値のアカウント ID を選択できます。指定しない場合、コマンドは認証済みユーザーを使用します。JSON 行には実際に使用された score_metric が記載され、インプレッションスコアがない場合はゼロではなく null になります。--dry-run を指定すると、リクエストは行われません。
X(Twitter)のデータの閲覧、検索、アーカイブが必要で、結果を毎回取得し直すのではなくオフラインで検索できるようにしたい場合は、この CLI を使ってください。検索可能な投稿コーパスの構築、会話スレッドの再構成、エンゲージメント情報を含むユーザーの最近の投稿のスナップショット作成、メンションの継続的な監視などに適しています。また、読み取り専用/破壊的操作に関する安全上のヒントや、名前付きの複数ステップのインテントを備えた X のインターフェースを AI エージェントに提供したい場合にも適しています。同じデータを複数回クエリするなら、ローカルストアを使うことで読み取りのたびにクレジットを消費せずに済むため、生の API 呼び出しよりこの CLI を優先してください。
独自の機能
これらの機能は、この API を扱うほかのツールでは利用できません。
使うほど活用できるローカル状態
-
post resolve— 任意の X 投稿 URL または投稿 ID を、正規化された構造化レコードに変換します。auto モードではローカルデータを優先し、必要に応じて公開 v2 の読み取りにフォールバックします。データの取得元(live、local、mixed)を含め、次のワークフローで使えるコマンド候補も出力します。 エージェントが貼り付けられた X のリンクから作業を始める際、最初のコマンドとして使用します。不安定な URL 解析を避け、後続のワークフローで使える安定したフィールドを返します。x-twitter-pp-cli post resolve https://x.com/user/status/123 --agent x-twitter-pp-cli post resolve 123 --include author,media,links,refs,metrics --agent -
thread context— 投稿の URL または ID を解決し、利用可能な場合は親投稿と引用投稿を含め、必要に応じてローカルストアや最近の検索から取得した返信を指定範囲内で含めます。投稿について要約したり、投稿をもとに下書きを作成したりする前に使用します。
thread showは会話を純粋にオフラインで再構成するコマンドです。一方、thread contextは URL を起点とするワークフローで、ローカルデータとリアルタイムデータを組み合わせることができます。x-twitter-pp-cli thread context https://x.com/user/status/123 --agent x-twitter-pp-cli thread context 123 --replies --depth 3 --limit 100 --agent -
collection save/list/export— 解決した X の投稿を、永続的な名前付きローカルコレクションに保存し、Markdown、JSON、JSONL、または CSV 形式で一覧表示またはエクスポートします。X への書き込みは一切行わず、ローカルの SQLite ストアにのみ書き込みます。調査ライブラリ、ローンチへの言及、事例、採用・情報源資料など、エージェントが最初の API 読み取り後もオフラインで再利用するものには、コレクションを使用します。
x-twitter-pp-cli collection save https://x.com/user/status/123 --collection ai-agents --note "Good framing" --agent x-twitter-pp-cli collection list ai-agents --agent x-twitter-pp-cli collection export ai-agents --format markdown -
monitor create/run/list— 名前付きのクエリ、URL、またはアカウントのモニターを作成し、ローカルのウォーターマークと重複排除を使って繰り返し実行します。monitor createとmonitor runが書き込むのはローカルの SQLite 状態のみです。投稿、いいね、返信、フォロー、その他 X の変更は一切行いません。ローンチへの言及、製品・顧客からのフィードバック、アカウントの追跡、定期的なエージェントジョブにはモニターを使用します。
--since lastは保存済みのウォーターマークを使用し、--previewはローカル状態を更新せずに取得します。x-twitter-pp-cli monitor create ai-labs --query 'from:openai OR from:anthropic' --agent x-twitter-pp-cli monitor create product-mentions --url https://example.com --agent x-twitter-pp-cli monitor run ai-labs --since last --agent x-twitter-pp-cli monitor list --agent -
brief— モニターの結果、コレクション、または明示的に指定した投稿 ID から、ソースに基づいた決定論的な JSON または Markdown のブリーフを作成します。リンク、投稿者、テキスト、利用可能な指標をまとめます。結論を捏造したり、LLM による要約を実行したりすることはありません。エージェントが、メモ、ドキュメント、CRM に貼り付けられる X の日次・週次アクティビティ資料や、コレクションの概要を必要とする場合に使用します。
x-twitter-pp-cli brief --monitor ai-labs --since 24h --agent x-twitter-pp-cli brief --collection launch-feedback --format markdown -
account snapshot— ユーザー名またはユーザー ID を指定して、プロフィールの基本情報、公開指標、固定投稿、最近の投稿を記録します。X に対して読み取り専用であり、--liveまたは--data-source liveが指定されていない限り、まずローカルデータを使用します。x-twitter-pp-cli account snapshot @username --recent 20 --agent x-twitter-pp-cli account snapshot 12345 --include recent,profile,metrics,pinned --format markdown -
url mentions— URL、ドメイン、リポジトリ、記事、または製品ページに言及している最近の投稿を検索します。必要に応じて、結果をローカルコレクションに保存したり、今後の実行用にローカルモニターを作成・更新したりできます。x-twitter-pp-cli url mentions https://example.com --since 7d --agent x-twitter-pp-cli url mentions github.com/org/repo --collection launch-feedback --monitor repo-links --agent -
performance snapshot/backfill/analyze— タイムスタンプ付きの投稿指標をローカルに保存し、認証が許可する場合は最近のアカウント投稿をバックフィルし、種類、時間帯、メディア、リンクの有無、ラベル別に保存済みスナップショットを分析します。欠損している指標は null または未設定のままです。CLI は利用できないフィールドをゼロとして扱いません。スナップショットの出力にはpublic_metrics、利用可能な非公開/オーガニック指標、metric_source、metric_availabilityが含まれます。x-twitter-pp-cli performance snapshot --ids 123,456 --label 24h --agent x-twitter-pp-cli performance backfill --mine --days 90 --agent x-twitter-pp-cli performance analyze --since 90d --group-by type,hour,has_media,has_link --agent -
timeline export— アカウントまたはクエリのタイムラインを Markdown、JSON、または JSONL 形式でエクスポートします。アカウントのエクスポートでは、利用可能な場合はローカルに同期済みのツイートを使用し、必要な場合または指定された場合にのみライブデータを取得します。x-twitter-pp-cli timeline export @username --since 30d --format markdown x-twitter-pp-cli timeline export --query 'ai agents' --since 7d --format jsonl -
thread show— ローカルに同期済みの投稿から、順序と深さのタグを保った完全な会話スレッドを再構築します。API の読み取りクレジットを追加で消費しません。誰が誰に返信したか、またその順序など、議論の構造を把握する必要がある場合は、検索 API をページごとに取得して手作業でツリーを再構築するのではなく、こちらを使用します。
x-twitter-pp-cli thread show 1750000000000000000 --agent -
users bookmarks find— 同期済みのブックマークをキーワードや投稿者でオフライン検索します。X にはブックマーク検索機能がなく、API からブックマークのタイムスタンプも取得できないため、ブックマークは未読のまま積み上がります。このコマンドは、ローカルストアから不足している検索機能を再構築します。読み取り専用であり、同期後は無料で再実行できます。X の読み取りクレジットを消費するのは同期時に一度だけで、クエリごとには消費しません。「これについてブックマークしたのに、見つからない」というときの救済策です。ブックマークを一度同期すれば、エージェントが取得して活用(要約、スレッドの下書き、クラスタリングなど)できます。オフラインストアはエージェントの作業用データセットとなり、クエリごとに API コストがかかることはありません。
# one-time populate (personal read — needs X_OAUTH2_USER_TOKEN); add author field + users for --from x-twitter-pp-cli sync --resources bookmarks --param tweet.fields=author_id,created_at x-twitter-pp-cli sync --resources users x-twitter-pp-cli users bookmarks find "rust async" --agent x-twitter-pp-cli users bookmarks find "llm" --from @karpathy --limit 20 --agent
ワークフローの作成
-
thread compose— Markdown ファイルを、番号付きの280文字に収まるセルフ返信スレッドに分割します。デフォルトでは出力のみを行い、--post を指定した場合にのみ投稿します。ドキュメントからスレッドを決定論的に作成します。デフォルトのドライランにより、書き込みを行う前にエージェントが投稿内容を正確にプレビューできます。
x-twitter-pp-cli thread compose ./update.md -
articles-publish-md— YAML フロントマター付きの Markdown ファイルを、X の記事エディターが受け付ける Draft.js の content_state JSON に変換します。デフォルトではプレビューを表示します。--draft は新しい下書きを作成し、--update は既存の下書きを編集し、--post は一般公開します。ドキュメントから長文の X 記事を作成する唯一のプログラムによる方法です。プレビュー、--draft、--update を使えば、明示的に --post を指定するまで非公開のままにできます。
このコンバーターは、段落、
#/##見出し(###以降は##に引き下げ)、リスト、引用、フェンス付きコードブロック、表、区切り線、画像行()、単独のツイート URL(ネイティブ埋め込み)、太字/斜体/コードのインラインスタイル(引用内も含む)、および実際の LINK エンティティ(機能するハイパーリンク)になる[text](url)インラインリンクに対応しています。HTML コメント(``)のみの行は削除され、記事本文には含まれません。x-twitter-pp-cli articles-publish-md ./post.md x-twitter-pp-cli articles-publish-md ./post.md --update 1750000000000000000 -
articles update-md— Markdown ファイルから既存の X 記事の下書きをその場で更新します。タイトル(フロントマター)、本文、リンク、新しいインライン画像を1つのコマンドで更新できます。記事 ID はarticles list --agentで確認してください。Markdown を編集して、コマンドを再実行するだけです。下書きが重複することはありません。下書きの ID は維持されるため、編集 URL や保存済みの状態も有効なままです。
x-twitter-pp-cli articles update-md ./post.md --article-id 1750000000000000000 --agent警告 — 本文の置き換え:
articles update-mdは対象の下書きの本文全体を置き換えます。Markdown コンバーターで再現できない内容を X のコンポーザーで手動追加していた場合、更新時に削除されます。このコマンドは下書きの content_state を事前に検査し、コンバーターの出力対象外のエンティティ型(LINK、MARKDOWN、MEDIA、TWEET、DIVIDER)が見つかると処理を拒否します。--replace-unknown-entities を指定するのは、それらの内容を本当に上書きする場合に限ってください。Markdown で作成した内容は問題なく往復変換できます。下書きにコンポーザー限定の埋め込みやその他の手動追加内容がある場合は、コンポーザーで編集してください。デフォルトでは下書きのみが対象です。公開済みの記事は、--republish を指定しない限り拒否されます。指定した場合は、Unpublish -> UpdateContent -> Publish が実行されます(記事は一時的に非公開になります)。API を呼び出さずに変換後のペイロードをプレビューするには、
--dry-runを使用してください。
コマンドリファレンス
account-activity — AAA サブスクリプションの取得と管理に関するエンドポイント
x-twitter-pp-cli account-activity create-subscription— ユーザーと指定した Webhook の Account Activity サブスクリプションを作成します。x-twitter-pp-cli account-activity delete-subscription— 指定した Webhook とユーザー ID の Account Activity サブスクリプションを削除します。x-twitter-pp-cli account-activity get-subscription-count— 現在有効な Account Activity サブスクリプションの数を取得します。x-twitter-pp-cli account-activity get-subscriptions— 指定した Webhook の有効なサブスクリプション一覧を取得します。x-twitter-pp-cli account-activity validate-subscription— 指定した Webhook に対するユーザーの Account Activity サブスクリプションを確認します。
activity — アクティビティを管理します
x-twitter-pp-cli activity create-subscription— X アクティビティイベントのサブスクリプションを作成しますx-twitter-pp-cli activity delete-subscription— X アクティビティイベントのサブスクリプションを削除しますx-twitter-pp-cli activity delete-subscriptions-by-ids— ID を指定して、複数の X アクティビティイベントのサブスクリプションを削除しますx-twitter-pp-cli activity get-subscriptions— XAA の有効なサブスクリプション一覧を取得しますx-twitter-pp-cli activity update-subscription— X アクティビティイベントのサブスクリプションを更新します
chat — チャットを管理します
x-twitter-pp-cli chat add-group-members— 既存の暗号化されたChatグループ会話に1人以上のメンバーを追加し、会話キーをローテーションします。x-twitter-pp-cli chat create-conversation— 認証済みユーザーに代わって、新しい暗号化されたChatグループ会話を作成します。x-twitter-pp-cli chat get-conversation— 種類、ミュート状態、グループの詳細など、Chat会話のメタデータを返します。chat_conversationを使用してください。x-twitter-pp-cli chat get-conversation-events— ページネーションに対応し、指定したChat会話のメッセージとキー変更イベントを取得します。x-twitter-pp-cli chat get-conversations— 認証済みユーザーの受信トレイにあるChat会話の一覧を取得します。x-twitter-pp-cli chat initialize-conversation-keys— Chat会話の暗号化キーを初期化します。x-twitter-pp-cli chat initialize-group— 新しいXChatグループ会話を初期化し、一意の会話IDを返します。x-twitter-pp-cli chat mark-conversation-read— 認証済みユーザーに代わって、指定したChat会話を既読にします。x-twitter-pp-cli chat media-download— XChat会話から暗号化されたメディアデータをダウンロードします。レスポンス本文には生のバイナリデータが含まれます。x-twitter-pp-cli chat media-upload-append— XChatのアップロードセッションにメディアデータを追加します。x-twitter-pp-cli chat media-upload-finalize— XChatのメディアアップロードセッションを完了します。x-twitter-pp-cli chat media-upload-initialize— XChatのメディアアップロードセッションを初期化します。x-twitter-pp-cli chat send-message— 指定したChat会話に暗号化されたメッセージを送信します。x-twitter-pp-cli chat send-typing-indicator— 認証済みユーザーに代わって、指定したChat会話に入力中インジケーターを送信します。
communities — コミュニティを管理します
x-twitter-pp-cli communities get-by-id— IDを指定して、特定のコミュニティの詳細を取得します。x-twitter-pp-cli communities search— 指定した検索クエリに一致するコミュニティの一覧を取得します。
compliance — システム内のXデータのコンプライアンス維持に関連するエンドポイント
x-twitter-pp-cli compliance create-jobs— 指定したジョブタイプの新しいコンプライアンスジョブを作成します。x-twitter-pp-cli compliance get-jobs— ジョブタイプと任意のステータスで絞り込んだコンプライアンスジョブの一覧を取得します。x-twitter-pp-cli compliance get-jobs-by-id— IDを指定して、特定のコンプライアンスジョブの詳細を取得します。
connections — ストリーミング接続に関連するエンドポイント
x-twitter-pp-cli connections delete-all— 認証済みアプリケーションのアクティブなストリーミング接続をすべて終了します。x-twitter-pp-cli connections delete-by-endpoint— 認証済みアプリケーションの指定したエンドポイントIDに対するストリーミング接続をすべて終了します。x-twitter-pp-cli connections delete-by-uuids— 認証済みアプリケーションの複数のストリーミング接続をUUIDで指定して終了します。x-twitter-pp-cli connections get-history— 認証済みアプリケーションのアクティブなストリーミング接続と過去のストリーミング接続を、切断理由とともに返します。
dm-conversations — DM会話を管理します
x-twitter-pp-cli dm-conversations create-direct-messages-by-participant-id— IDを指定して、特定の参加者にダイレクトメッセージを送信します。x-twitter-pp-cli dm-conversations create-direct-messages-conversation— 指定した参加者との新しいダイレクトメッセージ会話を開始します。x-twitter-pp-cli dm-conversations get-direct-messages-events-by-participant-id— 特定の会話のダイレクトメッセージイベントを取得します。x-twitter-pp-cli dm-conversations media-download— レガシーのダイレクトメッセージに添付されたメディアをダウンロードします。
dm-events — DMイベントを管理します
x-twitter-pp-cli dm-events delete-direct-messages-events— 認証済みユーザーが所有する場合、特定のダイレクトメッセージイベントをその ID で削除します。x-twitter-pp-cli dm-events get-direct-messages-events— すべての会話にわたる最近のダイレクトメッセージイベントのリストを取得します。x-twitter-pp-cli dm-events get-direct-messages-events-by-id— 特定のダイレクトメッセージイベントの詳細をその ID で取得します。
evaluate-note — evaluate note を管理します
x-twitter-pp-cli evaluate-note— コミュニティノートを評価するためのエンドポイントです。
insights — insights を管理します
x-twitter-pp-cli insights get-historical— 指定された期間内の指定されたポストの過去のエンゲージメント指標を取得します。x-twitter-pp-cli insights get-insights28-hr— 過去 28 時間にわたる指定されたポストのエンゲージメント指標を取得します。
lists — リストの取得、管理に関連するエンドポイント
x-twitter-pp-cli lists create— 認証済みユーザーの新しいリストを作成します。x-twitter-pp-cli lists delete— 認証済みユーザーが所有する特定のリストをその ID で削除します。x-twitter-pp-cli lists get-by-id— 特定のリストの詳細をその ID で取得します。x-twitter-pp-cli lists update— 認証済みユーザーが所有する特定のリストの詳細をその ID で更新します。
media — メディアに関連するエンドポイント
x-twitter-pp-cli media append-upload— メディアアップロードリクエストにデータを追加します。x-twitter-pp-cli media create-metadata— メディアファイルのメタデータを作成します。x-twitter-pp-cli media create-subtitles— 特定のメディアファイルの字幕を作成します。x-twitter-pp-cli media delete-subtitles— 特定のメディアファイルの字幕を削除します。x-twitter-pp-cli media finalize-upload— メディアアップロードリクエストを確定します。x-twitter-pp-cli media get-analytics— メディアの分析データを取得します。x-twitter-pp-cli media get-by-key— 特定のメディアファイルの詳細をそのメディアキーで取得します。x-twitter-pp-cli media get-by-keys— メディアファイルの詳細をそれらのメディアキーで取得します。x-twitter-pp-cli media get-upload-status— メディアアップロードのステータスをその ID で取得します。x-twitter-pp-cli media initialize-upload— メディアアップロードを初期化します。x-twitter-pp-cli media upload— ポストやその他のコンテンツで使用するメディアファイルをアップロードします。
news — ニュース記事を取得するためのエンドポイント
x-twitter-pp-cli news get— ニュース記事をその ID で取得します。x-twitter-pp-cli news search— 指定された検索クエリに一致するニュース記事のリストを取得します。
notes — ノートを管理します
x-twitter-pp-cli notes create-community— LLM のユースケース向けのコミュニティノートエンドポイントを作成します。x-twitter-pp-cli notes delete-community— コミュニティノートを削除します。x-twitter-pp-cli notes search-community-written— ユーザーによって作成されたすべてのコミュニティノートを返します。x-twitter-pp-cli notes search-eligible-posts— コミュニティノートの対象となるすべてのポストを返します。
openapi-json — openapi json を管理します
x-twitter-pp-cli openapi-json— OpenAPI 仕様の全体を JSON 形式で取得します。(https://github を参照)
spaces — スペースの取得、管理に関連するエンドポイント
x-twitter-pp-cli spaces get-by-creator-ids— 指定されたユーザー ID によって作成されたスペースの詳細を取得します。x-twitter-pp-cli spaces get-by-id— 特定のスペースの詳細をその ID で取得します。x-twitter-pp-cli spaces get-by-ids— 複数のスペースの詳細をそれらの ID で取得します。x-twitter-pp-cli spaces search— 指定された検索クエリに一致するスペースのリストを取得します。
trends — trends を管理します
x-twitter-pp-cli trends <woeid>— WOEID で識別される特定の地域のトレンドトピックを取得します。
tweets — ツイートの取得、検索、変更に関連するエンドポイント
x-twitter-pp-cli tweets create-posts— 認証済みユーザーの新しいポストを作成します。edit_options が指定された場合は既存のポストを編集します。x-twitter-pp-cli tweets create-webhooks-stream-link— FilteredStream のイベントを指定された webhook に配信するためのリンクを作成します。x-twitter-pp-cli tweets delete-posts— 認証済みユーザーが所有している場合、指定された ID のポストを削除します。x-twitter-pp-cli tweets delete-webhooks-stream-link— FilteredStream のイベントから指定された webhook へのリンクを削除します。x-twitter-pp-cli tweets get-posts-analytics— 指定された期間内の指定されたポストの分析データを取得します。x-twitter-pp-cli tweets get-posts-by-id— 指定された ID のポストの詳細を取得します。x-twitter-pp-cli tweets get-posts-by-ids— 指定された複数の ID のポストの詳細を取得します。x-twitter-pp-cli tweets get-posts-counts-all— 全文アーカイブから検索クエリに一致するポストの件数を取得します。x-twitter-pp-cli tweets get-posts-counts-recent— 過去 7 日間に検索クエリに一致したポストの件数を取得します。x-twitter-pp-cli tweets get-rule-counts— フィルタリングされたストリームのアクティブなルールセット内のルール数を取得します。x-twitter-pp-cli tweets get-rules— フィルタリングされたストリームのアクティブなルールセットまたはルールのサブセットを取得します。x-twitter-pp-cli tweets get-webhooks-stream-links— フィルタリングされたストリームのルールセットに関連付けられた webhook リンクの一覧を取得します。x-twitter-pp-cli tweets search-posts-all— 全文アーカイブから検索クエリに一致するポストを取得します。x-twitter-pp-cli tweets search-posts-recent— 過去 7 日間から検索クエリに一致するポストを取得します。x-twitter-pp-cli tweets update-rules— フィルタリングされたストリームのアクティブなルールセットにルールを追加または削除します。
usage — 使用状況を管理します
x-twitter-pp-cli usage— 指定された日数にわたるポストの使用統計を取得します。
users — ユーザーの取得と関係の管理に関連するエンドポイント
x-twitter-pp-cli users get-by-id— 指定された ID のユーザーの詳細を取得します。x-twitter-pp-cli users get-by-ids— 指定された複数の ID のユーザーの詳細を取得します。x-twitter-pp-cli users get-by-username— 指定されたユーザー名のユーザーの詳細を取得します。x-twitter-pp-cli users get-by-usernames— 指定された複数のユーザー名のユーザーの詳細を取得します。x-twitter-pp-cli users get-me— 認証済みユーザーの詳細を取得します。x-twitter-pp-cli users get-public-keys— 指定されたユーザーの公開鍵と Juicebox 設定を返します。x-twitter-pp-cli users get-reposts-of-me— 認証済みユーザーからのコンテンツをリポストしたポストの一覧を取得します。x-twitter-pp-cli users get-trends-personalized-trends— 認証済みユーザーのパーソナライズされたトレンドトピックを取得します。x-twitter-pp-cli users bookmarks find [query]— 別の API 読み取りを行わずに、ローカルに同期されたブックマークをキーワードや作成者で検索します。x-twitter-pp-cli users likes post <user_id> --tweet-id <tweet_id>— 認証済みユーザーの代わりにポストにいいねします。x-twitter-pp-cli users likes unlike-post <user_id> <tweet_id>— 認証済みユーザーの代わりにポストのいいねを取り消します。x-twitter-pp-cli users search— 検索クエリに一致するユーザーの一覧を取得します。
webhooks — webhook を管理します
x-twitter-pp-cli webhooks create— 新しい webhook 設定を作成します。x-twitter-pp-cli webhooks create-replay-job— 配信された、または配信が試行されたすべてのイベントについて、最大過去 24 時間分のイベントを取得するリプレイジョブを作成します。x-twitter-pp-cli webhooks delete— 既存の webhook 設定を削除します。x-twitter-pp-cli webhooks get— クライアントアプリに関連付けられた webhook 設定の一覧を取得します。x-twitter-pp-cli webhooks validate— 指定された webhook に対して CRC チェックをトリガーします。
適切なコマンドを見つける
やりたいことはわかっていても、どのコマンドを使えばよいかわからない場合は、CLI に直接尋ねてください。
x-twitter-pp-cli which "<capability in your own words>"
which は、自然言語による機能の問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は少なくとも 1 件の一致があることを示し、終了コード 2 は確度の高い一致がないことを示します。その場合は --help に切り替えるか、検索語をより絞り込んでください。
レシピ
トピックをアーカイブしてから、オフラインで検索する
x-twitter-pp-cli sync --resources tweets --since 24h && x-twitter-pp-cli search "ai agents" --type tweets --limit 50
一度 SQLite に同期すれば、以降 API を読み込まずに、オフラインで好きなだけ FTS 検索を実行できます。
大規模なレスポンスからエージェント向けのフィールドだけを取得する
x-twitter-pp-cli search "openai" --type tweets --agent --select id,text,author_id,public_metrics.like_count
投稿には大きなネストされたペイロードが含まれます。--agent と --select を使うと、レスポンスをエージェントに必要なフィールドだけに絞り込み、コンテキストのコストを抑えられます。
会話スレッドをオフラインで再構築する
x-twitter-pp-cli thread show 1750000000000000000 --agent
同期済みの投稿を conversation_id と referenced_tweets で結合してたどり、順序付けられた深さタグ付きのツリーを作成します。API 呼び出しは不要です。
ドキュメントから自分への返信スレッドを作成する(デフォルトではドライラン)
x-twitter-pp-cli thread compose ./release-notes.md
Markdown を番号付きの、280 文字以内に収まる自分への返信スレッドに分割して出力します。実際に投稿するには --post を追加してください。
認証の設定
X の認証には、互いに独立した 3 つのレーンがあります。一方のレーンから別のレーンの状態を推測しないでください。コマンドを選ぶ前に x-twitter-pp-cli doctor --json を実行し、auth_lanes を確認してください。
auth_lanes.app_only_api:X 開発者コンソールで取得した、アプリ専用の X API Bearer Token です。ツイートやユーザーの検索、最近の検索、リスト、スペースなど、公開情報への読み取り専用 API アクセスに使用します。x-twitter-pp-cli auth set-bearer-token <token>で保存するか、X_BEARER_TOKENをエクスポートしてください。auth_lanes.oauth2_user_context:X_OAUTH2_USER_TOKEN、またはx-twitter-pp-cli auth oauth2-login/auth import-oauth2で取得して保存した OAuth2 アクセストークンです。/2/users/me、書き込み、ブックマーク、個人情報の読み取り、DM、フォロー、いいね、リポスト、ユーザーコンテキストでの分析に必要です。このレーンがmissingまたはinvalidの場合、アプリ専用 Bearer Token で再試行しないでください。OAuth2 認証コード + PKCE フローを実行するか、ユーザーコンテキスト用の実際のトークンを明示的にインポートしてください。auth_lanes.x_articles_cookie:x-twitter-pp-cli auth login --chromeで取得したブラウザーの Cookie です。このレーンは X Articles/x.com のブラウザーセッションエンドポイント専用です。X_OAUTH2_USER_TOKENは作成されず、v2 API のユーザーコンテキストコマンドも認証されません。
設定手順:
- X 開発者コンソールで、アプリを Project に紐付けます。
- 投稿やその他の変更が必要な場合は、アプリの権限を Read and write に設定します。
- アプリの Bearer Token をコピーし、アプリ専用の公開情報の読み取りには
x-twitter-pp-cli auth set-bearer-token <bearer-token>を実行します。環境変数を使う場合は、シェルまたはランタイムのシークレットマネージャーにX_BEARER_TOKENを設定します。 tweet.read、tweet.write、users.read、offline.access、bookmark.read、like.read、like.write、follows.read、follows.writeなどの適切なスコープを指定して OAuth2 を有効にします。X 開発者アプリにhttp://127.0.0.1:8787/callbackを OAuth2 リダイレクト URI として追加し、x-twitter-pp-cli auth oauth2-login --client-id <oauth2-client-id>を実行して、認証コード + PKCE のブラウザーフローを完了します。トークンをすでに持っている場合は、非対話型の方法としてx-twitter-pp-cli auth import-oauth2 --client-id <oauth2-client-id> --access-token <oauth2-access-token> --refresh-token <oauth2-refresh-token> --scopes tweet.read,tweet.write,users.read,offline.access,bookmark.read,like.read,like.write,follows.read,follows.writeを実行できます。環境変数を使う場合は、シェルまたはランタイムのシークレットマネージャーにX_OAUTH2_USER_TOKENを設定します。articles ...コマンドを使用する場合に限り、別途x-twitter-pp-cli auth login --chromeを実行します。
auth set-token は、X では「token」が曖昧なため非推奨です。互換性のため auth set-bearer-token のエイリアスとして残されていますが、OAuth2 ユーザーコンテキスト用トークンには使用しないでください。対話型の OAuth2 ブラウザーフローには auth oauth2-login を、トークンをすでに持っている場合は auth import-oauth2 を使用してください。
doctor --json は、機械可読な事前チェックコマンドです。selected_profile、各レーンのステータス、/2/users/me のプローブ結果、取得できた場合は認証済みユーザーの ID、保存済みスコープ、不足しているワークフロースコープ、トークンの有効期限、リフレッシュトークンの有無、X Articles Cookie のステータスを、シークレットを表示せずに報告します。
X が Unsupported Authentication と Application-Only is forbidden を返した場合、そのコマンドには OAuth2 のユーザーコンテキスト認証が必要です。auth_lanes.oauth2_user_context を修正してください。Cookie 認証とアプリ専用 Bearer 認証では、そのエンドポイントの要件を満たせません。
Raw API のエスケープハッチ
新しい X エンドポイント、認証レーンの動作、または適合する生成済みコマンドがまだない場合の API エラーをデバッグするときにのみ、raw を使用してください。相対 API パスまたは許可リストに登録された HTTPS の X 絶対 URL、繰り返し指定できるクエリパラメーターとヘッダー、さらに --body、--body-file、または --body @- による JSON ボディを受け付けます。
x-twitter-pp-cli raw GET /2/users/me --agent
x-twitter-pp-cli raw GET /2/tweets --param ids=123,456 --json
x-twitter-pp-cli raw POST /2/tweets --body '{"text":"hello"}' --dry-run --agent
通常のワークフローでは、エンドポイント固有の検証、ページネーション、プロベナンス、レスポンスエンベロープ、ワークフローのヒントが含まれるため、生成済みコマンドを優先してください。raw は上流のレスポンスボディを保持しながら、他のすべてのコマンドと同じ認証レーンを使用します。アプリ専用の公開読み取りには引き続き X_BEARER_TOKEN が必要です。ユーザーコンテキストの読み取りと書き込みには、引き続き X_OAUTH2_USER_TOKEN またはインポート済みの OAuth2 ユーザーコンテキストトークンが必要です。
エージェントモード
任意のコマンドに --agent を追加します。次のオプションに展開されます:--json --compact --no-input --no-color --yes。
-
パイプ可能 — JSON は stdout に、エラーは stderr に出力されます
-
フィルタ可能 —
--selectでフィールドを絞り込めます。ドット区切りパスはネストされた構造をたどり、配列は各要素をたどります。詳細な API でコンテキストを小さく保つうえで重要です:x-twitter-pp-cli communities search --query example-value --agent --select id,name,status -
プレビュー可能 —
--dry-runでリクエストを送信せずに確認できます。--agentの場合、ミューテーションのドライランは、既知の場合にsent:false、メソッド/パス/ボディ、選択されたプロファイル、認証レーン、ミューテーションの分類、公開アクションを含む JSON を返します。 -
オフライン対応 — 同期/検索コマンドは、利用可能な場合にローカルの SQLite ストアを使用できます
-
非対話型 — プロンプトは表示されず、すべての入力はフラグで指定します
-
明示的な再試行 — 既存の作成対象を成功として扱う場合にのみ
--idempotentを、削除対象が見つからない場合に成功として扱う場合にのみ--ignore-missingを使用してください
レスポンスエンベロープ
ローカルストアまたは API から読み取るコマンドは、出力をプロベナンスエンベロープでラップします:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
データには .results を解析し、ライブデータかローカルデータかを確認するには .meta.source を参照してください。人間が読みやすい N results (live) の概要は、stdout がターミナルであり、かつ機械可読形式のフラグ(--json、--csv、--compact、--quiet、--plain、--select)が設定されていない場合にのみ stderr に出力されます。パイプ/エージェントでの利用時と、形式を明示した実行では、stdout に純粋な JSON が出力されます。
エージェントからのフィードバック
この CLI で気になる点に気づいたら(エージェントが気づいた場合も)、記録してください:
x-twitter-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
x-twitter-pp-cli feedback --stdin < notes.txt
x-twitter-pp-cli feedback list --json --limit 10
記録はローカルの ~/.local/share/x-twitter-pp-cli/feedback.jsonl に保存されます。X_TWITTER_FEEDBACK_ENDPOINT が設定され、かつ --send が渡されるか X_TWITTER_FEEDBACK_AUTO_SEND=true が設定されていない限り、POST されることはありません。デフォルトの動作はローカルのみです。
バグ報告ではなく、意外に感じたことを書いてください。短く、具体的に、1 行で書きます。それが積み重なっていく要素です。
出力の送信先
すべてのコマンドで --deliver <sink> を指定できます。出力は stdout に加えて(または stdout の代わりに)指定した送信先に渡されるため、エージェントはコマンド結果を手動でパイプ処理せずに振り分けられます。次の 3 種類の送信先に対応しています:
| 送信先 | 動作 |
|---|---|
stdout | デフォルト。stdout のみに書き込みます |
file:<path> | <path> に出力をアトミックに書き込みます(一時ファイル + リネーム) |
webhook:<url> | 出力ボディを URL に POST します(--compact の場合は application/json または application/x-ndjson) |
不明なスキームは、対応しているスキームを示す構造化エラーとともに拒否されます。Webhook の失敗時は、非ゼロの終了コードを返し、URL と HTTP ステータスを stderr に記録します。
名前付きプロファイル
プロファイルは、保存したフラグ値のセットで、呼び出しをまたいで再利用できます。スケジュールされたエージェントが毎回同じ設定で同じコマンドを呼び出す場合に使用します。これは HeyGen の「Beacon」パターンです。
x-twitter-pp-cli profile save briefing --json
x-twitter-pp-cli --profile briefing communities search --query example-value
x-twitter-pp-cli profile list --json
x-twitter-pp-cli profile show briefing
x-twitter-pp-cli profile delete briefing --yes
明示的なフラグは常にプロファイルの値より優先され、プロファイルの値はデフォルト値より優先されます。agent-context は、選択されたストアのプロファイルを available_profiles に一覧表示します。デフォルトでは、保存されたプロファイルは --config で別の認証情報ファイルを選択した場合も、~/.x-twitter-pp-cli/profiles.json に保存されます。別のフラグプリセットを保存、一覧表示、適用、または検出する場合は、一貫して --profile-store <path> を渡してください。セレクターはプロファイルに保存できず、認証情報や SQLite ストアも変更しません。
非同期ジョブ
実行時間の長い処理を送信するエンドポイントでは、ジェネレーターが送信後にポーリングするパターン(レスポンス内の job_id/task_id/operation_id フィールドと、それに対応するステータスエンドポイント)を検出し、送信コマンドに3つの追加フラグを設定します。
| フラグ | 用途 |
|---|---|
--wait | ジョブIDをすぐに返す代わりに、ジョブが終端ステータスに達するまで待機します |
--wait-timeout | 待機時間の上限(デフォルトは10m、0はタイムアウトなし) |
--wait-interval | 初回のポーリング間隔(デフォルトは2s。指数バックオフで最大30sまで延長されます) |
結果を待たずに処理を送信する場合は --wait を付けず、完了した成果物を1つのコマンドで返す場合は --wait を使用してください。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用方法のエラー(引数が誤っています) |
| 3 | リソースが見つかりません |
| 4 | 認証が必要です |
| 5 | API エラー(上流の問題) |
| 7 | レート制限(待機して再試行してください) |
| 10 | 設定エラー |
引数の解析
$ARGUMENTS を解析します。
- 空、
help、または--help→x-twitter-pp-cli --helpの出力を表示します installで始まる場合 →mcpで終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照してください- それ以外 → 直接使用(
--agentを付けて CLI コマンドとして実行します)
MCP サーバーのインストール
- MCP サーバーをインストールします。
go install github.com/mvanhorn/printing-press-library/library/social-and-messaging/x-twitter/cmd/x-twitter-pp-mcp@latest - Claude Code に登録します。
claude mcp add x-twitter-pp-mcp -- x-twitter-pp-mcp - 確認します:
claude mcp list
直接使用
- インストールされているか確認します:
which x-twitter-pp-cli見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照してください)。 - ユーザーのクエリに最適なコマンドを、上記の固有の機能とコマンドリファレンスから選びます。
--agentフラグを付けて実行します。x-twitter-pp-cli <command> [subcommand] [args] --agent- 曖昧な場合は、サブコマンドのヘルプを確認します:
x-twitter-pp-cli <command> --help。