mcpField
V
vk

vk

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

关于 vk

使用 curl 和 jq 调用 VK API 管理墙上帖子的技能,支持以用户或社群身份发布、定时发布、列出帖子及删除。

主要功能

  1. 01向用户或社群墙发布帖子
  2. 02附加媒体或链接
  3. 03安排延迟发布
  4. 04列出近期帖子及互动情况
  5. 05删除墙上帖子

适用场景

  1. 01向社群墙发布帖子
  2. 02安排帖子稍后发布
  3. 03查看近期帖子和互动
  4. 04删除墙上帖子

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/vk确认已加载。

详细介绍

使用 curl + jq 调用 VK API。令牌通过 $VK_ACCESS_TOKEN 注入, 并在 Authorization: Bearer 请求头中传递。每次 VK API 调用还需要 v(API 版本)查询参数——使用 v=5.199。基础 URL: https://api.vk.com/method/<method>。

VK 始终返回 HTTP 200;成功时返回 {"response": ...},失败时返回 {"error":{"error_code":<n>,"error_msg":"<detail>"}}——务必检查 .error, 并原样显示 error_msg。常见错误代码:5 = 身份验证失败(令牌错误或 已撤销 → 用户必须重新连接 VK 连接器),214 = 添加帖子时访问被拒绝 (令牌缺少 wall 权限——需要具有 wall 权限的社群访问密钥),15/203 = 无权访问该所有者。

第 1 步——确认你可以以谁的身份发帖

社群访问密钥会在社群墙上发帖:owner_id 必须是 负数社群 ID,并且要传入 from_group=1。从令牌中解析社群 ID:

curl -sS "https://api.vk.com/method/groups.getById?v=5.199" \
  -H "Authorization: Bearer $VK_ACCESS_TOKEN" \
  | jq '.response, .error'

取群组的 id(例如 123456)→ owner_id 为 -123456。(使用个人 用户令牌时,owner_id 是通过 users.get 获取的正数用户 ID,并且省略 from_group。)

在墙上发帖

发帖前,请与用户确认消息文本。 帖子必须包含文本和/或附件。

OWNER_ID="-123456"   # negative = community; from_group=1 posts as the community
MSG="Пример поста через VK API. #ai"
curl -sS -G "https://api.vk.com/method/wall.post" \
  -H "Authorization: Bearer $VK_ACCESS_TOKEN" \
  --data-urlencode "v=5.199" \
  --data-urlencode "owner_id=$OWNER_ID" \
  --data-urlencode "from_group=1" \
  --data-urlencode "message=$MSG" \
  | jq '.response, .error'

成功时返回 {"response":{"post_id":<id>}}。公开 URL 为 https://vk.com/wall<OWNER_ID>_<post_id>(例如 https://vk.com/wall-123456_17)。

  • message 中的标签(#tag)和普通 URL 会原生显示为可点击内容—— 无需处理 facet/偏移量(与 Bluesky 不同)。
  • 使用 attachments 附加媒体/链接(以逗号分隔),格式为 {type}{owner_id}_{media_id}(例如 photo-123456_789),或使用单个外部 URL。最多只能附加 一个链接;附加多个链接会报错 222。
  • publish_date(Unix 时间戳)可安排延迟发布。
  • 始终通过 --data-urlencode 发送西里尔字母的 message,以免内容乱码。

列出我最近发布的墙上帖子及互动情况

OWNER_ID="-123456"
curl -sS -G "https://api.vk.com/method/wall.get" \
  -H "Authorization: Bearer $VK_ACCESS_TOKEN" \
  --data-urlencode "v=5.199" \
  --data-urlencode "owner_id=$OWNER_ID" \
  --data-urlencode "count=20" \
  | jq '.error, (.response.items[]? | {id,
        text,
        likes: .likes.count,
        reposts: .reposts.count,
        comments: .comments.count,
        views: .views.count,
        date})'

count 最大为 100。组合使用 owner_id 和帖子 id,构建 URL https://vk.com/wall<owner_id>_<id>。

删除帖子

OWNER_ID="-123456"; POST_ID="17"
curl -sS -G "https://api.vk.com/method/wall.delete" \
  -H "Authorization: Bearer $VK_ACCESS_TOKEN" \
  --data-urlencode "v=5.199" \
  --data-urlencode "owner_id=$OWNER_ID" \
  --data-urlencode "post_id=$POST_ID" \
  | jq '.response, .error'

注意事项

  • 每次调用都必须包含 v——省略会返回错误。
  • 无法通过 OAuth 新建用户令牌(用户令牌的 Implicit/Authorization Code 流程已于 2024-06 停用);请使用具有 wall 权限的 社群访问密钥(有效期不限,可在社群的 API 设置中创建)。
  • 以社群身份发帖时,必须同时将 owner_id 设为负数,并且 设置 from_group=1。
  • 频率限制/反垃圾机制:重复发布相同帖子或发帖过于频繁,可能触发 214/219 等错误代码——请间隔一段时间再发帖。

评论

支持 Markdown