Автоматизация глубокого исследования с AI Research System

Автоматизация глубокого исследования с AI Research System

Цель

Создать быстрый и надежный инструмент для автоматического проведения комплексных исследований, который экономит часы ручной работы и предоставляет готовый структурированный отчет за 5-10 минут.

Область применения

  • Бизнес-аналитика – анализ рынков, конкурентов и тенденций
  • Научные исследования – сбор и систематизация данных по тематике
  • Образование – подготовка материалов для курсовых, дипломов, статей
  • Контент-маркетинг – создание экспертных статей и обзоров
  • Стартапы – изучение ниши и подготовка презентационных материалов

Описание процесса

Данная автоматизация представляет собой комплексную систему проведения глубокого исследования по любой заданной теме. Система автоматически разбивает тему на 5 подтем, проводит исследование каждой из них с использованием 25 источников, создает структурированный HTML-отчет и отправляет готовый PDF-документ пользователю на email.

Необходимые API ключи и настройки

Основные сервисы:
  • OpenAI API ключ - для 8 различных AI операций 
  • Tavily API ключ - для 5 углубленных веб-поисков https://app.tavily.com/home 
  • APITemplate.io API ключ - для генерации PDF из HTML https://app.apitemplate.io/manage-api/ 
  • Google Sheets OAuth2 - для сохранения промежуточных данных
  • Gmail OAuth2 - для отправки готового отчета

Структура Google Sheets таблицы:

Обязательные столбцы:

  • Тема анализа - основная тема (ключевое поле)
  • Заголовок - название отчета
  • Вступление - введение
  • 1 Глава, 2 Глава, 3 Глава, 4 Глава, 5 Глава - заголовки глав
  • 1 Тема: Источники, 1 Тема: Разделы, 1 Тема: контент - данные темы 1
  • 2 Тема: Источники, 2 Тема: Разделы, 2 Тема: контент - данные темы 2
  • 3 Тема: Источники, 3 Тема: Разделы, 3 Тема: контент - данные темы 3
  • 4 Тема: Источники, 4 Тема: Разделы, 4 Тема: контент - данные темы 4
  • 5 Тема: Источники, 5 Тема: Разделы, 5 Тема: контент - данные темы 5
  • Источники - общий список всех источников
  • ToC - оглавление

Детальная архитектура

РАЗДЕЛ 1: ПОДГОТОВКА (Красный блок)

1.1 Форма запуска - On form submission

Назначение: Точка входа для пользователя Настройки:

{

  "formTitle": "Глубокий анализ",

  "formDescription": "Введите тему для анализа",

  "formFields": [

    {

      "fieldLabel": "Search Topic",

      "placeholder": "тема",

      "requiredField": true

    },

    {

      "fieldLabel": "Email",

      "placeholder": "name@example.com", 

      "requiredField": true

    }

  ]

}

1.2 AI Планирование - Plan Topics

Назначение: Разбивает основную тему на 5 подтем для исследования

Подключенные компоненты:

  • OpenAI Chat Model (gpt-4o-mini)
  • 5 Topics (Structured Output Parser)

Системный промпт Plan Topics:

# Обзор

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

## Инструкции:

1) Разбейте тему: Определите пять отдельных, но взаимосвязанных подтем, которые при исследовании дадут всестороннее понимание основной темы поиска.

2) Обеспечьте глубину и релевантность: Каждая тема поиска должна быть достаточно конкретной, чтобы обеспечить глубокое исследование, но достаточно широкой, чтобы обеспечить значимые идеи.

3) Избегайте избыточности: Пять тем поиска должны быть уникальными и охватывать различные аспекты основной темы.

## Формат вывода (JSON):

{

"topic_1": "<Первая тема углубленного поиска>",

"topic_2": "<Вторая тема углубленного поиска>",

"topic_3": "<Третья тема углубленного поиска>",

"topic_4": "<Четвертая тема углубленного поиска>",

"topic_5": "<Пятая тема углубленного поиска>"

}

## Пример:

Ввод: "Автоматизация бизнеса на базе ИИ"

Вывод:

