关于 vk
使用 curl 和 jq 调用 VK API 管理墙上帖子的技能,支持以用户或社群身份发布、定时发布、列出帖子及删除。
主要功能
- 01向用户或社群墙发布帖子
- 02附加媒体或链接
- 03安排延迟发布
- 04列出近期帖子及互动情况
- 05删除墙上帖子
适用场景
- 01向社群墙发布帖子
- 02安排帖子稍后发布
- 03查看近期帖子和互动
- 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等错误代码——请间隔一段时间再发帖。