今週やったこと:3本柱でパイプラインを着実に育てた
今週は大きな新機能を作るというよりも、既存の自動投稿パイプラインをじわじわ改善した週だった。具体的には「①記事への図解挿入の仕組み化」「②スマホだけで投稿を復旧させた体験」「③--from-fileオプション追加による生成と公開の分離」の3本。それぞれ振り返っていく。
①記事の図解を画像なしHTMLだけで入れる運用に変更した
これまで自動投稿される記事はずっと文章オンリーだった。読みやすさの観点でどこかで図解を入れたいとは思っていたものの、「画像ファイルを用意する→WordPressにアップロードする→URLを埋め込む」というフローが地味に面倒で後回しにしていた。
今週、この問題をスタイル付き<div>だけで解決する方針に切り替えた。使うパターンは3種類に絞っている。
📊 図解の3パターン
① flowchart:処理の流れ・意思決定ツリーを矢印で表現
② 比較ボックス:ツールや手法を横並びで比較
③ 番号ステップ:手順を順序立てて視覚化
これらはすべてbody_htmlの文字列にそのまま埋め込めるので、下書きJSON生成の手間がまったく増えない。Claude Codeに「図解を必ず1つ以上入れる」というルールを指示するだけで、毎回パターンを選んで組み込んでくれるようになった。画像管理が不要になるのが個人的にはかなり気持ちいい。
②自動投稿がスキップされた朝、スマホだけで復旧させた
金曜の朝9時ごろ、LINEに通知が来ないなと思って確認したら、GitHub Actionsのログに「notes/log.mdが前回投稿時から更新されていないため、投稿をスキップします」と出ていた。
バグではなく、SHA256でファイルのハッシュを比較して変化がなければスキップするという意図した安全弁が動いていただけだった。ただ問題は、そのときPCが手元になかったこと。スマホしかない状態で「今週の記事をどう出すか」を考えた結果、以下の流れで完結させた。
📱 スマホだけで投稿を復旧した手順
1
Claude(Cowork)に記事本文をJSONで生成させる
2
生成したJSONをGitHubのnotes/フォルダにブラウザからコミット
3
GitHubの「Run workflow」ボタンを押してActionsをトリガー
✓
WordPressに投稿完了。PCもVSCodeも一切使わず完結
この体験をきっかけに、main.pyに--from-fileオプションを追加した。生成済みのJSONファイルを指定すれば、ファイル内容をそのままWordPressに投稿できる仕組みだ。GitHub Actionsのworkflow_dispatchにもfrom_file入力を追加し、サイト上から投稿ファイルを指定してトリガーできるようになった。
認証情報(Anthropic API・WordPress・LINEなど)はすべてGitHub Secretsに集約しているので、手元の端末に鍵を持ち歩く必要がない。外出先でも同じ操作ができる状態が整ったのは地味に大きい。
③生成と公開を切り離したことで得られた副産物
「記事を生成するタイミング」と「WordPressに投稿するタイミング」を分離したことで、もう一つ嬉しい副産物があった。下書きのストックができるようになったことだ。
これまでは生成と同時に投稿していたので、記事がたまる概念がなかった。今はnotes/フォルダにJSONが溜まっていき、タイミングを見て投稿できる。投稿済みのJSONはnotes/posted/に自動退避されるので、二重投稿の心配もない。
次にやりたいこと
今の仕組みで一番手動が残っているのは「スキップを検知した後の対応」だ。現状は自分がLINE通知に気づいて手動で復旧する必要がある。次のステップとして、スキップが発生したときにClaudeが自動で下書きJSONを生成してPRを立てるところまで自動化したい。
Actions → スキップ検知 → Claude API で下書き生成 → JSONをブランチにコミット → PR作成 → マージしたら自動投稿、というフローが完成すれば、自分が何もしなくてもブログが回り続ける状態に近づく。来週はここに着手する予定。
地味に見えるかもしれないけれど、こういった小さな改善の積み重ねがパイプライン全体の信頼性を上げていく実感がある。「完璧な仕組みを一気に作る」より「壊れたら直す→その経験を設計に反映する」サイクルの方が自分には合っているらしい。