ブログを公開したら、SNSにもシェアしたい。でも毎回手作業でポストを書いて投稿するのは面倒だし、忘れてしまうこともある。今回は、そんな手間をなくすために、記事が公開されたら自動的にXに投稿する仕組みと、TikTokのフォトモード用に専用のカード画像を生成してキューに貯めておく機能を追加しました。
もともとこのブログは、毎日の金融ニュースや週末のまとめ記事を自動で作成・公開していますが、今回はさらに「SNSへの拡散」まで自動化した形です。実装の途中でいくつかのトラブルにも遭遇したので、それらの対処法も含めてまとめておきます。
この記事のポイント
- 記事公開後、自動でXに投稿する仕組みを追加し毎時チェックで運用開始
- アイキャッチ画像アップロード失敗時に自動リトライする機構を実装
- TikTok投稿用のカード画像生成とキューイング、投稿スクリプトまで整備
公開済み記事をXに自動投稿する仕組みを追加

まず取り組んだのは、WordPressで公開した記事を1時間おきに確認して、まだXに投稿していないものがあれば自動でポストする機能です。ブログの管理画面から「公開済み」のステータスになっている記事だけを拾ってきて、Claude Codeに短い紹介文を書いてもらい、X側に投稿します。
仕組みとしては、すでに投稿したことがある記事かどうかを記録しておくリスト(JSONファイル)を用意して、そこに載っていない記事だけを対象にする形です。これで同じ記事を何度もポストしてしまう心配がなくなりました。XへのポストにはOAuth 1.0aという認証方式を使っており、専用のライブラリを組み合わせることで、毎時自動実行するワークフローの中で動かしています。
アイキャッチ画像が失敗したときの自動リトライを実装

記事を公開する際、アイキャッチ画像をWordPressにアップロードするのですが、たまにレンタルサーバー側のセキュリティ機能(WAF)が誤検知して、アップロードが弾かれてしまうことがあります。これまでは失敗したら手動で対処するしかなかったのですが、今回は「失敗したものを保留リストに記録しておいて、次の投稿時や専用の10分おきチェックで自動的に再試行する」仕組みを追加しました。
保留リストに載せた画像は、時間を空けてから改めてアップロードを試みます。一時的なエラーであれば、何度か試すうちに成功することが多いので、手を離していても勝手にリカバリしてくれるのは楽ですね。
TikTok用のカード画像生成とキューイング機能を追加

次に取り組んだのが、TikTokのフォトモード向けに専用のカード画像を自動生成する機能です。日次ニュースや週末まとめ記事が公開されたタイミングで、記事の要点を箇条書きにして文字入りの画像を作り、記事へのQRコードと短縮URLも一緒に貼り付けます。この画像をWordPressにアップロードし、TikTok投稿用のキューに保存しておく形にしました。
ただし、TikTok側のAPIを使って実際に投稿する部分はまだ別の準備が必要(Developerアプリの申請やOAuth認証など)なので、今回はそこまではやっていません。とりあえず画像を作ってキューに貯めておく段階まで実装し、あとは認証が通ったら投稿スクリプトを動かせるようにしておきました。
画像レイアウトの調整:TikTokのUIと被らないように
実際にカード画像を作ってみたところ、TikTokの画面でいいねボタンやコメント欄のアイコンと重なってしまい、肝心の文字が隠れて読めない問題が発生しました。そこで、右側200ピクセル・下部380ピクセルを常に空けるセーフゾーンを設けて、その内側に指数表示やQRコード、URLのフッター部分を収めるようレイアウトを調整しました。これでTikTokの投稿画面でも見やすくなるはずです。
存在しないファイルへのgit addで失敗する不具合を修正

アイキャッチ画像の保留リストやTikTok投稿のキューファイルは、実際に失敗やキューイングが発生したときに初めて作られる仕組みです。ところが、ワークフローの中で「このファイルを記録に残す(git add)」という処理を無条件に実行していたため、まだファイルが存在しない状態だとエラーになってしまう問題がありました。
10分おきに動く画像リトライ用のワークフローが、ファイルが存在しないたびに失敗通知メールを送ってくるようになってしまい、少し煩わしかったので、ファイルが実際に存在するか確認してから記録する処理に修正しました。これで無駄な失敗通知が届かなくなりました。
TikTok自動投稿スクリプトとワークフローを追加

カード画像の生成が安定してきたので、実際にTikTokへ投稿するスクリプトも作りました。キューに貯めておいたカード画像を、TikTokのContent Posting API(フォトモード)で非公開投稿する仕組みです。投稿後は自動的にキューから消えるようにしています。
TikTokのAPIは、アクセストークンを定期的に更新(ローテーション)する必要があるのですが、その作業もGitHub側の設定(Actions Secrets)に自動で書き戻すようにして、手動メンテナンスが不要になりました。これでTikTok投稿も放置しておけるようになります。
開発ログの文体を親しみやすいトーンに調整

これまで開発ログは、やや説明的で硬い文章になりがちでした。技術的な用語をそのまま使っていたこともあり、読む人によっては取っつきにくかったかもしれません。そこで今回、Claude Codeに渡すプロンプト(指示書)を見直して、専門用語をなるべく身近な言葉に言い換え、友人に近況を話すような親しみやすい語り口で書くように変更しました。
同時に、「人工知能」という表現をやめて、AIそのものを指すときは「AI」、実際に使っている開発ツールを指すときは「Claude Code」のように、具体的なツール名を明記するようにもしました。読んでいる人が同じ環境を試したり調べたりできるように、使っているソフトやサービスの名前は隠さず書く方がいいと判断したためです。
X投稿時の接続タイムアウト対策

X投稿用のワークフローは1時間おきに動くのですが、WordPressが載っているレンタルサーバーとの接続が一時的に途切れてしまうことがたまにあります。そうなると記事のリストを取得できず、処理が失敗してしまい、毎回失敗通知メールが届いていました。
これも地味にストレスだったので、失敗したら少し時間を空けて最大3回まで自動的に再試行するように変更しました。一時的な接続トラブルであれば、何度か試すうちに成功することが多いので、この対策で失敗通知がだいぶ減りました。
関連記事
今回は、SNS投稿の自動化とエラー時の自動リトライ、そして読みやすい文体への調整と、いろいろな改善を重ねた1週間でした。実際に動かしてみると、想定していなかった小さなトラブルがいくつも出てくるものですが、そのたびに少しずつ手を加えて安定させていくプロセスは、なかなか楽しいものです。
- 公開済み記事を自動的にXに投稿する仕組みを追加し、毎時チェックで運用開始
- アイキャッチ画像のアップロード失敗時に自動リトライする機構を実装
- TikTok用のカード画像生成とキューイング、さらに投稿スクリプトまで追加(OAuth認証待ち)
- 接続タイムアウトやファイル不在エラーの対策で、無駄な失敗通知を削減
- 開発ログの文体を見直し、専門用語を減らして親しみやすいトーンに変更
本記事にはアフィリエイト広告・プロモーションが含まれる場合があります。紹介する商品・サービスの購入や申込みは、必ずご自身の判断と責任で行ってください。

コメント