{

"topic_1": "Роль ИИ в автоматизации бизнес-процессов",

"topic_2": "Инструменты и технологии ИИ-автоматизации",

"topic_3": "Проблемы и этические аспекты автоматизации ИИ",

"topic_4": "Успешные кейсы внедрения ИИ в бизнесе",

"topic_5": "Будущее автоматизации ИИ: тенденции и инновации"

}

Structured Output Parser Schema "5 Topics":

{

  "topic_1": "Understanding AI Agents",

  "topic_2": "Building AI Agents with n8n",

  "topic_3": "Optimizing Prompt Engineering", 

  "topic_4": "Storing and Retrieving AI Knowledge",

  "topic_5": "Scaling AI Automation for Businesses"

}

ЧТО ТАКОЕ Structured Output Parser Schema: Это инструмент, который заставляет AI возвращать данные ТОЧНО в заданном JSON формате. Без него AI может вернуть текст как угодно - абзацами, списками, в любом виде. Схема говорит AI: "Верни мне именно 5 тем в формате topic_1, topic_2 и т.д."

ЗАЧЕМ ЭТО НУЖНО ЗДЕСЬ:

  1. Гарантирует получение именно 5 тем (не 3, не 7)
  2. Позволяет обращаться к каждой теме через $json.topic_1, $json.topic_2
  3. Switch нода может точно определить, какую тему направить куда
  4. Исключает ошибки парсинга данных

КАК ЭТО РАБОТАЕТ:

  • AI получает промпт + схему как строгую инструкцию
  • AI обязан вернуть JSON именно с полями topic_1, topic_2, topic_3, topic_4, topic_5
  • n8n автоматически парсит JSON и делает доступным $json.topic_1 для следующих нод
1.3 AI Генерация структуры - Intro

Назначение: Создает заголовок, введение и названия глав для отчета

Подключенные компоненты:

  • OpenAI Chat Model1 (gpt-4o-mini)
  • Title, Intro, Chapters (Structured Output Parser)

Системный промпт Intro:

# Обзор

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

## Инструкции:

1) Название: Создайте четкое и интересное название, отражающее общую тему отчета.

2) Введение: Напишите короткое введение (2 абзаца), которое предоставит контекст, объяснит значимость темы и обрисует, что будет охватывать отчет. Этот раздел должен начинаться с заголовка под названием «Введение».

3) Оглавление: В конце введения перечислите пять разделов отчета, каждый из которых представлен в виде четко отформатированного названия главы в заголовках <h2>.

4) Названия глав: Убедитесь, что название каждой главы отформатировано как заголовок <h2>, чтобы сделать его визуально отличным.

## Оформление:

- Название: элемент <h1>, по центру, оформленный профессиональным темно-синим цветом.

