Автоматизация глубокого исследования с 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 и т.д."
ЗАЧЕМ ЭТО НУЖНО ЗДЕСЬ:
- Гарантирует получение именно 5 тем (не 3, не 7)
- Позволяет обращаться к каждой теме через $json.topic_1, $json.topic_2
- Switch нода может точно определить, какую тему направить куда
- Исключает ошибки парсинга данных
КАК ЭТО РАБОТАЕТ:
- 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 мог бы вернуть всё в одном тексте или в произвольном порядке.
ЗАЧЕМ ЭТО НУЖНО ЗДЕСЬ:
- Разделяет заголовок, введение и главы на отдельные поля
- Позволяет обращаться к каждому элементу: $json.title, $json.introduction, $json.chapter_1
- Google Sheets нода может сохранить каждый элемент в свой столбец
- Гарантирует 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 условий для маршрутизации:
- {{ $json.topics }} equals topic_1 → Output 0
- {{ $json.topics }} equals topic_2 → Output 1
- {{ $json.topics }} equals topic_3 → Output 2
- {{ $json.topics }} equals topic_4 → Output 3
- {{ $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_ключ
Апи ключ возьмите отсюда

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:
- OpenAI Chat Model → Plan Topics (разбивка на темы)
- OpenAI Chat Model1 → Intro (структура отчета)
- OpenAI Chat Model2 → Writer (контент темы 1)
- OpenAI Chat Model3 → Writer1 (контент темы 2)
- OpenAI Chat Model4 → Writer2 (контент темы 3)
- OpenAI Chat Model5 → Writer3 (контент темы 4)
- OpenAI Chat Model6 → Writer4 (контент темы 5)
- OpenAI Chat Model7 → Sources (список источников)
- OpenAI Chat Model8 → Table 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-файл и инструкцию в видеоформате вы всегда можете получить, вступив в наш уникальный Клуб автоматизаций.