
※この記事もClaude Codeを使ってみましたwwww
ブログ記事を書くのって正直めんどくさい。書く内容は決まってるのに、画像貼って、HTMLいじって、投稿して…という作業が地味に時間を食う。
そこで今回、Claude Codeを使ってBloggerへの記事投稿を自動化してみた。結論から言うと、かなり快適になったのでまとめておく。
やりたかったこと
- スクリーンショットを渡すだけで記事を生成してほしい
- 画像もちゃんとブログに表示されてほしい
- できれば投稿まで自動でやってほしい
- シークレット情報(APIキーとか)はローカルに置きたくない
構成
最終的にこういう構成になった。
ポイントはCloudflare WorkerとSecrets Storeを使ったところ。APIキーやOAuth2トークンをローカルに置かずに済む。
使ったもの
| サービス | 用途 |
|---|---|
| Claude Code | 記事生成(画像解析含む) |
| Cloudflare Worker | 投稿処理のサーバーレス実行 |
| Cloudflare R2 | 画像ホスティング(転送無料) |
| Cloudflare Secrets Store | APIキー・OAuthトークン管理 |
| Blogger API v3 | 実際の投稿先 |
ハマったところ
wranglerのSecrets Store構文
secrets_store_bindings じゃなくて secrets_store_secrets が正しい構文だった。ドキュメントをちゃんと読めという話。
[[secrets_store_secrets]] binding = "BLOGGER_CLIENT_ID" store_id = "xxxxxxxx" secret_name = "BLOGGER_CLIENT_ID"
Secrets Storeのデプロイ権限
wranglerのOAuthログインだとSecrets Storeへのデプロイ権限が足りなくてエラーになった。
Secrets store binding authorization failed. [code: 10021]
対処法はAPIトークンを手動で作成して Secret Store: Edit 権限を付けること。
export CLOUDFLARE_API_TOKEN=xxxx npx wrangler deploy
Blogger API の画像
Blogger API v3には画像アップロード機能がない(Picasa APIは廃止済み)。Base64でHTMLに埋め込む方法もあるが、Bloggerが投稿時に除去することがある。R2に上げてURLを埋め込む方式が安定している。
実際の使い方
記事生成
Claude Codeのチャットに画像を貼って一言添えるだけ。
「このスクショでAWSの記事書いて」
drafts/2026-05-30-xxx/ に index.md + images/ + meta.yaml が保存される。
投稿
# ドライラン(HTMLプレビュー確認) python post.py --draft drafts/2026-05-30-xxx/ --dry-run # 本投稿 python post.py --draft drafts/2026-05-30-xxx/
過去記事の参照
記事を書く前に過去記事一覧を取得してコンテキストとして持たせることもできる。重複ネタを避けたり、ラベル名を統一したりするのに使っている。
python list_posts.py # 最新50件取得 → context/posts.json に保存
まとめ
Claude Codeで記事を書いて、Cloudflare Worker経由でBloggerに投稿する仕組みを作った。
面倒だった「書く → 画像貼る → 投稿する」という作業が、「画像貼り付けてチャット → コマンド1本」になった。シークレット情報もローカルに残らないので、どのマシンからでも投稿できるのも地味に便利。
Cloudflare WorkerもSecrets Storeも今回初めて触ったが、無料枠が広いし設定も思ったより簡単だった。R2の転送無料は特にありがたい。


0 件のコメント:
コメントを投稿