- Введение: заключено в <div> со светло-серым фоном (#f4f4f4) для контраста.

- Абзацы: читаемый размер шрифта (16 пикселей), соответствующая высота строки (1,6) и нейтральный цвет текста (#333).

- Горизонтальная линия (<hr>) должна использоваться для разделения двух вводных абзацев.

- Названия глав: четко отформатированы как элементы <h2> для удобства чтения.

## Формат вывода (JSON):

{

"title": "<Сгенерированное название отчета>",

"introduction": "<Сгенерированное введение>",

"chapter_1": "<h2>Глава 1: [Название]</h2>",

"chapter_2": "<h2>Глава 2: [Название]</h2>",

"chapter_3": "<h2>Глава 3: [Название]</h2>",

"chapter_4": "<h2>Глава 4: [Название]</h2>",

"chapter_5": "<h2>Глава 5: [Название]</h2>"

}

## Пример:

{

"title": "<h1 style='text-align: center; color: #00366D;'>Искусственный интеллект в современном бизнесе: комплексный анализ автоматизации</h1>",

"introduction": "<div style='background-color: #f4f4f4; padding: 20px; font-size: 16px; line-height: 1.6; color: #333;'><h2>Введение</h2><p>Автоматизация на основе искусственного интеллекта стала ключевым фактором трансформации современного бизнеса...</p><hr><p>Данный отчет исследует пять критических аспектов внедрения ИИ...</p></div>",

"chapter_1": "<h2 style='text-align: center; color: #00366D;'>Глава 1: Роль ИИ в автоматизации</h2>"

}

Structured Output Parser Schema "Title, Intro, Chapters":

{

  "title": "<Generated Report Title>",

  "introduction": "<Generated Introduction>",

  "chapter_1": "<h2>Chapter 1: [Title]</h2>",

  "chapter_2": "<h2>Chapter 2: [Title]</h2>", 

  "chapter_3": "<h2>Chapter 3: [Title]</h2>",

  "chapter_4": "<h2>Chapter 4: [Title]</h2>",

  "chapter_5": "<h2>Chapter 5: [Title]</h2>"

}

ЧТО ТАКОЕ Structured Output Parser Schema: Здесь схема обеспечивает получение всех компонентов структуры отчета в строго определенном формате. Без неё AI мог бы вернуть всё в одном тексте или в произвольном порядке.

ЗАЧЕМ ЭТО НУЖНО ЗДЕСЬ:

  1. Разделяет заголовок, введение и главы на отдельные поля
  2. Позволяет обращаться к каждому элементу: $json.title, $json.introduction, $json.chapter_1
  3. Google Sheets нода может сохранить каждый элемент в свой столбец
  4. Гарантирует HTML-форматирование глав (обязательные теги <h2>)

КАК ЭТО РАБОТАЕТ:

  • AI получает схему и обязан вернуть JSON с 7 полями
  • Каждое поле содержит готовый HTML-код
  • Send Intro может взять $json.output.title и сохранить в столбец "Заголовок"
1.4 Сохранение базовой структуры - Send Intro

Назначение: Сохраняет структуру отчета в Google Sheets

Настройки Google Sheets:

  • Operation: Append
  • Document ID: ID вашей таблицы "Глубокий анализ" (либо просто выберите из списка)
  • Sheet Name: Лист1
  • Columns Mapping:
    • Тема анализа: {{ $('On form submission').item.json['Search Topic'] }}
    • Заголовок: {{ $json.output.title }}
    • Вступление: {{ $json.output.introduction }}
    • 1 Глава: {{ $json.output.chapter_1 }}
    • 2 Глава: {{ $json.output.chapter_2 }}
    • 3 Глава: {{ $json.output.chapter_3 }}
    • 4 Глава: {{ $json.output.chapter_4 }}
    • 5 Глава: {{ $json.output.chapter_5 }}
1.5 Подготовка данных для разделения

Последовательность: Set Topics → Split Out → Split Out1 → Merge1 → Merge → Switch

Set Topics:

{

  "assignments": [

    {

      "name": "topics",

      "value": "['topic_1','topic_2','topic_3','topic_4','topic_5']",

      "type": "array"

    }

  ]

}

Назначение: Создает массив названий тем для последующего разделения.

Split Out:

  • Field to Split Out: output
  • Назначение: Разделяет результат Plan Topics на отдельные элементы.

Split Out1:

  • Field to Split Out: topics
  • Назначение: Разделяет массив ['topic_1','topic_2','topic_3','topic_4','topic_5'] на 5 отдельных элементов.

Merge1:

  • Mode: Combine
  • Combine By: Combine by Position
  • Назначение: Объединяет потоки Split Out и Split Out1 по позиции.

Merge:

  • Mode: Combine
  • Combine By: Combine All
  • Назначение: Финальное объединение перед Switch, включает данные от Send Intro.

Switch:

  • 5 условий для маршрутизации:
    1. {{ $json.topics }} equals topic_1 → Output 0
    2. {{ $json.topics }} equals topic_2 → Output 1
    3. {{ $json.topics }} equals topic_3 → Output 2
    4. {{ $json.topics }} equals topic_4 → Output 3
    5. {{ $json.topics }} equals topic_5 → Output 4
РАЗДЕЛ 2: ИССЛЕДОВАТЕЛЬСКИЕ ПОТОКИ (Желтые блоки)
ПОТОК ТЕМЫ 1 (детальный разбор):
2.1 Веб-поиск - Tavily

Назначение: Ищет информацию по первой теме через Tavily API

HTTP Request настройки:

  • Method: POST
  • URL: https://api.tavily.com/search
  • Authentication: Header Auth
  • Нажмите Create new credentials
  • Header Name: Authorization
  • Header Value: Bearer ваш_tavily_api_ключ

Апи ключ возьмите отсюда

https://app.tavily.com/home 

JSON Body:

{

  "query": "{{ $json.output }}",

  "topic": "general", 

  "search_depth": "advanced",

  "chunks_per_source": 3,

  "max_results": 5

}

Объяснение параметров:

  • search_depth: "advanced" - глубокий поиск с анализом контента
  • chunks_per_source: 3 - по 3 фрагмента текста с каждого источника
  • max_results: 5 - максимум 5 источников
2.2 Разделение результатов - Split Out2

Назначение: Разделяет результаты Tavily на отдельные источники

Настройки:

  • Field to Split Out: results
  • Результат: Каждый источник становится отдельным элементом для обработки

2.3 Нумерация источников - Code

Назначение: Присваивает номера 1-5 источникам первой темы

JavaScript код:

// Create separate items for each URL with a number

return items.map((item, index) => {

  return {

    json: {

      number: index + 1,

      url: item.json.url,

      numberedUrl: `${index + 1}. ${item.json.url}`

    }

  };

});

Объяснение:

  • index + 1 создает номера 1, 2, 3, 4, 5
  • numberedUrl создает строки вида "1. https://example.com"
  • Это нужно для правильных ссылок в отчете
2.4 Генерация контента - Writer

Назначение: AI создает HTML-отчет на основе найденной информации

Подключенные компоненты:

  • OpenAI Chat Model2 (gpt-4o-mini)

Системный промпт Writer:

# Обзор

Вы — продвинутый помощник-исследователь с искусственным интеллектом, специализирующийся на написании профессиональных HTML-отчетов на основе предоставленного заголовка, исследования, источника и заданного руководства по стилю. Ваша задача — создать полностью отформатированный HTML-отчет, который будет визуально привлекательным и структурированным в соответствии с профессиональными стандартами письма.

## Руководство по созданию отчетов

1. Соблюдение руководства по стилю

- Отчет должен строго соответствовать предоставленному руководству по стилю HTML, обеспечивая единообразие стиля, цветов, шрифтов, отступов и макета.

2. Структура и форматирование

- Отчет должен быть хорошо структурирован и отформатирован в профессиональном HTML.

- Заголовок (<h1>) — предоставляется как «Заголовок»

- Основной текст — полностью отформатированный исследовательский контент с правильным разделением (<h2>, <h3>, <p>).

- Каждый раздел должен быть заключен в div, стилизованный в соответствии с предоставленным руководством, чтобы обеспечить единообразие.

- Используйте <p> для абзацев, <ul>/<ol> для списков и <hr> для разделения разделов, когда это необходимо.

- Заголовки «Обзор» или «Заключение» не нужны, просто выведите полный отчет.

- Горизонтальная линия (<hr>) должна использоваться для разделения разделов для лучшей визуальной ясности.

3. Контент, основанный на исследованиях

- Логически обобщайте информацию и гарантируйте, что отчет хорошо изучен, основан на фактах и ​​написан профессионально.

- Используйте информативное написание. Предоставьте как можно больше подробностей.

- Поддерживайте логическую последовательность идей, эффективно суммируя ключевые моменты.

4. Атрибуция источника и кликабельные ссылки

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

- Ссылки на источники должны быть встроены в текст с помощью: <a href="SOURCE_URL" target="_blank">[1]</a>

- Не включайте раздел «Ссылки» — вместо этого все источники должны быть встроены в контент.

## Пример структуры вывода:

<!DOCTYPE html>

<html>

<head>

    <title>Research Report: [Title]</title>

    <style>

        body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; }

        h1, h2, h3 { color: #333; }

        .report-section { background-color: #f4f4f4; padding: 20px; font-size: 16px; line-height: 1.6; color: #333; margin-bottom: 10px; }

    </style>

</head>

<body>

    <div class="report-section">

        <h1>Research Report: [Title]</h1>

    </div>

    <div class="report-section">

        <h2>Introduction</h2>

        <p>Контент исследования с встроенными ссылками <a href="https://example.com" target="_blank">[1]</a>.</p>

        <hr>

        <p>Дополнительный анализ с ссылкой <a href="https://example2.com" target="_blank">[2]</a>.</p>

    </div>

</body>

</html>

Входные данные для Writer:

Title: {{ $('Split Out2').item.json.title }}

Research: {{ $('Split Out2').item.json.content }}

Source: {{ $json.numberedUrl }}

Style Guide Example: {{ $('Switch').item.json['1 Глава'] }}

2.5 Агрегация данных - Aggregate & Aggregate1

Aggregate (для контента):

  • Field to Aggregate: output
  • Назначение: Объединяет все HTML-отчеты от Writer в один массив

Aggregate1 (для источников):

  • Field to Aggregate: numberedUrl
  • Назначение: Объединяет все пронумерованные URL в один массив

Зачем нужна агрегация:

  • Writer обрабатывает каждый источник отдельно (5 раз)
  • Aggregate объединяет 5 отдельных HTML-кусков в один массив
  • Это позволяет сохранить весь контент темы как единое целое
2.6 Объединение потоков - Merge3

Назначение: Синхронизирует агрегированный контент и источники

Настройки:

  • Mode: Combine
  • Combine By: Combine by Position
  • Результат: Один элемент с полным контентом и всеми источниками темы
2.7 Извлечение структуры - HTML

Назначение: Извлекает названия разделов из сгенерированного HTML

Настройки:

  • Operation: Extract HTML Content
  • Data Property Name: output
  • CSS Selector: title
  • Extraction Values:
    • Key: section
    • CSS Selector: title

Зачем это нужно: Для автоматического создания оглавления нужно знать, какие разделы создал AI в отчете.

2.8 Объединение разделов - Combine

Назначение: Собирает все названия разделов в один массив

JavaScript код:

return [{

  sections: $input.all().map(item => item.json.section)

}];

2.9 Сохранение результатов - Google Sheets1

Назначение: Сохраняет все данные первой темы в таблицу

Настройки:

  • Operation: Update
  • Document ID: ID таблицы "Глубокий анализ"
  • Matching Column: Тема анализа
  • Columns Mapping:
    • 1 Тема: Источники: {{ $('Merge3').first().json.numberedUrl.join("\n") }}
    • 1 Тема: Разделы: {{ $json.sections.join("\n") }}
    • 1 Тема: контент: {{ $('Merge3').first().json.output.join("\n \n") }}
ПОТОКИ ТЕМ 2-5 (краткое описание):

Идентичная структура с темой 1, отличия только в:

Тема 2: Tavily1 → Split Out3 → Code1 → Writer1 → Aggregate2 → Aggregate3 → Merge4 → HTML1 → Combine1 → Google Sheets2

  • Code1: источники 6-10 (index + 6)
  • Writer1: использует стиль из {{ $('Switch').item.json['2 Глава'] }}

Тема 3: Tavily2 → Split Out4 → Code2 → Writer2 → Aggregate4 → Aggregate5 → Merge5 → HTML2 → Combine2 → Google Sheets3

  • Code2: источники 11-15 (index + 11)

Тема 4: Tavily3 → Split Out5 → Code3 → Writer3 → Aggregate6 → Aggregate7 → Merge6 → HTML3 → Combine3 → Google Sheets4

  • Code3: источники 16-20 (index + 16)

Тема 5: Tavily4 → Split Out6 → Code4 → Writer4 → Aggregate8 → Aggregate9 → Merge7 → HTML4 → Combine4 → Google Sheets5

  • Code4: источники 21-25 (index + 21)
РАЗДЕЛ 3: ФИНАЛИЗАЦИЯ (Зеленый блок)

3.1 Объединение всех результатов - Merge2

Назначение: Собирает результаты всех 5 тем в одном месте

Настройки:

  • Mode: Combine
  • Number of Inputs: 5
  • Combine By: Combine All
  • Входы: Google Sheets1, Google Sheets2, Google Sheets3, Google Sheets4, Google Sheets5
3.2 Ограничение данных - Limit

Назначение: Оптимизирует обработку данных

Настройки:

  • Max Items: 1
  • Зачем: Берет только первый элемент для дальнейшей обработки
3.3 Получение источников - Get Sources

Назначение: Извлекает все источники из Google Sheets

Настройки Google Sheets:

  • Operation: Read
  • Document ID: ID таблицы "Глубокий анализ"
  • Filters: Тема анализа equals {{ $('On form submission').first().json['Search Topic'] }}

3.4 Генерация списка источников - Sources

Назначение: AI создает HTML-список всех 25 источников

Подключенные компоненты:

  • OpenAI Chat Model7 (gpt-4o-mini)

Системный промпт Sources:

# Обзор

Вы — помощник ИИ, специализирующийся на создании хорошо отформатированных разделов исходного кода HTML для исследовательских отчетов. Вам будет предоставлен список источников, каждому из которых присвоен номер. Ваша задача — создать раздел «Источники» в формате HTML.

## Правила форматирования:

- Заголовок раздела должен быть <h2>Источники</h2>.

- Используйте неупорядоченный список (<ul>) для отображения источников.

- Каждый источник должен быть в формате:

<li><a href="SOURCE_URL" target="_blank">[NUMBER] Название источника</a></li>

- Необходимо сохранить исходную нумерацию источников.

## Пример структуры вывода:

<div class="sources-section">

    <h2>Источники</h2>

    <ul>

        <li><a href="https://example1.com" target="_blank">[1] Research on AI Development</a></li>

        <li><a href="https://example2.com" target="_blank">[2] The Impact of Automation</a></li>

        <li><a href="https://example3.com" target="_blank">[3] Machine Learning Trends</a></li>

    </ul>

</div>

Входные данные:

Sources:

{{ $json['1 Тема: Источники'] }}

{{ $json['2 Тема: Источники'] }}

{{ $json['3 Тема: Источники'] }}

{{ $json['4 Тема: Источники'] }}

{{ $json['5 Тема: Источники'] }}

3.5 Сохранение источников - Send Sources

Назначение: Сохраняет готовый список источников в таблицу

Настройки Google Sheets:

  • Operation: Update
  • Matching Column: Тема анализа
  • Column: Источники: {{ $json.output }}
3.6 Получение всех данных - Get All Content

Назначение: Извлекает полную структуру отчета для создания оглавления

Настройки: Идентичны Get Sources, получает все столбцы таблицы.

3.7 Создание оглавления - Table of Contents

Назначение: AI генерирует структурированное оглавление

Подключенные компоненты:

  • OpenAI Chat Model8 (gpt-4o-mini)

Системный промпт Table of Contents:

# Обзор

Вы — помощник ИИ, которому поручено создать структурированное оглавление (ToC) в профессиональном HTML-форматировании для исследовательского отчета. Ваш вывод должен соответствовать предоставленному руководству по стилю и быть чистым, читаемым и хорошо структурированным.

## Рекомендации

1) Форматируйте главы как элементы <h2>

- Каждая глава должна быть отдельным заголовком <h2>.

2) Форматируйте разделы как упорядоченный список (<ol>)

- Каждый раздел в главе должен быть элементом списка (<li>) внутри <ol>.

- Поддерживайте четкую иерархию и отступы для удобства чтения.

3) Применяйте данное руководство по стилю

