blogger について
blogger は、curl と jq で Blogger API v3 を操作するスキルです。投稿の公開や読み取り、更新に加え、認証や HTML コンテンツ、公開後の記録手順も扱います。
主な機能
- 01投稿の公開と下書き保存
- 02ブログ一覧と投稿の取得
- 03投稿の更新と下書き公開
- 04Markdown から HTML への変換
- 05公開した記事の成果記録
活用シーン
- 01Blogger ブログへの記事公開
- 02既存投稿の確認や更新
- 03ブログ ID の取得と投稿一覧の表示
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ acedatacloud/ skills --skill bloggerインストール後、Claude Code で/bloggerを入力して読み込まれたか確認します。
詳細
curl + jq を使って Blogger API v3 を呼び出します。ユーザーの OAuth ベアラートークンは
$GOOGLE_BLOGGER_TOKEN に格納されています。すべての呼び出しで
Authorization: Bearer $GOOGLE_BLOGGER_TOKEN が必要です。ベース URL:
https://www.googleapis.com/blogger/v3。
エラーは {"error": {"code": ..., "message": ...}} の形式です。内容をそのまま表示してください。
401 → トークンの有効期限が切れています。Blogger コネクターを再接続してください。
必ず最初にユーザーのブログを一覧表示して、blogId を取得してください:
curl -sS -H "Authorization: Bearer $GOOGLE_BLOGGER_TOKEN" \
"https://www.googleapis.com/blogger/v3/users/self/blogs" \
| jq '.items[] | {id, name, url}'
投稿を公開する
ユーザーから公開/投稿/发布/发出去を依頼された場合は、?isDraft=false(以下のデフォルト)を指定して公開状態で投稿してください。下書きとして保存して終了してはいけません。?isDraft=true を指定するのは、ユーザーが明示的に下書き、または公開前の確認を依頼した場合のみです。公開後は、返された公開済みの url を必ずユーザーに伝えてください。
BLOG_ID="1234567890"
jq -n --arg t "My title" --arg c "<p>HTML content of the post…</p>" \
'{kind:"blogger#post", title:$t, content:$c, labels:["ai","video"]}' \
| curl -sS -X POST \
"https://www.googleapis.com/blogger/v3/blogs/$BLOG_ID/posts/?isDraft=false" \
-H "Authorization: Bearer $GOOGLE_BLOGGER_TOKEN" \
-H "Content-Type: application/json" \
-d @- \
| jq '{id, url, status}'
content は Markdown ではなく HTML です。先に Markdown を HTML に変換してください(例:pandoc -f markdown -t html または簡単なコンバーター)。
- 下書きとして準備した投稿を公開する:
POST /blogs/{blogId}/posts/{postId}/publish。 - 投稿を更新する:同じ形式で
PUT /blogs/{blogId}/posts/{postId}。
投稿の一覧表示/読み取り
curl -sS -H "Authorization: Bearer $GOOGLE_BLOGGER_TOKEN" \
"https://www.googleapis.com/blogger/v3/blogs/$BLOG_ID/posts?maxResults=20&status=live" \
| jq '.items[] | {id, title, url, published}'
注意事項
- OAuth クライアントが使用する Google Cloud プロジェクトで Blogger API を有効にしてください。有効でない場合、呼び出しは
accessNotConfiguredで 403 エラーになります。 403 "Method doesn't allow unregistered callers"は、リクエストにトークンが含まれていないこと($GOOGLE_BLOGGER_TOKENが空)を意味します。Google Cloud の設定の問題と決めつけず、Blogger コネクターの再接続をユーザーに依頼してください。- 空の
{"kind":"blogger#blogList"}(itemsがない状態)は、接続中の Google アカウントがブログを所有していないことを意味します。blogger.com でブログを作成するか、ブログを所有するアカウントで再接続するようユーザーに伝えてください。 contentは HTML である必要があります。Markdown をそのまま渡すと、文字列どおりに表示されます。- 前のレスポンスの
.nextPageTokenを使って&pageToken=$PAGE_TOKENを指定し、ページネーションしてください。
出力を記録する
投稿が正常に公開され、公開結果の URL を取得したら、組み込みの
publish_artifact ツールを 1 回呼び出して、ユーザーが My Outputs でこの成果物を追跡できるようにしてください:
publish_artifact(kind="article", channel="blogger", title="<title>", url="<the REAL returned URL>", status="delivered")
実際に返された URL を使用してください。決して捏造してはいけません。公開した項目ごとに 1 回のみ、配信が確認された後に呼び出してください。公開に失敗した場合は呼び出しをスキップするか、status="failed" を使用してください。
_shared/artifacts.md を参照してください。