npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-vk-community

v0.1.2

Published

n8n community nodes for VK Community (VKontakte): messages, wall posts, and Callback API triggers

Readme


🚀 Быстрый старт

Установка

☁️ n8n Cloud

  1. SettingsCommunity Nodes
  2. Install a community node
  3. Введите n8n-nodes-vk-community
  4. Install

🖥️ Self-hosted

cd ~/.n8n
npm install n8n-nodes-vk-community
# Перезапустите n8n

После установки в палитре нод появятся:

| Нод | Для чего | |-----|----------| | VK Community | Отправка сообщений, публикация/редактирование/удаление постов | | VK Community Trigger | Приём событий от VK через Callback API (входящие сообщения, новые посты и др.) |


🔑 Настройка подключения

Всё начинается с токена сообщества. Без него ничего не заработает.

Шаг 1 — Получите токен в ВКонтакте

Сообщество → ⚙️ Управление → Работа с API → Ключи доступа → Создать ключ

Какие права выбрать:

| Право | Зачем | |-------|-------| | ✅ Сообщения сообщества | Для отправки и получения сообщений | | ✅ Стена | Для постов: создание, редактирование, удаление |

Шаг 2 — Создайте credential в n8n

Credentials → Add Credential → VK Community API

| Поле | Что вписать | Обязательно? | |------|-------------|:------------:| | Community Access Token | Токен из шага 1 (vk1.a.xxxxx...) | ✅ | | API Version | Версия API, по умолчанию 5.199 | — | | Service Key | Сервисный ключ приложения VK (для операции Get Posts) | Для Get Posts | | Confirmation String | Строка подтверждения Callback API | Только для Trigger | | Secret Key | Секретный ключ для верификации запросов | Нет |

💡 Нажмите Test — если токен валиден, увидите зелёную галочку. Тест вызывает groups.getById.

Сервисный ключ нужен для операции Get Posts (получение постов со стены). VK не позволяет читать стену с токеном сообщества (ошибка 27).

Как получить:

  1. Перейдите на https://dev.vk.comМои приложения
  2. Если нет приложения — создайте новое (тип: Standalone)
  3. Откройте Настройки приложения
  4. Скопируйте Сервисный ключ доступа

⚠️ Если вы не используете операцию Get Posts — это поле можно оставить пустым.

Сообщество → Управление → Работа с API → Callback API
→ «Строка, которую должен вернуть сервер»

Это короткий код вида a1b2c3d4. Нужен только для нода VK Community Trigger.


💬 Нод VK Community

Основной нод для действий с VK API. Работает с двумя ресурсами:

Сообщения (Message)

Отправляет сообщение от имени сообщества.

| Параметр | Что указать | |----------|-------------| | Peer ID | Кому отправить (см. таблицу ниже) | | Message Text | Текст сообщения |

Дополнительные поля (Additional Fields):

| Параметр | Описание | |----------|----------| | Attachment | Вложения: photo-123456_789012 (через запятую, если несколько) | | Keyboard (JSON) | Клавиатура бота | | Don't Parse Links | Не показывать превью ссылок |

🆔 Как определить Peer ID?

| Куда отправляем | Как вычислить | Пример | |-----------------|---------------|--------| | 👤 Пользователю | Просто его ID | 12345678 | | 👥 В беседу | 2000000000 + chat_id | 2000000001 | | 🏢 Сообществу | -group_id | -198765432 |

⚠️ Пользователь должен сам написать первым! ВКонтакте запрещает отправку сообщений пользователям, которые не начинали диалог с сообществом.

⌨️ Пример: inline-клавиатура бота

Вставьте в поле Keyboard (JSON):

{
  "inline": true,
  "buttons": [[
    {
      "action": { "type": "text", "label": "✅ Да", "payload": "{\"btn\":\"yes\"}" },
      "color": "positive"
    },
    {
      "action": { "type": "text", "label": "❌ Нет", "payload": "{\"btn\":\"no\"}" },
      "color": "negative"
    }
  ]]
}

Доступные цвета кнопок: positive (зелёный), negative (красный), primary (синий), secondary (серый).

| Параметр | Описание | |----------|----------| | Peer ID | ID собеседника | | Count | Сколько сообщений вернуть (макс. 200) | | Offset | Пропустить N сообщений (для пагинации) |


Стена (Wall)

| Параметр | Что указать | |----------|-------------| | Owner ID | ID сообщества со знаком минус: -123456 | | Message | Текст поста |

Дополнительные поля:

| Параметр | Описание | |----------|----------| | From Group | true — от имени сообщества (по умолч.), false — от вашего имени | | Attachments | Вложения через запятую: photo-123_456,video-123_789 | | Publish Date | UNIX-timestamp для отложенного поста. 0 = сейчас |

💡 Отложенный постинг: чтобы опубликовать пост 1 марта 2026 в 12:00 МСК, укажите 1772186400. Можно вычислить через выражение n8n: {{ DateTime.fromISO('2026-03-01T12:00:00+03:00').toSeconds() }}

⚠️ Требуется Service Key! Метод wall.get не работает с токеном сообщества (ограничение VK API, ошибка 27). Заполните поле Service Key в credentials.

| Параметр | Описание | |----------|----------| | Owner ID | ID владельца стены (для сообщества: -group_id) | | Count | Количество постов (макс. 100) | | Offset | Смещение для пагинации |

| Параметр | Описание | |----------|----------| | Owner ID | ID владельца стены | | Post ID | ID поста (можно получить из Create Post или Get Posts) | | Message | Новый текст | | Attachments | Новые вложения (заменят существующие) |

