X(Twitter)でVNC/Playwright経由で「フォロー」操作する時、**クリック前に必ずボタンのテキストが「フォロー」か「フォロー中(Following)」かを判別する**。既フォロー者のボタン(=「フォロー中」)を押すと**フォロー解除の確認ダイアログ**が出る。誤って確定すると大事故。出たら即 **Escape でキャンセル**(解除は実行されない)。
**2026-06-14 実際に起きたヒヤリ**: @AnthropicAI のプロフィールでフォローボタンと思ってクリック→「@AnthropicAIさんをフォロー解除しますか?」ダイアログが出た。Escapeで事なきを得た。お姉様(@GokouMutsumi)は主要な有益アカウントを**既にフォロー済み**だった。
**根本の盲点**: お気に入り(x-favorites)の高頻度投稿者は「既にフォローしている人の投稿を保存している」ものなので、**お気に入り頻度=フォロー推奨候補にはならない**(大半が既フォロー)。フォローすべきは「有益だがまだ未フォロー」のアカウント。
**安全なフォロー判定手順**:
1. プロフィールを開く
2. アクションボタンのテキストを画像/DOMで確認: 「フォロー」=未フォロー(クリックOK) / 「フォロー中」=既フォロー(触らない)
3. 未フォローの時だけクリック→「フォローしました」を確認
4. Playwright実装なら `[data-testid$="-follow"]`=未フォロー / `[data-testid$="-unfollow"]`=既フォロー で確実に判別できる(画像認識より堅い)
VNC座標クリックは「フォロー中」と「フォロー」が同じ位置に出るため誤爆しやすい。**Playwrightのdata-testid判定が安全**(ただし書込cookieが必要)。
## 2026-06-14 実証: VNCの生きたChromeで安全に自動フォローできた手順
保存cookieは全失効でも、**VNC上で起動中の通常Chrome(@GokouMutsumi ログイン維持)はフォロー操作の書込認証が生きている**。xdotool で直接操作してフォローできた(実証: @tonkotsuboy_com/@MaryamMiradi/@tom_doerr/@avthar 等)。
**確立した安全フロー(誤爆ゼロ)**:
1. `xdotool key ctrl+l` → `type x.com/
2. **`wmctrl -l` のウィンドウタイトルにhandleが含まれるか確認**(画面遷移ずれ検知。これを怠ると別アカウントをクリックする事故が起きた)
3. プロフィール本体アクションボタン(VNC 1440x900で **x≈830-875, y≈408-425**)の**平均明度を測る**:
- **明度<200(≈144) = 黒塗り「フォロー」ボタン = 未フォロー** → クリックOK
- **明度>240(≈247-251) = 白枠「フォロー中」 = 既フォロー** → 絶対に触らない(解除事故)
4. 未フォローのみ `xdotool mousemove 855 415; click 1`
5. **検証**: クリック後に明度が 144→251 に上がり、ボタン左に**🔔ベルと👤✓(フォロー中)アイコンが新出現**すれば成功。ベル/👤✓の有無は明度より確実な判別軸
6. レート制限: 各フォロー間 60-110秒ランダム待機([[instinct-x-follow-rate-limit]])。長sleepはフォアグラウンド禁止→`run_in_background`でバッチ化
**OCR(tesseract)は使うな**: 「フォロー中」の「中」を読み落とし `not_following` と誤判定し解除事故寸前になった(実測)。明度+アイコン目視が正解。
**お姉様は主要有益アカウントを既にフォロー済み**: お気に入り高頻度・grok推奨の日本語インフルエンサー(@AnthropicAI/@sora19ai/@piske_cc/@sumika45379/@AI_masaou/@commte等)は軒並み既フォロー。**未フォローの有益候補は英語圏のMCP開発者・実務者**(@tom_doerr/@avthar/@MaryamMiradi等)に多い。
関連: [[instinct-x-auto-follow-unavailable]](←この知見で「不可」から「VNC経由で可」に更新) / [[instinct-x-follow-rate-limit]] / フォロー実行ツール `~/.claude/tools/x-follow/follow.py`(Playwright版・書込cookie要)
---
(migrated from local memory/instinct_x_follow_unfollow_misclick.md)