- Оберните оглавление в <div> с тем же отступом, размером шрифта и цветом, что и руководство по стилю.

- Добавьте горизонтальную линию (<hr>) для разделения.

## Пример вывода:

<div style="background-color: #f4f4f4; padding: 20px; font-size: 16px; line-height: 1.6; color: #333;">

    <h2>Оглавление</h2>

    <hr>

    <ol>

        <li>

            <h2>Глава 1: Введение</h2>

            <ol>

                <li>Контекст и важность</li>

                <li>Цели исследования</li>

            </ol>

        </li>

        <li>

            <h2>Глава 2: Основные концепции</h2>

            <ol>

                <li>Теоретические основы</li>

                <li>Практические применения</li>

            </ol>

        </li>

    </ol>

</div>

Входные данные Table of Contents:

Chapter 1: {{ $('Plan Topics').first().json.output.topic_1 }}

Sections: {{ $json['1 Тема: Разделы'] }}

Chapter 2: {{ $('Plan Topics').first().json.output.topic_2 }}

Sections: {{ $json['2 Тема: Разделы'] }}

Chapter 3: {{ $('Plan Topics').first().json.output.topic_3 }}

Sections: {{ $json['3 Тема: Разделы'] }}

Chapter 4: {{ $('Plan Topics').first().json.output.topic_4 }}

