关于 blogger
blogger 是通过 curl 和 jq 操作 Blogger API v3 的技能,适用于管理博客文章。它涵盖发布、读取和更新文章,并说明认证、HTML 内容及成功发布后的记录流程。
主要功能
- 01实时发布文章或保存为草稿
- 02列出博客并读取文章
- 03更新文章并发布暂存草稿
- 04将 Markdown 内容转换为 HTML
- 05记录已发布的文章成果
适用场景
- 01向 Blogger 博客发布文章
- 02检查或更新现有文章
- 03查找博客 ID 并列出文章
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ acedatacloud/ skills --skill blogger安装后在 Claude Code 中输入/blogger确认已加载。
详细介绍
使用 curl + jq 调用 Blogger API v3。用户的 OAuth bearer 令牌位于
$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 是 HTML(不是 Markdown)——请先将 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为空)——请让用户重新连接 Blogger 连接器,不要归咎于其 Google Cloud 配置。- 空的
{"kind":"blogger#blogList"}(没有items)表示已连接的 Google 账号没有任何博客——请告知用户前往 blogger.com 创建博客,或使用拥有该博客的账号重新连接。 content必须是 HTML;直接传入原始 Markdown 会按原样显示。- 使用上一个
.nextPageToken中的&pageToken=$PAGE_TOKEN进行分页。
记录输出
成功发布并获取上线结果 URL 后,请调用内置的
publish_artifact 工具一次,以便用户在 我的输出 中跟踪此交付内容:
publish_artifact(kind="article", channel="blogger", title="<title>", url="<the REAL returned URL>", status="delivered")
请使用实际返回的 URL,切勿伪造。每个已发布项目仅调用一次,
且只能在确认交付后调用;如果发布失败,请跳过调用(或使用 status="failed")。
请参阅 _shared/artifacts.md。