
検索だけに頼っていると、Googleのアルゴリズムが一度揺れただけで流入が吹き飛びます。だから早い段階でSNSからの入口も作りたい——そう思ってX(旧Twitter)とThreadsの自動投稿に手をつけました。ところが、これがブログ本体の自動化よりずっと神経を使う作業でした。特にXは「投稿するたびにお金がかかる」という、記事生成とはまったく毛色の違う問題と向き合うことになります。この章では、そのX編をお届けします。
なぜSNSを2つの章に分けるのか
はじめは「SNS編」を1本にまとめるつもりでした。でも書き始めてすぐ、XとThreadsは技術的な性質がまるで違うと気づきます。
Xで一番の論点は「課金の判断」です。 後述しますが、Xは投稿するAPIが従量課金で、しかも投稿の種類によって単価が10倍以上変わります。だから「何を自動で、何を手動で流すか」をお金の観点で線引きする必要がありました。
一方のThreadsは投稿自体は無料で、代わりに「トークン管理」が主題になります。長期トークンの期限をどう切らさずに回すか、という別種の悩みです。狙う検索キーワードも違えば、注意点も違う。1本に押し込むと分量が多すぎて、どちらの話も中途半端になる——そう判断して、この章はX編に絞りました。Threads編は次章で扱います。
Xの雑学ポストを自動化する
Xで自動投稿しているのは、リンクを貼らない「雑学ひとネタ」の短文です。「へぇ」と思ってもらえる小ネタを1日数本、淡々と流していく運用です。
仕組みそのものはブログ本体と同じ発想で組みました。あらかじめ投稿ネタを"ストック"として溜めておき、定期実行のたびに未投稿のネタを1件取り出して投稿し、投稿済みに印をつける。 ブログの記事ネタ帳とまったく同じ考え方です。
ネタが尽きたら投稿できないので、在庫が一定数を下回ったら自動でAIに補充させるようにしています。ここで一つ工夫したのは、補充スクリプトが二重に立ち上がらないよう「鍵」をかけたことです。定期実行と手動実行がたまたま重なると、同じ補充が二回走って在庫が荒れます。実行中は鍵ファイルを置き、別のプロセスが来たら待つ——地味ですが、無人で回す以上ここを雑にすると後で必ず事故ります。
神経を使った「安全策5種」
SNSの自動投稿でいちばん怖いのは、気づかないうちに変な投稿を連発することと、気づかないうちに課金が膨らむことです。ブログの下書きなら公開前に気づけますが、SNSは出た瞬間に世界に出ます。そこで、投稿を実際に飛ばす前に何重ものブレーキをかけました。
- 1日の上限:1日に投稿できる本数に上限を設けています。何かが暴走しても、その日の被害はこの本数で頭打ちになります。
- 1ヶ月の上限:月単位でも上限を持たせています。日次の上限をすり抜けるような事態でも、月のトータルで歯止めがかかります。
- 投稿間隔のガード:直前の投稿から一定時間(30分)が経っていないと、次を投稿しません。定期実行が誤って連続で走っても、二重投稿を自動で見送ります。
- 緊急停止スイッチ:環境変数を1つ立てるだけで、本番投稿をすべて「投稿せず内容を表示するだけ(dry-run)」に固定できます。「今日はちょっと止めておきたい」というとき、コードを触らずに一発で全停止できる非常ブレーキです。開発中のテストも、この"投稿せず中身だけ見る"モードで全部確認しました。
- 在庫の自動補充:前述のとおり、ネタ切れを検知して自動で補充します。空っぽのまま定期実行が空振りし続けるのを防ぐ、いわば燃料切れ対策です。
これらは「どれか一つでも作動したら、その回は安全側(投稿しない・止まる)に倒れる」設計にしています。自動化は、うまく動かすことより暴走したときに被害を最小化することのほうがずっと大事だ、というのがブログ本体の構築で得た教訓でした。SNSでもその原則をそのまま持ち込んでいます。
「雑学は自動・記事紹介は手動」——お金で線を引いた
ここがX編の核心です。私はXの投稿を、雑学ポストは自動/記事の紹介(リンク付き投稿)は手動、ときっぱり分けています。同じXへの投稿なのに、なぜ分けるのか。理由はお金です。
Xの投稿APIは2026年2月に無料枠が廃止され、従量課金に一本化されました。 そして単価が投稿の種類で大きく変わります。公式ドキュメントで確認したところ、リンクを貼らない投稿は1件あたり約$0.015、リンク付きの投稿は約$0.20。実に13倍の差です。
つまり、リンクなしの雑学ポストは大量に流してもごくわずかなコストで済みますが、記事URLを貼る「記事紹介」は、同じ感覚で自動連投すると一気にコストが膨らみます。だから、
- 安くて量を出したい雑学ポスト → 自動化して淡々と流す
- 単価が高く、内容も吟味したい記事紹介 → 人間が手動で、狙って投稿する
という分担にしました。おまけに、この分担には「自動投稿の口からは、単価の高いリンク付き投稿が絶対に出ないようにする」という安全弁の意味もあります。自動投稿の仕組みは、リンク付きモードを指定されても受け付けずにエラーで弾くようにしてあります。うっかり設定を間違えても、高い方の投稿が自動で流れることはない——課金事故を構造的に防ぐ作りです。
ちなみに、Xで紹介するのは雑学系の記事だけと決めています。運営ノウハウや月次報告のような"内輪向け"の記事は、Xの世界観に合わないのでこちらには流しません。ノウハウ系やnoteへの導線は、次章のThreadsが担当します。
定期実行の仕組み
自動投稿は、Macの常駐の仕組み(LaunchAgent)を使って1日に決まった時刻へ分散して走らせています。現在は1日7回、朝から夜まで時間帯をばらして投稿しています。
当初は1日4本から始め、運用が安定してきたところで7本に増やしました。時刻をわざと不均等にばらしているのには理由があって、きっちり等間隔で機械的に投稿すると"botっぽさ"が出てしまうからです。ハッシュタグも、決め打ちにせず用意したいくつかの中からランダムで選ぶようにして、毎回まったく同じ体裁にならないようにしています。地味な配慮ですが、SNSでは「自動なのが露骨に見えない」ことも一つの品質だと考えています。
投稿間隔は、先ほどの「30分間隔ガード」を必ず超えるように時刻を組んであります。だから7回のスロットが自分自身のブレーキに引っかかって空振りする、という間抜けな事態は起きません。
実際につまずいたこと
きれいに一直線で進んだわけではありません。むしろ回り道の連続でした。
いちばんの誤算は、Xの有料化そのものでした。 実装を終えて「さあ本番投稿だ」という段になって、投稿APIが「支払いが必要(402 Payment Required)」で弾かれたのです。無料枠が廃止され、残高ゼロのアプリでは1件も投稿できなくなっていました。最初のトリビア投稿が、この壁でそのまま失敗したのを今でも覚えています。
そこで一度、「Xは完全手動運用」に切り替えました。 AIにはネタの生成だけをさせ、できた文面を自分の手でXに貼る、という割り切りです。課金ゼロで、実装済みの安全策やネタ生成はそのまま活かせる——「無理に全自動にこだわらず、コストが見合う部分だけ自動化する」というのは、この一件で得た感覚です。
その後、単価の安いリンクなし投稿(雑学ポスト)に限れば、コストが十分小さいと見極めがついたので、雑学ポストだけを本番の自動投稿に復帰させました。今の「雑学は自動・記事紹介は手動」という形は、この試行錯誤の結論です。最初から狙って設計したというより、課金という現実に何度かぶつかって、落ち着いた線引きでした。
まとめ——Threadsはまるで別物
X編の要点は、突きつめると一つです。「自動化の判断は、技術だけでなくお金で決まることがある」。 Xは投稿するたびにコストが乗るからこそ、何を自動で流し、何を人間が手動で吟味するかを、単価をものさしに線引きしました。安全策も、暴走と課金の両方を止めることを最優先に組んでいます。
次章のThreadsは、この課金の話がまるごと消えます。Threadsは投稿自体が無料だからです。その代わり、投稿の作り方が二段構えだったり、長期トークンの期限を切らさない管理が必要だったりと、Xとは別種の"つまずきどころ"が待っていました。X編で触れた安全策の考え方は流用しつつ、Threadsならではの実装を【SNS編②】(Threads)で書きました。
実際に動いているXアカウントはこちらです。毎日、雑学が自動で投稿されています。この記事で説明した仕組みの"実物"として、のぞいてみてください。https://x.com/Trivipedia_X
連載のはじまりはこちらの序章からどうぞ。ブログ本体をどうやって全自動で回しているか、という全体像から追えます。
なお、この仕組みを「AIに丸投げ・コピペ」でそのまま再現できるファイル集(指示書・スクリプト・設定の一式)を公開しました。あなたが選んだテーマで、同じ仕組みを動かせます。→ AIブログ自動化キットを見る(note)