mcpField
B
blogger

blogger

github.com/acedatacloud营销与增长17211 次安装今天更新
代码仓库

关于 blogger

blogger 是通过 curl 和 jq 操作 Blogger API v3 的技能,适用于管理博客文章。它涵盖发布、读取和更新文章,并说明认证、HTML 内容及成功发布后的记录流程。

主要功能

  1. 01实时发布文章或保存为草稿
  2. 02列出博客并读取文章
  3. 03更新文章并发布暂存草稿
  4. 04将 Markdown 内容转换为 HTML
  5. 05记录已发布的文章成果

适用场景

  1. 01向 Blogger 博客发布文章
  2. 02检查或更新现有文章
  3. 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。

评论

支持 Markdown