| Параметр | Описание | |----------|----------| | Owner ID | ID владельца стены | | Post ID | ID поста для удаления |


⚡ Нод VK Community Trigger

Принимает события от ВКонтакте через Callback API и запускает workflow.

Поддерживаемые события

| Событие | Когда срабатывает | |---------|-------------------| | 💬 message_new | Пользователь написал сообщение сообществу | | ↩️ message_reply | Сообщество отправило сообщение | | ✏️ message_edit | Сообщение было отредактировано | | 📝 wall_post_new | Опубликован новый пост на стене | | 🔄 wall_repost | Пост репостнули |


🔧 Настройка Callback API — пошагово

Это самая ответственная часть. Порядок действий важен!

┌─────────────────────────────────────────────────────────┐
│  1. Заполните credential (токен + confirmation string)  │
│                         ↓                               │
│  2. Создайте workflow с VK Community Trigger             │
│                         ↓                               │
│  3. Активируйте workflow (Active → On)                  │
│                         ↓                               │
│  4. Скопируйте webhook URL                              │
│                         ↓                               │
│  5. Вставьте URL в VK → Callback API → Подтвердите      │
│                         ↓                               │
│  6. Включите нужные типы событий в VK                   │
└─────────────────────────────────────────────────────────┘

Подробнее:

1. Убедитесь, что в credential заполнены Community Access Token и Confirmation String.

2-3. Создайте workflow, добавьте нод VK Community Trigger, выберите события, подключите credential. Активируйте workflow.

4. После активации n8n покажет Production URL вида:

https://your-n8n.com/webhook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/webhook

⚠️ Workflow ОБЯЗАТЕЛЬНО должен быть активен до настройки URL в VK. Иначе VK не сможет пройти подтверждение — webhook не ответит.

5. В ВКонтакте:

Сообщество → Управление → Работа с API → Callback API → вкладка «Настройки сервера»

Вставьте URL → нажмите Подтвердить. При успехе появится ✅.

6. Перейдите во вкладку Типы событий и включите те же события, что выбрали в нод (например, «Входящее сообщение» для message_new).


📤 Что приходит в workflow

При каждом событии триггер выдаёт:

{
  "eventType": "message_new",
  "groupId": 123456789,
  "eventId": "abc123def456",
  "object": {
    "message": {
      "id": 100,
      "from_id": 87654321,
      "peer_id": 87654321,
      "text": "Привет, бот!"
    }
  },
  "_rawBody": { "..." }
}

| Поле | Описание | |------|----------| | eventType | Тип события: message_new, wall_post_new и т.д. | | groupId | ID вашего сообщества | | object | Данные события (сообщение, пост...) | | _rawBody | Полное тело запроса от VK |

Полезные выражения для следующих нод:

  • Текст сообщения: {{ $json.object.message.text }}
  • ID отправителя: {{ $json.object.message.from_id }}
  • Peer ID для ответа: {{ $json.object.message.peer_id }}

🛠 Примеры workflow

🤖 Эхо-бот

Отвечает на каждое сообщение, повторяя текст:

[VK Community Trigger] → [VK Community]
     message_new            Message → Send

Настройка VK Community:

  • Peer ID: {{ $json.object.message.peer_id }}
  • Message Text: Вы написали: {{ $json.object.message.text }}

📅 Автопостинг по расписанию

Каждый день публикует пост с контентом из внешнего API:

[Schedule Trigger] → [HTTP Request] → [VK Community]
   каждый день       получить данные    Wall → Create Post

📲 Пересылка VK-сообщений в Telegram

[VK Community Trigger] → [Telegram]
     message_new          Send Message

Текст для Telegram: Новое сообщение VK от {{ $json.object.message.from_id }}: {{ $json.object.message.text }}


🔔 Уведомление о новых постах в Slack

[VK Community Trigger] → [Slack]
     wall_post_new        Send Message

❗ Частые проблемы и решения

  • Убедитесь, что вы используете токен сообщества, а не личный токен
  • Проверьте, не отозван ли токен: Сообщество → Управление → Работа с API → Ключи доступа
  • Создайте новый ключ, если старый скомпрометирован
  • При создании токена не были выбраны нужные права
  • Для сообщений → право «Сообщения сообщества»
  • Для стены → право «Стена»
  • Пересоздайте токен с правильными правами

ВКонтакте запрещает отправку первого сообщения пользователю. Решения:

  1. Пользователь должен сам написать сообществу первым
  2. Включите сообщения сообщества: Управление → Сообщения → Сообщения сообщества → Включены
  3. Для рассылок используйте только тех пользователей, которые уже писали вам

Чек-лист:

  • [ ] Workflow активен в n8n?
  • [ ] Confirmation String в credential совпадает с тем, что в настройках VK?
  • [ ] URL вебхука правильный и доступен извне?
  • [ ] n8n доступен по HTTPS? (VK не работает с HTTP)
  • [ ] Нет файрволла/прокси, блокирующего запросы от VK?

VK ожидает ответ в течение 5 секунд. Если ваш сервер отвечает дольше — подтверждение не пройдёт.

  • Проверьте, что в VK включены нужные типы событий (Callback API → Типы событий)
  • Проверьте, что в ноде выбраны те же события
  • Если задан Secret Key — он должен совпадать в credential и в VK

📋 Совместимость

| | Версия | |---|--------| | n8n | 1.0+ | | VK API | 5.199 (настраивается) | | Node.js | 18+ |


📄 Лицензия

MIT