mcpField
B
blogger

blogger

github.com/acedatacloudMarketing & growth17211 installsUpdated today
Repository

About blogger

blogger is a skill for operating Blogger API v3 with curl and jq. It covers publishing and managing posts, with guidance on authentication, HTML content, and recording successful publications.

Key features

  1. 01Publish posts live or as drafts
  2. 02List blogs and read posts
  3. 03Update and publish staged drafts
  4. 04Convert Markdown content to HTML
  5. 05Record published article outputs

Use cases

  1. 01Publish an article to a Blogger blog
  2. 02Review or update existing posts
  3. 03Find a blog ID and list its posts

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/acedatacloud/skills --skill blogger

After installing, type/bloggerin Claude Code to confirm it loaded.

Details

From the project README

Call the Blogger API v3 with curl + jq. The user's OAuth bearer token is in $GOOGLE_BLOGGER_TOKEN; every call needs Authorization: Bearer $GOOGLE_BLOGGER_TOKEN. Base URL: https://www.googleapis.com/blogger/v3.

Errors are {"error": {"code": ..., "message": ...}} — show them verbatim. 401 → token expired, re-connect the Blogger connector.

Always start by listing the user's blogs to get a blogId:

curl -sS -H "Authorization: Bearer $GOOGLE_BLOGGER_TOKEN" \
  "https://www.googleapis.com/blogger/v3/users/self/blogs" \
  | jq '.items[] | {id, name, url}'

Publish a post

When the user asks to publish / post / 发布 / 发出去, publish it live with ?isDraft=false (the default below) — do NOT silently save a draft and stop. Only pass ?isDraft=true when the user explicitly asks for a draft or to review before going public. After publishing, always report the returned live url back to the user.

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 is HTML (not Markdown) — convert Markdown to HTML first (e.g. with pandoc -f markdown -t html or a simple converter).

  • Publish a staged draft: POST /blogs/{blogId}/posts/{postId}/publish.
  • Update a post: PUT /blogs/{blogId}/posts/{postId} with the same shape.

List / read posts

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}'

Gotchas

  • Enable the Blogger API on the Google Cloud project backing the OAuth client, or calls 403 with accessNotConfigured.
  • A 403 "Method doesn't allow unregistered callers" means the request carried no token (empty $GOOGLE_BLOGGER_TOKEN) — ask the user to (re)connect the Blogger connector, don't blame their Google Cloud setup.
  • An empty {"kind":"blogger#blogList"} (no items) means the connected Google account owns no blog — tell the user to create one at blogger.com or reconnect with the account that has the blog.
  • content must be HTML; passing raw Markdown will render literally.
  • Paginate with &pageToken=$PAGE_TOKEN from the previous .nextPageToken.

Record the output

After you successfully publish and obtain the live result URL, call the built-in publish_artifact tool ONCE so the user can track this deliverable in My Outputs:

publish_artifact(kind="article", channel="blogger", title="<title>", url="<the REAL returned URL>", status="delivered")

Use the real returned URL — never fabricate one. Call it once per published item, only after delivery is confirmed; skip it (or use status="failed") if publishing failed. See _shared/artifacts.md.

Comments

Markdown supported