Sections: {{ $json['4 Тема: Разделы'] }}

Chapter 5: {{ $('Plan Topics').first().json.output.topic_5 }}

Sections: {{ $json['5 Тема: Разделы'] }}

Style Guide: {{ $json['Вступление'] }}

3.8 Сохранение оглавления - Send ToC

Назначение: Сохраняет готовое оглавление в таблицу

Настройки Google Sheets:

  • Operation: Update
  • Document ID: ID таблицы "Глубокий анализ"
  • Matching Column: Тема анализа
  • Column: ToC: {{ $json.output }}
3.9 Финальное получение данных - Get All Content1

Назначение: Извлекает полную финальную версию всех данных отчета

Настройки: Идентичны предыдущим Google Sheets read операциям, получает все заполненные столбцы.

3.10 Объединение в единый документ - Combine Content

Назначение: JavaScript объединяет все части отчета в единый HTML-документ

JavaScript код:

// N8N Code Node to combine multiple fields into a single field with new lines

// Access the incoming data

const item = items[0];

// Create a new field called "CombinedContent" that joins all fields with newlines

const combinedContent = [

  item.json.Заголовок || '',

  item.json.Вступление || '',

  item.json.ToC || '',

  item.json['1 Глава'] || '',

  item.json['1 Тема: контент'] || '',

  item.json['2 Глава'] || '',

  item.json['2 Тема: контент'] || '',

  item.json['3 Глава'] || '',

  item.json['3 Тема: контент'] || '',

  item.json['4 Глава'] || '',

  item.json['4 Тема: контент'] || '',

  item.json['5 Глава'] || '',

  item.json['5 Тема: контент'] || '',

  item.json.Источники || ''

].join('\n\n');

