X.com (Twitter) — エージェントブラウザプレイブック
x.com 上の agent-browser 向けプラットフォーム固有の操作シーケンス。 各操作は、前提条件、ステップバイステップの agent-browser コマンド、検証方法、既知の落とし穴を文書化しています。
ステータス: すべてのセクション(1~7)をテストし、文書化済み。 テスト環境: agent-browser 0.24.0、ポート9222のChrome CDP、アカウント @mashijiann。 最終更新: 2026-05-06
目次
デバイスターゲット: デフォルトではデスクトップChromeに対して操作を実行します。 モバイルウェブ画面を操作するには、
.envファイルでDEVICE_PROFILE=ios|androidを設定するか、agent-browser コマンドの前に-p ios|androidを付けます。アクションをログに記録する際は、出典として--device <target>を渡します(重複排除には影響しません。いいねはアカウントレベルです)。
1. ブラウズと読み取り
1.1 ホームタイムラインを開く
目標: ホームタイムラインに移動し、読み込みが完了したことを確認する。
前提条件: ログイン済み(Cookie付きのChrome CDPセッション)。
手順:
agent-browser open https://x.com/home
検証:
# タイトルに「Home / X」が含まれていること
agent-browser get title
# URL が https://x.com/home であること
agent-browser get url
# スナップショットに「Your Home Timeline」リージョンと「For you」タブが表示されること
agent-browser snapshot -i -c -s '[role="region"]'
主要要素:
- ナビゲーションサイドバー:
navigation "Primary"— Home、Search and explore、Notifications、Direct Messages、Grok、Premium、Bookmarks、Profile へのリンクを含む - タイムラインタブ:
tab "For you"(デフォルトで選択)、tab "Following"、場合によりカスタムタブ - 作成エリア:
textbox "Post text"— ホームページ上のインライン作成 - アカウントボタン:
button "Account menu"— ログイン中のユーザー名を表示 - タイムラインリージョン:
region "Your Home Timeline"— ツイートarticle要素を含む
既知の問題:
- なし
1.2 特定のツイートをURLで開く
目標: ツイートに直接移動し、その内容を読む。
前提条件: ツイートのURL(例: https://x.com/user/status/123456)を用意する。
手順:
agent-browser open "https://x.com/<username>/status/<tweet_id>"
検証:
# タイトルに作成者の名前とツイート内容のプレビューが含まれていること
agent-browser get title
# URL がツイートURLと一致すること
agent-browser get url
# スナップショットにツイート記事が全文とエンゲージメントボタンとともに表示されること
agent-browser snapshot -i -c -s 'article'
主要要素(ツイート詳細ページ):
- ツイート記事:
article— 全文、作成者情報、エンゲージメント統計を含む - 作成者リンク:
link "<表示名> Verified account"、link "@<ユーザー名>" - タイムスタンプ:
link "<時間> · <日付>"(例:"2:30 PM · May 5, 2026") - 表示回数:
link "<N> Views" - エンゲージメントボタン:
button "N Reply. Reply"、button "N reposts. Repost"、button "N Likes. Like"、button "N Bookmarks. Bookmark"、button "Share post" - 購読ボタン:
button "Subscribe to @<ユーザー名>"
既知の問題:
- なし
1.3 キーワードでツイートを検索
目標: キーワードまたはクエリに一致するツイートを検索し、結果を読む。
前提条件: ログイン済み。
手順:
# 「トップ」結果の場合(デフォルト):
agent-browser open "https://x.com/search?q=<url_encoded_query>&src=typed_query"
# 「最新」結果の場合:
agent-browser open "https://x.com/search?q=<url_encoded_query>&src=typed_query&f=live"
# 「ユーザー」結果の場合:
agent-browser open "https://x.com/search?q=<url_encoded_query>&src=typed_query&f=user"
# 「メディア」結果の場合:
agent-browser open "https://x.com/search?q=<url_encoded_query>&src=typed_query&f=image"
検証:
# タイトルに「<query> - Search / X」が含まれていること
agent-browser get title
# アクティブなタブを確認
agent-browser snapshot -i -c -s '[role="tablist"]'
# 検索結果のツイートを読む
agent-browser snapshot -i -c -s 'article'
主要要素:
- 検索タブ:
tab "Top"、tab "Latest"、tab "People"、tab "Media"、tab "Lists" fURLパラメータでタブを制御: 省略 = Top、live= Latest、user= People、image= Media- 戻るボタン:
button "Back"— 前のページに戻る - 各結果はタイムラインツイートと同じ構造の
article要素
既知の問題:
- クエリ文字列をURLエンコードする(スペース→
%20など) - 認証されていないセッションでは「ログイン壁」が表示される可能性がある
- Xの高度な検索演算子が使用可能:
from:user、since:2026-01-01、min_faves:100など
1.4 ユーザープロフィールを表示
目標: ユーザーのプロフィールに移動し、自己紹介と複数の最近のツイートを読む。
前提条件: ユーザー名またはプロフィールURLを用意する。
手順:
# 1. プロフィールに移動
agent-browser open "https://x.com/<username>"
# 2. 初期スナップショット — 通常は固定ツイート(ある場合)のみ表示
agent-browser snapshot -i -c -s 'article'
# 警告: 最初の記事は通常固定ツイートであり、最新の投稿ではありません。
# 実際の最近の投稿を見るには、下にスクロールする必要があります。
# 3. 下にスクロールして最近の投稿を読み込む(固定ツイートとプロフィールヘッダーの先)
agent-browser scroll down 3000
agent-browser wait 2000
agent-browser snapshot -i -c -s 'article'
# これで最初の最近の(固定されていない)投稿が表示されるはずです
# 4. さらにスクロールして投稿を読み込み — 必要に応じて繰り返す
agent-browser scroll down 3000
agent-browser wait 2000
agent-browser snapshot -i -c -s 'article'
検証:
# タイトルに「<DisplayName> (@<username>) / X」が含まれていること
agent-browser get title
# URL が https://x.com/<username> であること
agent-browser get url
主要パターン — 複数の投稿を閲覧:
# ユーザープロフィールからN個の投稿を閲覧するには、このスクロールループを使用:
# 各スクロール+待機サイクルで、仮想リストのため約1件の新しい投稿が表示される
for i in $(seq 1 N); do
agent-browser scroll down 3000
sleep 2 # または: agent-browser wait 2000
agent-browser snapshot -i -c -s 'article'
# 表示されている記事を処理
done
既知の問題:
- 重要: 初期ページ表示は通常、固定ツイートのみを表示します。最近の投稿を見るには下にスクロールする必要があります。 エージェントは固定ツイートを唯一のコンテンツと誤認することがよくあります。
- Xは仮想化リストを使用しており、ビューポート内の1~2の記事のみがDOMに存在します。スクロールし過ぎた記事はDOMから削除されます。
- 3000pxのスクロール量+2秒の待機で、確実に次のバッチが読み込まれます
- 固定ツイートには記事の説明の先頭にテキスト
"Pinned"があります — これを使用して識別しスキップします - プロフィールにはタブがあります: Posts、Replies、Highlights、Media、Likes — デフォルトは「Posts」で返信は除外されます。投稿+返信の場合は
https://x.com/<username>/with_repliesを使用します。
1.5 ツイートスレッド/返信を読む
目標: ツイートを開き、完全なスレッドとその下の返信を読む。
前提条件: ツイートのURLを用意する。
手順:
# 1. ツイートを開く
agent-browser open "https://x.com/<username>/status/<tweet_id>"
# 2. 下にスクロールして返信を読み込む
agent-browser scroll down 800
# 3. 返信を読む(メインツイートの下に追加のarticle要素として表示される)
agent-browser snapshot -i -c -s 'article'
検証:
# 複数のarticle要素が存在するはず — 最初がメインツイート、残りが返信
agent-browser snapshot -i -c -s 'article'
既知の問題:
- 返信はページ分割される場合がある —
button "Show more replies"を探してクリックする - 「Show probably spam」セクションが表示される場合がある — スキップする
- スレッドコンテキスト(親ツイート)はメインツイートの上に表示される
- 引用ツイートクリックトラップ: 返信またはタイムラインエントリが引用ツイートの場合、記事本文をクリックすると、引用ツイートの詳細ページではなく引用元の元の投稿に移動します。正しいツイートに移動するには、代わりにタイムスタンプリンクをクリックしてください。詳細はセクション3.4の既知の問題を参照。
1.6 通知を読む
目標: 通知タブを開き、最近の通知を読む。
前提条件: ログイン済み。
手順:
agent-browser open https://x.com/notifications
検証:
# タイトルに「Notifications / X」が含まれていること
agent-browser get title
# URL が https://x.com/notifications であること
agent-browser get url
主要要素:
- 通知タブ: All、Verified、Mentions
- サイドバーリンクに未読数が表示される:
link "Notifications (N unread notifications)"
既知の問題:
- 通知にはサブタブあり: All、Verified、Mentions
1.7 DM(ダイレクトメッセージ)を読む
目標: DMを開き、最近のメッセージを読む。
前提条件: ログイン済み。
手順:
# 注意: /messages は /i/chat にリダイレクトされる
agent-browser open https://x.com/messages
検証:
# URL は https://x.com/i/chat になる(自動リダイレクト)
agent-browser get url
既知の問題:
- URL が
/messagesから/i/chatにリダイレクトされる - DM UIはビューポートに応じてサイドパネルまたは全画面になる
- 一部のDM機能にはX Premiumが必要な場合がある
2. エンゲージメント — コンテンツへの反応
2.1 ツイートにいいね
目標: 特定のツイートにいいねをする。
前提条件: ツイートが表示されているページ上(タイムライン、ツイート詳細、検索結果)。
手順:
# 1. スナップショットで対象ツイートのいいねボタンを見つける
agent-browser snapshot -i -c -s 'article'
# 探すもの: 対象記事内の button "N Likes. Like"(まだいいねしていない)
# 2. いいねボタンをクリック
agent-browser click <like_button_ref>
検証:
# 再度スナップショット — ボタンテキストが「Like」から「Liked」に変わること
agent-browser snapshot -i -c -s 'article'
# 探すもの: button "N Likes. Liked"
要素の識別:
- いいねしていない:
button "N Likes. Like"— テキストが. Likeで終わる - 既にいいね済み:
button "N Likes. Liked"— テキストが. Likedで終わる - いいね数Nはいいね後に1増加する
既知の問題:
- レート制限: Xは急ないいねを制限する可能性がある
- 状態変更後、ボタン参照が変わる場合がある(新しい参照を取得するために再スナップショット)
2.2 いいねを解除
目標: 以前いいねしたツイートからいいねを削除する。
前提条件: ツイートが既にいいね済みであること。
手順:
# 1. スナップショットでLikedボタンを見つける
agent-browser snapshot -i -c -s 'article'
# 探すもの: button "N Likes. Liked"
# 2. 同じボタンをクリックしていいねを解除
agent-browser click <liked_button_ref>
検証:
# ボタンテキストが「Liked」から「Like」に戻ること
agent-browser snapshot -i -c -s 'article'
# 探すもの: button "N Likes. Like"
要素の識別:
- 同じボタンがLike/Liked状態を切り替える
- 状態間で参照が変わる場合がある — 常に再スナップショットする
既知の問題:
- なし
2.3 リツイート(リポスト)
目標: ツイートを自分のタイムラインにリポストする。
前提条件: ツイートが表示されているページ上。
手順:
# 1. スナップショットでリポストボタンを見つける
agent-browser snapshot -i -c -s 'article'
# 探すもの: button "N reposts. Repost" [expanded=false]
# 2. リポストボタンをクリック — これによりアクション自体ではなくドロップダウンメニューが開く
agent-browser click <repost_button_ref>
# 3. スナップショットでドロップダウンメニュー項目を確認
agent-browser snapshot -i -c -s '[role="menuitem"]'
# 表示されるもの: menuitem "Repost" と menuitem "Quote"
# 4. 「Repost」メニュー項目をクリックしてリポストを実行
agent-browser click <repost_menuitem_ref>
検証:
# スナップショット — ボタンテキストが「Repost」から「Reposted」に変わること
agent-browser snapshot -i -c -s 'article'
要素の識別:
- リポストボタン:
button "N reposts. Repost" [expanded=false] - ドロップダウン項目:
menuitem "Repost"とmenuitem "Quote" - リポスト後: ボタンは
button "N reposts. Reposted"になる
既知の問題:
- 2ステップ操作: ボタンをクリックするとドロップダウンが開き、その後メニュー項目をクリックする必要がある
- アクションせずにドロップダウンをキャンセル/閉じるには:
…[翻訳のため省略]