AIエージェントで朝7時に自動投稿する方法|launchd×ClaudeCodeで安定稼働させた話

AI活用

朝7時に、誰も操作しなくても記事が公開されている。
そんな状態を作るまでに、いくつものテストと修正を繰り返してきた。
最初から一発で動いたわけではなく、
スケジューラーの設定が意図した通りになっていなかった日もあれば、
inboxにファイルを入れ忘れてエージェントが空振りした日もある。

テストするたびに気づきが増えて、少しずつ仕組みが育っていった。
「完璧な状態にしてから動かす」ではなく、
「動かしながら完成に近づける」という考え方に切り替えてから、
試行錯誤が苦にならなくなった。

この記事では、朝7時台の自動投稿を安定させるために実際にやってきたことと、
その過程でわかったことを記録しておく。
設定の細かい技術的な話より、
「仕組みを育てる感覚」の話を中心に書きたいと思っている。

なぜ「朝7時」にこだわるのか

自動投稿の時間を朝7時台に設定したのは、
読者の行動パターンを意識したからだ。

ブログやSNSの閲覧は、通勤・通学の時間帯に集中しやすい。
朝7時前後はスマートフォンを開く人が多く、
記事が目に入りやすいタイミングになる。
夜に投稿するより、翌朝に読まれる確率が高いという仮説を持ちながら、
この時間帯を選んだ。

毎朝7時に手動で投稿しようとすると、
前日から記事を準備して、当日も早起きして確認して、
ボタンを押す作業が必要になる。
それができる日はいいが、できない日が続くと更新が止まる。
自動化することで、7時という時間を毎日維持できる。

起きたときには記事が公開されている状態。
そのイメージを持ちながら、launchdの設定を組み立てていった。

「一度で完成」を諦めることから始まった

最初に誤解していたのは、
「自動化は設定したら終わり」という認識だった。

実際に動かしてみると、思った通りには動かないことがある。
ログを確認すると「処理対象がありません」と出ていたり、
スケジューラーが想定した時刻に起動しなかったりする。
「なぜ動かなかったのか」を追いかけながら、設定ファイルを見直して修正する。

このサイクルを何度か繰り返してようやく、仕組みが安定してくる。
完璧な設計を最初から求めるより、まず動かしてみて改善を重ねるほうが、
ずっと早く安定に近づけるということを、実体験として学んだ。

自動化が「完成品」であることより「動き続けること」のほうが大事だ。
そのスタンスに切り替えた日から、テストが楽しくなった。
「うまくいかなかった」ではなく「次に直すポイントが見つかった」という感覚に変わる。

launchdとClaudeCodeで何をしているか

使っているのは、macOSに標準で入っているジョブスケジューラーのlaunchdと、
AIエージェントのClaudeCodeを組み合わせた仕組みだ。

launchdには「毎朝7時10分にこのシェルスクリプトを実行してくれ」という指示を
設定ファイル(plist)に書いておく。
シェルスクリプトはClaudeCodeを呼び出して、
inboxフォルダにある記事テーマファイルを処理させる。

ClaudeCodeはそのテーマをもとに、
WordPressの本文・アイキャッチ画像・note記事・SNS文面を生成して、
それぞれの媒体へ投稿する。
この一連の流れが7時台に自動で動くことで、
起きた時点で「もう記事が公開されている」状態が作れる。

仕組み自体の構造はシンプルだ。
難しいのは、この流れを安定して動かし続けることにある。
そのために何を確認し、どう修正してきたかを次に書く。

安定稼働のために繰り返したこと

テストを重ねる中で、気づきがいくつかあった。

時刻の設定を必ず目で確認する

launchdの設定ファイルでは、実行する時・分を整数で指定する。
記述ミスがあっても、launchdはエラーを出さずに動き続ける。
「設定したつもり」と「実際に設定されている」が一致しているかを、
launchctl printコマンドで必ず確認する習慣が大切になった。
意図した時刻になっているかを目で確かめることで、
「なんで動かなかったんだろう」という謎が大幅に減った。

ログがあれば原因を追える

自動化の安心感は、ログの充実度に比例する。
エージェントが何時に起動して、何を処理して、どこで止まったか。
それがテキストで残っていれば、朝起きてすぐに確認できる。
エラーが出ても「何が起きたか」がわかる状態は、
「動いたかどうかわからない」状態より圧倒的に安心だ。
ログを整備することが、安定稼働の土台になると気づいた。

inboxへの準備が自動化の前提になる

エージェントはinboxにファイルがあることを前提に動く。
ファイルがなければ「処理対象なし」で正常終了する。
だから前日の夜に、翌朝分のテーマファイルをinboxに入れておく習慣が必要だ。
自動化は習慣の上に成り立つということを、実感している。
エージェントに任せる部分と、自分が用意する部分の役割分担が大事だ。

複数のジョブが競合しないよう管理する

スケジューラーで複数のジョブを動かすとき、
同じ時刻や同じファイルに対して複数が動くと競合することがある。
例えば下書き生成ジョブと公開ジョブが同時に走ると、
意図しない二重処理が起きる可能性がある。
今は用途ごとにジョブを分けて、時刻が重ならないよう管理している。
このような細かい設計が、長期的な安定稼働につながる。

「朝から追われない」状態を作るメリット

手動で毎朝投稿していたころは、
「今日も書かないといけない」というプレッシャーが朝からあった。

記事を書いて、画像を作って、各媒体に投稿する。
その作業を本業の前にこなそうとすると、気持ちに余裕がなくなる。
忙しい日は更新が止まり、止まると罪悪感が生まれる。
その繰り返しで、ブログの更新が何度か途絶えた経験がある。

自動化してからは、朝の気持ちが変わった。
起きてやることは「ログを見る」だけでいい。
正常に動いていれば、そのまま本業の準備に向かえる。
追われている感覚がない朝は、それだけで頭がクリアになる。

「発信を続けること」の前提が変わった感覚がある。
気合いで続けるのではなく、仕組みが続けてくれる。
自分がやるのは、良いテーマを用意しておくことだけでいい。
そのシンプルさが、発信を長続きさせる鍵だと感じている。
手動でやっていたころには想像できなかった朝の風景が、
少しずつ現実になってきている。

まとめ:動かしながら完成に近づける

自動投稿の仕組みは、一度で完成するものではない。
テストして気づいて直して、また動かす。
その繰り返しの中で、少しずつ安定していく。

完璧な設定を最初から目指すより、
「今日動かせる状態」を作ってから改善を重ねる。
このスタンスが、仕組みを育てるうえで一番大切だと感じている。
うまくいかなかった日も、次の改善材料になると思えれば怖くない。

朝7時に誰も操作しなくても記事が公開される。
その状態を当たり前にしていく過程に、今いる。
テストのたびに仕組みは強くなり、
積み重ねが「信頼できる自動化」に変わっていく。

朝から発信作業に追われない時間を、少しずつ手に入れている。
その先に、本当に書きたいことに集中できる環境が待っている。
そのために、今日もテストを続けていく。

コメント