// Add the combined content to the item

item.json.CombinedContent = combinedContent;

// Return the modified item

return [item];

Что происходит:

  • Берет все части отчета из Google Sheets
  • Объединяет их в правильном порядке: заголовок → введение → оглавление → глава 1 → контент 1 → глава 2 → контент 2 → и т.д. → источники
  • Создает поле CombinedContent с полным HTML-документом
3.11 Генерация PDF - Generate PDF

Назначение: Преобразует HTML в профессиональный PDF документ

HTTP Request настройки:

  • Method: POST
  • URL: https://rest-us.apitemplate.io/v2/create-pdf-from-html
  • Authentication: APITemplate.io account (заранее предусмотренный в n8n)

Апи ключ возьмите здесь https://app.apitemplate.io/manage-api/ 

Query Parameters:

  • filename: {{ $('On form submission').first().json['Search Topic'] }}.pdf

JSON Body:

{

  "body": "{{$json["CombinedContent"].replace(/"/g, '\\"').replace(/\n/g, '\\n')}}",

  "css": "<style>.bg{background: red};</style>",

  "data": {

    "name": "This is a title"

  },

  "settings": {

    "paper_size": "A4",

    "orientation": "1",

    "header_font_size": "9px",

    "margin_top": "40",

    "margin_right": "10",

    "margin_bottom": "40", 

    "margin_left": "10",

    "print_background": "1",

    "displayHeaderFooter": true,

    "custom_header": "<style>#header, #footer { padding: 0 !important; }</style>\n<table style=\"width: 100%; padding: 0px 5px;margin: 0px!important;font-size: 8px\">\n  <tr>\n    <td style=\"text-align:left; width:30%!important;\"><span class=\"date\"></span></td>\n    <td style=\"text-align:center; width:30%!important;\"><span class=\"pageNumber\"></span></td>\n    <td style=\"text-align:right; width:30%!important;\"><span class=\"totalPages\"></span></td>\n  </tr>\n</table>",

    "custom_footer": "<style>#header, #footer { padding: 0 !important; }</style>\n<table style=\"width: 100%; padding: 0px 5px;margin: 0px!important;font-size: 8px\">\n  <tr>\n    <td style=\"text-align:left; width:30%!important;\"><span class=\"date\"></span></td>\n    <td style=\"text-align:center; width:30%!important;\"><span class=\"pageNumber\"></span></td>\n    <td style=\"text-align:right; width:30%!important;\"><span class=\"totalPages\"></span></td>\n  </tr>\n</table>"

  }

}

