ブログ記事に合わせたX投稿を自動スケジュールする仕組みをClaude Codeで作った

ブログ記事に合わせたX投稿を自動スケジュールする仕組みをClaude Codeで作った

前回の記事で、記事公開と同時にX投稿文が3案生成される仕組みができた。

今回はその先——「いつ投稿するか」まで自動化した話。

課題:書いた勢いで投稿してしまう

記事を書いてすぐXに投稿すると、深夜になることが多い。深夜のポストはインプレッションが伸びにくい。

かといって「あとで投稿しよう」と思うと、そのまま忘れる。

分散投稿もしたい。記事1本から複数の切り口でツイートを作って、数日かけて出していく方が記事の寿命が伸びる。でも手動でやるのは面倒で続かない。

まず投稿案を複数作った

今回の記事に合わせて、5つの切り口で投稿案を作った。

  • ワークフロー紹介(publishコマンド1つで何ができるか)
  • コスト比較(AI画像生成モデルの価格差)
  • 哲学的気づき(自動化とブランドらしさ)
  • 自動化ストーリー(全体の流れ)
  • 次のステップ(課題と展望)

同じ記事でも切り口が変わると、刺さる人が変わる。テック寄りの人にはコスト比較が響くし、個人開発の雰囲気が好きな人には哲学系が刺さる。

Claude Codeのスケジューラーで設定した

投稿案が決まったら、Claude Codeのcronスケジューラーで日時を設定した。

3/24 8:03  → publishワークフロー紹介
3/24 20:07 → AI画像コスト比較
3/25 12:13 → 自動化とブランドの哲学
3/26 8:17  → 自動化ストーリー

ただ、ここで問題があった。

セッション依存という罠

Claude Codeのcronはセッション限定。つまり、Claude Codeを閉じると消える。

3日間ウィンドウを開けっ放しにするのは現実的ではない。

解決策として、システムのcrontabを使うことにした。macOSに標準で入っているジョブスケジューラーで、PCが起動している限り動き続ける。

仕組みはシンプルで:

  1. scheduled-posts.json に投稿予定リストを保存
  2. run-scheduled-posts.js が時間をチェックして投稿
  3. crontabが5分ごとにスクリプトを呼び出す
{
  "id": "2026-03-24-D",
  "scheduledAt": "2026-03-24T08:03:00",
  "text": "publishコマンド1つでここまで自動化できた...",
  "posted": false
}

投稿が完了すると posted: true に更新されるので、同じ投稿が二度出ることもない。

実際の動き

crontabに登録したコマンドはこれだけ。

*/5 * * * * cd /Users/harukichi/SlothfulDevLog && node scripts/run-scheduled-posts.js >> /tmp/scheduled-posts.log 2>&1

5分ごとに scheduled-posts.json を読んで、時間が来ていて未投稿のものをX APIで投稿する。ログは /tmp/scheduled-posts.log に残るので、投稿されたかどうかも確認できる。

今の自動化の全体像

ここまでで、ブログ運用の自動化がかなり進んだ。

Obsidianのメモ
  ↓ /from-obsidian
記事に整形 → サムネイル生成 → git push(Vercelで自動デプロイ)

X投稿文を5案生成

scheduled-posts.json に保存
  ↓ crontab(5分ごと)
指定の日時にX投稿

手でやっていた作業が、ほぼなくなった。

残っている課題

Mac がスリープ中は動かない。外出中やPCを閉じているときは投稿されない。これを解決するには GitHub Actions やVPSなどサーバー側に移す必要がある。

ただ、自宅でMacを常時起動している環境なら今の仕組みで十分。まずはこれで運用してみる。

完璧より完了、の精神で。

#ClaudeCode#Vibecoding#X#自動化#crontab#ブログ