# instinct: X(@GokouMutsumi)で多数フォローする時はfriendships/create APIを60〜120秒間隔で。15〜40秒は429になる

@GokouMutsumi の実アカウントで生成AIアカウントを大量フォローする運用がある(タイムライン充実化)。フォローは `~/.vvv-bots/follow_runner.py` が `~/.vvv-bots/x_cookies.json`(auth_token/ct0)で REST `1.1/friendships/create.json` を叩いて実行する。収集側は gokou_timeline bot(group_id=315)が @GokouMutsumi のホームタイムラインを3段フィルタで取り込む。

**Why:** 2026-06-04 に前回フォロー残り56名を実行。15〜40秒間隔だと **14名でHTTP 429 (Rate limit exceeded, code 88)** に到達して停止した。間隔を **60〜120秒** に広げたら **40名連続で429ゼロ**・全成功した。

**How to apply:**
- 大量フォローは `follow_runner.py --file --min-wait 60 --max-wait 120` で実行(バックグラウンド推奨・40名で約70〜90分)
- 429/401/403検知時はスクリプトが自動停止する設計。停止したらレート回復を数時間待って残りリストで再開
- 成功履歴は `~/.vvv-bots/follow_done.log`(tab区切り name/OK or NG/msg)。残りリストは「全候補 - follow_done.logのOK分」で再構築する
- Discord通知は `DISCORD_WEBHOOK_OPS`(vvv-bots/.env)。**embedのusername上書きは403になる**ので `content` 形式のシンプルなJSONで送る
- Cookieは2週間程度なら有効だった。失効時は実ブラウザから auth_token/ct0 を再取得して x_cookies.json を更新

関連: [[project_supergrok_cancelled]]
- レート制限回避の横串(外部サービス一括操作は十分な間隔を空ける): YouTube購読の事前テスト(#27 `instinct_2026-06-05_2`)・YouTube購読の30〜60秒間隔+JS判定(#29 `instinct_2026-06-05_4`)。共通教訓=一括操作は数十秒〜分の間隔・間隔不足はbot検知/429。

**追記 (2026-06-05):** `run_in_background:true` のBashツールでスクリプトを起動する時、コマンド末尾に `&` を付けてはいけない。`python3 follow_runner.py ... &` のように二重指定すると、ループ処理(sleepを挟む反復)が1件目実行直後にプロセスごと中断され、残りが実行されない(perplexity_ai 1件で止まった)。`run_in_background:true` を使うなら `&` は不要。この日フォロー100名達成。

---
(migrated from local memory/instinct_x_follow_rate_limit.md)