Объяснение настроек PDF:

  • paper_size: "A4" - формат А4
  • orientation: "1" - портретная ориентация
  • margin_* - отступы в миллиметрах
  • displayHeaderFooter: true - включает колонтитулы
  • custom_header/footer - HTML код для колонтитулов с номерами страниц

Результат: APITemplate.io возвращает объект с download_url для скачивания готового PDF.

3.12 Загрузка PDF файла - Download PDF

Назначение: Скачивает готовый PDF файл по полученной ссылке

HTTP Request настройки:

  • Method: GET
  • URL: {{ $json.download_url }}
  • Options: Download Binary Data включен

Что происходит:

  • Получает download_url из ответа Generate PDF
  • Скачивает PDF файл как бинарные данные
  • Подготавливает файл для прикрепления к email
3.13 Отправка готового отчета - Send Report

Назначение: Отправляет PDF отчет пользователю на email

Gmail настройки:

  • Send To: {{ $('On form submission').first().json.Email }}
  • Subject: Deep Research Report: {{ $('On form submission').first().json['Search Topic'] }}
  • Email Type: Text
  • Message:

Your Deep Research Report on {{ $('On form submission').first().json['Search Topic'] }} is complete.

You can find it attached below.

Attachments:

  • Append Attribution: false
  • Attachments Binary: Включить бинарные данные из Download PDF

