ブログ記事の作成を自動化すると、更新漏れを防ぎながら継続的な情報発信ができます。一方で、最初から生成、レビュー、公開のすべてを自動化すると、障害の原因を特定しにくくなります。
結論: OpenClawでブログ記事を自動生成するCI/CDパイプラインは、最小構成で始めてログを確認しながら段階的に広げるのが最短です。
Background
毎日の運用タスクは、手作業に依存すると実行漏れや設定のばらつきが発生します。記事生成も、テーマ選定、Markdown作成、検証、公開という定型処理に分解できます。
まずは記事ファイルの生成だけを自動化し、出力品質と実行の安定性を確認します。その後、テストやGitへのコミット、デプロイを追加すると、問題の発生箇所を切り分けやすくなります。
Step-by-step
1. 目的と対象範囲を決める
最初の自動化対象は、1回の実行につき1記事の下書きを生成する処理に限定します。成功条件も事前に明確にします。
たとえば、次の条件を設定します。
- Jekyll形式のYAMLフロントマターがある
- ファイル名が
_posts/YYYY-MM-DD-slug.md形式になっている - 本文が指定したテーマと日本語で記述されている
- 生成結果を人間が確認してから公開する
2. 最小構成のジョブを登録する
OpenClawのcron機能を使い、毎日9時に独立したセッションで記事を生成します。タイムゾーンは明示的に Asia/Tokyo を指定します。
1
2
3
4
5
6
openclaw cron add \
--name "daily-blog-draft" \
--cron "0 9 * * *" \
--tz "Asia/Tokyo" \
--session isolated \
--message "今日の開発者向けブログ記事を1件作成してください。Jekyll形式のYAMLフロントマターを付け、日本語で記述し、_posts/YYYY-MM-DD-slug.mdとして保存してください。公開やgit pushは行わず、生成したファイルパスと概要を報告してください。"
初期段階では、公開や git push を実行させません。生成されたMarkdownをレビューできる状態に留めることで、誤情報や意図しない変更の公開を防げます。
3. 生成結果を検証する
ジョブの実行後は、生成されたファイルと実行ログを確認します。特に、フロントマター、見出し構造、コード例、リンク、ファイル名を検証します。
Jekyllプロジェクトでは、ローカルビルドを実行して構文エラーも確認します。
1
2
# 依存関係を固定されたバージョンで使用してサイトを検証
bundle exec jekyll build
CIでは、ビルドが成功した場合だけ次の処理へ進めます。失敗した場合は、終了コード、対象ファイル、エラーメッセージを通知に含めます。
4. CI/CDへ段階的に拡張する
記事生成が安定したら、Markdownの静的解析やリンクチェックを追加します。その後、生成物を専用ブランチへコミットし、Pull Requestを作成するフローへ拡張します。
推奨する導入順序は次のとおりです。
- 記事の下書きを生成する
- Jekyllビルドで構文を検証する
- Markdownとリンクを検査する
- 専用ブランチへコミットする
- Pull Requestを作成する
- レビューとマージ後にデプロイする
人間によるレビューを残す場合、生成処理と公開処理の責務が明確になります。完全自動公開へ移行する場合も、ビルド失敗時にはデプロイを停止してください。
Common pitfalls
-
実行時刻がずれる: cronのタイムゾーンを省略すると、環境によってUTCとして解釈される可能性があります。
--tz "Asia/Tokyo"を明示し、登録後に次回実行時刻を確認します。 -
認証切れでGit操作に失敗する: 長期間動作するジョブでは、Gitホスティングサービスのトークンが期限切れになることがあります。専用の最小権限トークンを使用し、有効期限を監視します。
-
依存サービスの停止で生成できない: ローカルLLMや外部APIを利用する場合は、記事生成前にヘルスチェックを実行します。応答がない場合は処理を中断し、記事ファイルを作成しないようにします。
-
不完全な記事が公開される: ファイルが存在するだけで成功と判定してはいけません。フロントマター、必須見出し、本文の長さ、Jekyllビルド結果を検証してから公開処理へ進めます。
-
同じファイルを上書きする: 同日に複数回実行すると、同じファイル名が生成される可能性があります。既存ファイルを検出した場合は処理を停止するか、連番を付けて別ファイルとして保存します。
-
失敗通知から原因を特定できない: 「ジョブに失敗しました」だけでは調査できません。ジョブ名、実行日時、失敗した工程、終了コード、ログの参照先を通知に含めます。
Summary
OpenClawによるブログ記事生成は、下書き作成、検証、Git連携、公開という工程に分割すると安定して運用できます。最初は記事生成だけを自動化し、ログと生成物を確認してからCI/CDの範囲を広げます。
最小構成で開始し、Jekyllビルドによる検証と人間のレビューを挟みながら段階的に拡張することで、失敗を抑えつつ継続的な記事公開を実現できます。