Сложность: Уровень сложностиУровень сложностиУровень сложности

Как сделать ИИ-агента для сбора ключевых слов и генерации тем для статей

Частая задача при работе с контентом — продумать темы для статей и постов, которые будут интересны целевой аудитории. Обычно редакторы, SEO-специалисты и маркетологи делают это вручную: открывают Яндекс Вордстат, выписывают ключи и потом думают, какие темы могут быть интересны пользователям.

Мы решили автоматизировать этот процесс и создали ИИ-агента, который будет самостоятельно выгружать списки ключевых слов, разбивать их на родственные группы и потом придумывать темы для статей.

А если не хотите читать гайд — смотрите короткий видеообзор, где мы разбираемся со структурой агента и показываем, как он работает.

Шаг 1. Подключаем нужные сервисы

Нам понадобятся:

  • OpenRouter или другая нейросеть на ваш выбор: ChatGPT, Gemini, Claude и т. д;
  • Google-таблицы.

Если ранее не подключали к n8n Google-сервисы, сначала изучите наш другой гайд:

Шаг 2. Строим бота

В этом гайде мы покажем простой способ настройки. Для этого вам понадобится просто скачать файлы с готовой структурой бота и импортировать их в редактор.

Файлы для скачивания лежат в этой папке.

Создаем основу

Сначала создайте новый workflow и импортируйте файл Keyword Planner.json. Это — основа будущего агента. Здесь нужно проставить данные своих аккаунтов. На скрине ниже я выделил элементы, в которых нужно активировать свои аккаунты.

агент для сбора ключевых слов

Настраиваем таблицы

Для этого нужно открыть ноды с иконкой Google Sheets и указать название таблицы и листа, куда будет записываться информация.

настройка узлов в n8n

Таблица должна быть определенного вида с несколькими столбцами:

  • Niche
  • Group_Number
  • Group_Name
  • Keywords
  • Topic_Number
  • Topics

Чтобы не собирать таблицу вручную, можете создать копию моей: шаблон таблицы

Как работать с агентом

Агент работает в Google таблицах. Чтобы начался процесс сбора ключей и генерации тем, в ячейку A2 нужно ввести тему, по которой нужно собрать ключи. Например, «Нейросеть», «Нейросеть для фото» и т. д.

Под капотом все работает так: вы вводите название темы → агент собирает список ключевых слов (250 самых популярных запросов) → разбивает их на родственные группы → по каждой группе предлагает 10 тем.

как собрать к

На всех этапах задействуются нейросети: для извлечения ключей, для распределения их по группам и для генерации тем. В каждой нейросети используется свой промпт. В агентах Keyword Extractor1 и AI Keyword Grouping промпты можете не менять, а вот в SEO Title Generation1 можете поменять запрос под себя. Сейчас он выглядит так:

Prompt

Ты — эксперт по контент-маркетингу. Создай темы статей на основе ключевых слов.

Группа ключевых слов: {{ $json.Keywords }}

Номер группы: {{ $json.Group_Number }}

Основная ниша: {{ $json.Niche }}

Инструкции:

1. Создай 10 привлекательных тем статей для этой группы ключевых слов

2. Темы должны покрывать все ключевые слова из группы

3. Используй SEO-оптимизированные заголовки

4. Делай заголовки кликабельными и полезными

ВАЖНО: Верни ответ точно в таком формате:

Тема 1: [заголовок статьи]

Тема 2: [заголовок статьи]  

Тема 3: [заголовок статьи]

Тема 4: [заголовок статьи]

Тема 5: [заголовок статьи]

Тема 6: [заголовок статьи]

Тема 7: [заголовок статьи]

Тема 8: [заголовок статьи]

Тема 9: [заголовок статьи]

Тема 10: [заголовок статьи]

Никаких дополнительных текстов!

Важно! Ты передаешь только темы. Ты не пишешь никаких вводных предложений и вообще ничего не говоришь. Только передаешь темы.

Этой простой и короткий промпт, по которому получаются неплохие темы для статей за счет уже подготовленных ключевых запросов. 

Зачем в таблице используется скрипт

К сожалению, я столкнулся с нерешаемой проблемой — функционал n8n не позволяет внутри одного листа записать список тем для каждой группы ключевых запросов. Агент записывает только последние 10 тем. Поэтому пришлось пойти таким путем:

  1. Все темы поступают в ячейку F2 (напомню, агент генерирует 10 тем для статей по каждой группе ключевых запросов)
  2. После попадания списка тем в ячейку F2 запускается триггер со скриптом, который переносит все темы на новую страницу и разбивает их на группы. Чтобы работать с темами было удобно.

Вот скрипт, который используется в таблице:

function processTopicsFromF2() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const mainSheet = spreadsheet.getActiveSheet();
  
  const topicsCell = mainSheet.getRange('F2');
  const topicsText = topicsCell.getValue();
  
  if (!topicsText || topicsText.toString().trim() === '') {
    SpreadsheetApp.getUi().alert('Ячейка F2 пуста');
    return;
  }
  
  const timestamp = new Date().toISOString().slice(0,16).replace(/[:-]/g, '').replace('T', '_');
  const newSheetName = `Topics_${timestamp}`;
  const newSheet = spreadsheet.insertSheet(newSheetName);
  
  newSheet.getRange('A1:C1').setValues([['Группа', 'Темы статей', 'Количество тем']]);
  newSheet.getRange('A1:C1').setFontWeight('bold');
  
  const groups = parseTopicsByGroups(topicsText.toString());
  
  let row = 2;
  groups.forEach((group, index) => {
    newSheet.getRange(row, 1).setValue(group.groupName);
    
    const formattedTopics = group.topics.map((topic, topicIndex) => {
      return `Тема ${topicIndex + 1}: ${topic}`;
    }).join('\n\n');
    
    newSheet.getRange(row, 2).setValue(formattedTopics);
    newSheet.getRange(row, 3).setValue(group.topics.length);
    
    row++;
  });
  
  SpreadsheetApp.getUi().alert(`Создан лист "${newSheetName}"`);
}

function parseTopicsByGroups(text) {
  const groups = [];
  const parts = text.split(/==========.*?==========/);
  
  parts.forEach((part, index) => {
    if (index === 0) return;
    
    const topics = [];
    const lines = part.split('\n');
    
    lines.forEach(line => {
      const match = line.match(/^Тема\s+\d+:\s*(.+)$/);
      if (match) {
        topics.push(match[1].trim());
      }
    });
    
    if (topics.length > 0) {
      groups.push({
        groupName: `Группа ${index}`,
        topics: topics
      });
    }
  });
  
  return groups;
}

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('🚀 Обработка тем')
    .addItem('📝 Создать лист с темами', 'processTopicsFromF2')
    .addToUi();
}

Разрешите запуск скрипта, авторизуйтесь через Google аккаунт. Скрипт запустится.

После этого вернитесь в таблицу — на верхней панели появится кнопка «Обработка тем».

После появления тем (они все запишутся в ячейку F2), кликните на кнопку «Обработка тем» → «Создать лист с темами» → создастся новый лист, где темы будут разбиты по группам.

кластеризация ключевых слов с помощью ИИ

Сколько стоит содержать такого агента

Конкретную сумму назвать, все сильно зависит от размера ваших системных промптов, используемых нейросетей и количества генерируемых тем. Я, например, тестировал все на Gemini 2.5 flash и pro и один запрос стоит меньше цента.

0 комментариев
Старые
Новые Популярные