Результат: Пользователь получает email с прикрепленным PDF отчетом на 15-25 страниц с полным исследованием по его теме.

Полная схема подключений OpenAI моделей

8 OpenAI Chat Model нод используют модель gpt-4o-mini:

  1. OpenAI Chat ModelPlan Topics (разбивка на темы)
  2. OpenAI Chat Model1Intro (структура отчета)
  3. OpenAI Chat Model2Writer (контент темы 1)
  4. OpenAI Chat Model3Writer1 (контент темы 2)
  5. OpenAI Chat Model4Writer2 (контент темы 3)
  6. OpenAI Chat Model5Writer3 (контент темы 4)
  7. OpenAI Chat Model6Writer4 (контент темы 5)
  8. OpenAI Chat Model7Sources (список источников)
  9. OpenAI Chat Model8Table of Contents (оглавление)
Структура Google Sheets таблицы:

Обязательные столбцы:

  • Тема анализа - основная тема (ключевое поле)
  • Заголовок - название отчета
  • Вступление - введение
  • 1 Глава, 2 Глава, 3 Глава, 4 Глава, 5 Глава - заголовки глав
  • 1 Тема: Источники, 1 Тема: Разделы, 1 Тема: контент - данные темы 1
  • 2 Тема: Источники, 2 Тема: Разделы, 2 Тема: контент - данные темы 2
  • 3 Тема: Источники, 3 Тема: Разделы, 3 Тема: контент - данные темы 3
  • 4 Тема: Источники, 4 Тема: Разделы, 4 Тема: контент - данные темы 4
  • 5 Тема: Источники, 5 Тема: Разделы, 5 Тема: контент - данные темы 5
  • Источники - общий список всех источников
  • ToC - оглавление
Результат работы автоматизации
Что получает пользователь:
  • PDF отчет на 15-25 страниц с профессиональным оформлением
  • Структурированное исследование по 5 аспектам темы
  • 25 пронумерованных источников с активными ссылками
  • Оглавление с иерархической структурой
  • HTML форматирование с единым стилем
  • Время доставки: 5-10 минут после отправки формы
Характеристики качества:
  • Глубина исследования: 5 тем × 5 источников = 25 источников
  • Объем контента: ~15,000-20,000 слов
  • Профессиональное оформление: единый стиль, колонтитулы, нумерация страниц
  • Автоматическое цитирование: встроенные ссылки на источники
  • Структурированность: четкая иерархия разделов и подразделов

Готово. Данная автоматизация превращает любую тему в профессиональный исследовательский отчет полностью автоматически за 5-10 минут.

JSON-файл и инструкцию в видеоформате вы всегда можете получить, вступив в наш уникальный Клуб автоматизаций.