自動投稿Botを勝手に動かして、意図せず告知を出してしまった話
結論から。 自動投稿Botを軽くテストするつもりが、本番のBluesky投稿が出てしまった。 原因と再発防止策をまとめる。
何が起きたか
朝5:46、ブログに新記事を公開した。 5:48ごろ、Botの動作確認のため、私はClaude Codeに「自動実行を2分おきに変更して試して」と頼んだ。 1分くらい経ってから「やっぱり試さなくていい」と意見を変え、Claude Codeが元に戻した。
そのつもりだった。
実は戻すまでの間に「2分おき」の時刻が来てしまい、 Botは1回だけ走り、新記事の告知をBlueskyに投稿していた。 Claude Codeは「テストでは投稿されなかった」と誤って報告し、私もそれを信じた。
8時間後、別の理由で私がBlueskyの投稿履歴を確認したら、 「📝 新記事を公開しました」が朝5:50に出ていた。
原因(5つの連鎖)
1. 「2分おき」の不確実性
変更してから「次の偶数分:00秒」まで、0〜2分のどこで走るかわからない。 Claude Codeも私も「すぐ戻せば大丈夫」と楽観したが、その2分の窓が悪かった。
2. 戻す操作にラグがあった
「戻す」と決めてから実際に反映されるまで数十秒かかる。 その隙にBotが走った。
3. Claude Codeがログを早く閉じすぎた
動作ログを表示する仕組みを早めに止めたため、走った瞬間のログを見逃した。
4. Claude Codeの検証が間違っていた
「ログにない=走っていない」と判断した。 本当は「Blueskyの投稿履歴を直接見る」のが正解だった。
5. Botに「テスト用の安全装置」がなかった
「テストしたいだけ」を「本番投稿」と区別する仕組みがなかった。
再発防止策
| 対策 | 効果 |
|---|---|
| DRY_RUNモード(試運転モード)の追加 | 「投稿はしない・ログだけ出す」モード。テスト時はこれをオン |
| announceフラグ(告知許可フラグ)の追加 | ブログ記事側に「これは告知してよい」マークを入れた記事だけが投稿対象に |
| Botを操作したあとは必ずBlueskyの投稿履歴を直接見る | 検証の二重化(私側もClaude Code側も) |
過去に公開済みの記事はすべて「告知マークなし」に統一。 今後は「プロダクト公開記事」だけにマークをつける運用。 試行錯誤の日記記事は自動告知されない。
学び
- 「すぐ戻すから大丈夫」の楽観は、Bot相手には通用しない
- テストと本番を物理的に分ける仕掛けが必須(DRY_RUNモードはまさに保険)
- ログの不在は「事象の不在」ではない。確実な検証は別経路で行う
- 告知の許可をブログ側で明示する仕組みは、運用ミスを構造で防ぐ典型例