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 は、標準でリンクとして表示されます — Bluesky とは異なり、ファセットやオフセットの処理は必要ありません。
  • attachments(カンマ区切り)でメディア/リンクを添付します。形式は {type}{owner_id}_{media_id}(例:photo-123456_789)または単一の外部 URL です。添付できるリンクは 1 つだけです。複数のリンクを指定するとエラー 222 になります。
  • publish_date(Unix タイムスタンプ)を指定すると、予約投稿になります。
  • キリル文字を含む message が文字化けしないよう、必ず --data-urlencode で送信してください。

最近のウォール投稿とエンゲージメントを一覧表示する

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 を組み合わせて、 https://vk.com/wall<owner_id>_<id> 形式の URL を作成します。

投稿を削除する

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 などのコードが 発生することがあります。投稿の間隔を空けてください。

コメント