

Конвейер от исследования к презентации: Tavily, LLM, Slides API (2026)
Конвейер от исследования к презентации принимает тему на вход и возвращает готовую презентацию с источниками. API поиска (Tavily или Exa) собирает 10–20 источников, LLM пишет краткий доклад на 12 слайдов с пронумерованными цитатами, а API 2Slides превращает доклад в презентацию: POST /api/v1/slides/generate для редактируемого PPTX по 10 кредитов за страницу (120 кредитов, около $0.30, за 12 слайдов) или create-pdf-slides для слайдов с дизайном в виде изображений по 10 + 100 кредитов за страницу. Это подходит для консалтинговых команд, аналитиков и исследовательских отделов, которые еженедельно выпускают одинаковые презентации.
Основные выводы
- Презентация Fast PPT на 12 слайдов стоит 120 кредитов, около $0.30 при покупке пакета за $5; версия с дизайном в виде изображений стоит 1,210 кредитов, около $3.03.
- Конвейер состоит из четырёх вызовов: один вызов API поиска, один вызов LLM,
GET /api/v1/themes/search, затемPOST /api/v1/slides/generate. - Каждый ответ 2Slides оборачивается в
{ success, data: { jobId, status, downloadUrl } }, поэтому один парсер обрабатывает и отправку, и опрос статуса. - Лимит запросов — 6 запросов в минуту на ключ, а презентация Fast PPT возвращается примерно за 30 секунд в синхронном режиме.
- Цитаты сохраняются только если в подсказке LLM принудительно создаётся нумерованный список источников и запрещается придумывать цифры; генератор презентации форматирует контент, но не проверяет факты.
Для кого это
Вы управляете консалтинговой практикой, исследовательским отделом или контент-операцией, и кто-то каждые несколько дней просит «быструю презентацию по европейскому рынку переработки аккумуляторов». Исследование занимает час, презентация — ещё два, и это одни и те же 12 слайдов: резюме, размер рынка, игроки, тренды, риски, рекомендации, источники. Если у вас уже есть инстанс n8n или планировщик на Python, этот рецепт не требует новой инфраструктуры.
Не используйте этот рецепт для конечных клиентских материалов, требующих индивидуального анализа. Он создаёт исходный вариант с источниками за минуты; человек всё равно читает источники и решает, что сказать.
Обзор рабочего процесса
| Шаг | Инструмент | Что происходит | 2Slides endpoint / кредиты |
|---|---|---|---|
| 1. Триггер | n8n Schedule или Form, cron, или аргумент CLI | В конвейер поступает строка с темой | нет |
| 2. Поиск | Tavily /search или Exa /search | 10–20 URL с заголовками и фрагментами текста | нет |
| 3. Краткий доклад | OpenAI или Claude | 12-слайдовый план, каждая цифра с пометкой [n], плюс список источников | нет |
| 4. Тема | GET /api/v1/themes/search?query=consulting | Возвращает кандидатов themeId | бесплатно, 6 запросов/мин |
| 5. Презентация | POST /api/v1/slides/generate (или create-pdf-slides) | Краткий доклад превращается в PPTX (или PDF + изображения страниц) | 10 кредитов/страница (или 10 + 100/страница) |
| 6. Опрос | GET /api/v1/jobs/{jobId} каждые 5–10 с | Ожидание status: "success" | бесплатно, 10 запросов/мин |
| 7. Доставка | Загрузка в Google Drive, сообщение в Slack | Команда получает ссылку и файл с источниками | нет |
Шаг 1: Соберите 10–20 источников с помощью API для исследований
Презентация хороша ровно настолько, насколько хороши источники, поэтому уделите этому внимание. Tavily возвращает результаты с извлечённым содержимым страниц, что нужно LLM для цитирования, а не для воспоминания. Exa делает то же самое с семантическим поиском. Запрашивайте 10–20 результатов и ограничивайте последние 12 месяцев, если тема чувствительна ко времени.
Сохраняйте каждый результат как { id, url, title, published, snippet } и нумеруйте id с 1. Эти id станут маркерами цитат на слайдах, поэтому сохраняйте один и тот же массив на весь запуск.
curl -s https://api.tavily.com/search \
-H "Content-Type: application/json" \
-d '{
"api_key": "'"$TAVILY_API_KEY"'",
"query": "European battery recycling market size 2026",
"search_depth": "advanced",
"max_results": 15,
"include_raw_content": false
}'Шаг 2: Напишите краткий доклад на 12 слайдов с цитатами (OpenAI или Claude)
Подсказка выполняет три задачи: фиксирует структуру слайдов, заставляет каждую цифру иметь id источника и запрещает цифры, отсутствующие в источниках. Запрашивайте обычный текст, а не JSON, потому что текст сразу идёт в userInput вызова 2Slides.
Структура, подходящая для большинства консалтинговых докладов, — 12 слайдов: 1 заголовок, 2 резюме, 3 размер рынка, 4–5 ключевые игроки, 6–7 тренды, 8–9 риски, 10–11 рекомендации, 12 источники. По 3–5 пунктов на слайд; шаблоны Fast PPT рассчитаны на такую плотность.
Вы — аналитик-исследователь. Используя ТОЛЬКО пронумерованные источники ниже, напишите 12-слайдовый
краткий доклад по теме: {topic}.
Слайды: 1 Заголовок, 2 Резюме, 3 Размер рынка, 4-5 Ключевые игроки, 6-7 Тренды,
8-9 Риски, 10-11 Рекомендации, 12 Источники.
Правила:
- Каждое число, процент или дата должны заканчиваться id источника в скобках, например "EUR 4.2B к 2030 [3]".
- Если в источниках нет цифры, напишите "надежных данных нет" вместо оценки.
- Слайд 12 перечисляет каждый цитируемый id как "[n] Заголовок, Издатель, URL".
- 3–5 пунктов на слайд, каждый не более 20 слов. Начинайте каждый слайд с "Слайд N: <заголовок>".
Источники:
{sources}Шаг 3: Выберите тему в стиле консалтинга
Презентации Fast PPT строятся на дизайнерских шаблонах, а themeId определяет внешний вид. Один раз найдите в библиотеке «consulting» или «corporate», выберите один или два id и зашивайте их в конвейер. Поиск при каждом запуске тратит лимит запросов.
curl -s "https://2slides.com/api/v1/themes/search?query=consulting&limit=5" \
-H "Authorization: Bearer $SLIDES_API_KEY"Ответ содержит список тем с themeId, названием и предпросмотром. Для визуального просмотра используйте Templates Hub с теми же 1500+ шаблонами.

Шаг 4: Сгенерируйте презентацию с помощью API 2Slides
Два варианта. Для редактируемого PPTX, который консультант может доработать в PowerPoint, вызывайте generate. По умолчанию синхронный режим, поэтому 12-слайдовая презентация возвращается с downloadUrl за один вызов примерно за 30 секунд. При пакетной обработке нескольких тем передайте mode: "async" и опрашивайте статус.
curl -s -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Slide 1: European Battery Recycling Market 2026\n...\nSlide 12: Sources\n[1] ...",
"themeId": "THEME_ID_FROM_SEARCH",
"responseLanguage": "English",
"mode": "async"
}'Ответ:
{ "success": true, "data": { "jobId": "job_9f3a...", "status": "pending" } }Для премиальной версии с дизайном в виде изображений (PDF плюс изображения страниц) вызывайте create-pdf-slides с тем же докладом. Установите page: 12 для соответствия докладу или page: 0, чтобы планировщик выбрал сам.
curl -s -X POST https://2slides.com/api/v1/slides/create-pdf-slides \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Slide 1: European Battery Recycling Market 2026\n...",
"designStyle": "consulting deck, navy and white, dense data slides, one chart per slide",
"aspectRatio": "16:9",
"resolution": "2K",
"page": 12,
"contentDetail": "standard",
"responseLanguage": "English"
}'Оба варианта возвращают одинаковую обёртку. Опрашивайте GET https://2slides.com/api/v1/jobs/{jobId} каждые 5–10 секунд, пока data.status не станет success или failed, затем скачивайте по data.downloadUrl.
Шаг 5: Реализация A, рабочий процесс n8n (Tavily n8n презентация)
n8n — самый быстрый способ сделать это запланированной задачей Tavily n8n, которую могут запускать не инженеры из формы. Достаточно семи стандартных узлов.
- Schedule Trigger (еженедельно) или Form Trigger с одним полем «topic».
- HTTP Request к Tavily
/searchс темой,max_results: 15. - Узел OpenAI (или HTTP Request к Claude) с подсказкой из Шага 2; передайте пронумерованные источники в сообщении.
- Кодовый узел, который собирает
{ userInput, themeId, responseLanguage: "English", mode: "async" }из текста LLM. - HTTP Request к
POST https://2slides.com/api/v1/slides/generateс заголовкомAuthorization: Bearer {{ $env.SLIDES_API_KEY }}. Ключ храните в учётных данных n8n, не в теле узла. - Узел ожидания (10 секунд), затем HTTP Request к
GET /api/v1/jobs/{{ $json.data.jobId }}и IF узел:success— дальше,pendingилиprocessing— назад к ожиданию,failed— отправка ошибки в Slack. - HTTP Request (скачать
data.downloadUrlкак бинарный файл), затем загрузка в Google Drive и сообщение в Slack со ссылкой и темой.
Добавьте вторую загрузку в Google Drive для sources.json из Шага 1; проверяющий захочет видеть полные фрагменты, а не только слайд Источники. Учётные данные и обработка ошибок описаны в n8n + 2Slides: автоматизация рабочих процессов презентаций.
Шаг 6: Реализация B, один скрипт на Python
Для команды, предпочитающей cron, один Python-файл выполняет ту же работу. Эта версия использует Tavily и OpenAI; замените на Exa или Claude, изменив одну функцию.
import os, time, json, requests
TAVILY = os.environ["TAVILY_API_KEY"]
OPENAI = os.environ["OPENAI_API_KEY"]
SLIDES = os.environ["SLIDES_API_KEY"]
BASE = "https://2slides.com/api/v1"
H = {"Authorization": f"Bearer {SLIDES}", "Content-Type": "application/json"}
def search(topic, n=15):
r = requests.post("https://api.tavily.com/search", json={
"api_key": TAVILY, "query": topic, "search_depth": "advanced", "max_results": n})
r.raise_for_status()
return [{"id": i + 1, "url": s["url"], "title": s["title"], "snippet": s["content"]}
for i, s in enumerate(r.json()["results"])]
def write_brief(topic, sources):
src = "\n".join(f"[{s['id']}] {s['title']} | {s['url']}\n{s['snippet']}" for s in sources)
prompt = open("brief_prompt.txt").read().format(topic=topic, sources=src)
r = requests.post("https://api.openai.com/v1/chat/completions",
headers={"Authorization": f"Bearer {OPENAI}"},
json={"model": "gpt-4.1", "messages": [{"role": "user", "content": prompt}], "temperature": 0.2})
r.raise_for_status()
return r.json()["choices"][0]["message"]["content"]
def pick_theme(query="consulting"):
r = requests.get(f"{BASE}/themes/search", headers=H, params={"query": query, "limit": 5})
r.raise_for_status()
return r.json()["data"]["themes"][0]["themeId"]
def generate_deck(brief, theme_id, language="English"):
r = requests.post(f"{BASE}/slides/generate", headers=H, json={
"userInput": brief, "themeId": theme_id,
"responseLanguage": language, "mode": "async"})
r.raise_for_status()
body = r.json()
assert body["success"], body
return body["data"]["jobId"]
def wait_for(job_id, every=8, timeout=600):
start = time.time()
while time.time() - start < timeout:
d = requests.get(f"{BASE}/jobs/{job_id}", headers=H).json()["data"]
if d["status"] == "success":
return d["downloadUrl"]
if d["status"] == "failed":
raise RuntimeError(f"job {job_id} failed: {d}")
time.sleep(every)
raise TimeoutError(job_id)
if __name__ == "__main__":
topic = "European battery recycling market 2026"
sources = search(topic)
brief = write_brief(topic, sources)
url = wait_for(generate_deck(brief, pick_theme()))
slug = topic.lower().replace(" ", "-")
open(f"{slug}.pptx", "wb").write(requests.get(url).content)
json.dump({"topic": topic, "sources": sources, "brief": brief},
open(f"{slug}.sources.json", "w"), indent=2)Скрипт пишет два файла за запуск: PPTX и .sources.json с списком источников и текстом доклада. JSON — это аудиторский след, когда партнёр спрашивает, откуда взялась цифра на слайде 3. Для пакетной обработки держите отправки не более 6 в минуту.
Гигиена цитирования: каждая цифра имеет источник
Автоматическая генерация консалтинговых презентаций терпит неудачу в одном предсказуемом случае: уверенная цифра на слайде 3, которой нет в источниках. Генератор презентаций только форматирует полученное, поэтому контроль — на этапе LLM и проверке после него.
- Принудительно форматируйте маркеры. Каждая цифра заканчивается
[n]. Отклоняйте доклад (и перезапускайте LLM), если регулярное выражение найдёт число с "%", "B", "M" или год без скобочного id в той же строке. - Проверяйте id по массиву источников.
[7]в докладе при наличии только 6 источников означает, что модель придумала ссылку. Останавливайте запуск. - Сохраняйте слайд Источники. Слайд 12 перечисляет
[n] Заголовок, Издатель, URLдля каждого цитируемого id. Это первый слайд, который читает проверяющий. - Храните вспомогательный файл.
.sources.json(или загрузка в Drive в n8n) содержит фрагменты, которые видела модель, чтобы проверяющий мог сверить текст с исходным отрывком. - Предпочитайте «надежных данных нет». Консультанты могут честно заполнить пробел; им сложно обнаружить выдуманную цифру.
Альтернатива агенту: Claude Code или Codex с навыком 2Slides или MCP
Скриптовый конвейер подходит для запланированных, повторяющихся тем. Для одноразового глубокого анализа агентская сессия выполняет те же шаги интерактивно. Подключите размещённый MCP сервер 2Slides к Claude Code одной командой, затем попросите агента исследовать тему с помощью веб-поиска, написать доклад с цитатами, вызвать themes_search для темы в стиле консалтинга и вызвать slides_generate с докладом. MCP открывает 7 инструментов, включая jobs_get для опроса, на том же ключе и кредитах, что и REST API.
claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"
В Codex, Cursor или другом агенте, предпочитающем навыки, установите вместо этого Agent Skill с страницы навыков; он обучает тем же endpoint’ам и циклу отправки, опроса и скачивания. Смотрите Agent Skills vs MCP servers for presentations для сравнения и How to use Claude MCP to generate presentations для пошаговой настройки.

Как выглядит презентация консалтингового уровня
Галерея 2Slides содержит эталонные презентации, например «AI at Work 2025» от BCG, которая начинается с тезиса в одну строку и заканчивается методологией и источниками, с той же структурой, что и 12-слайдовый доклад выше. Эти галерейные презентации — реальные примеры, размещённые на 2Slides, а не вывод API. Используйте их как вдохновение для дизайна или передайте URL изображения страницы как referenceImageUrl в create-like-this, чтобы путь с дизайном изображений унаследовал тип, цвет и макет от эталона.


Для более широкого обзора инструментов, подходящих для консалтинга, смотрите Лучшие AI-инструменты для презентаций для консультантов. Страница API Gamma описывает похожий рецепт n8n + Tavily + OpenAI; их ключи требуют Pro-плана, тогда как ключи 2Slides работают на любом аккаунте. 2Slides — наш продукт, учитывайте это при сравнении.
Сколько это стоит
Кредиты — оплата по мере использования: $5 покупают 2,000 кредитов ($0.0025 за кредит), $80 — 40,000 кредитов ($0.002 за кредит). Плата за API поиска и LLM выставляется их провайдерами и не включена ниже.
| Объём | Fast PPT generate (12 слайдов = 120 кредитов) | Слайды с дизайном create-pdf-slides (12 слайдов в 2K = 1,210 кредитов) |
|---|---|---|
| 20 презентаций в месяц | 2,400 кредитов, около $6.00 (покрывается пакетом за $9.50) | 24,200 кредитов, около $48–$61 в зависимости от пакета |
| 500 презентаций в месяц | 60,000 кредитов, около $120 (два пакета по $80) | 605,000 кредитов, около $1,210 при $0.002 за кредит |
Новые аккаунты получают 500 бесплатных кредитов — это 4 полноценных тестовых презентации Fast PPT.
Fast PPT или слайды с дизайном для этого случая?
- Fast PPT
generateподходит, если консультант будет редактировать презентацию в PowerPoint, если объём большой (500 презентаций в месяц стоит около $120) и если устраивает шаблонный вид. Возвращается примерно за 30 секунд. create-pdf-slidesподходит, если презентация идёт клиенту в виде PDF только для чтения и нужен дизайнерский вид с одной идеей на слайд. Стоимость примерно в 10 раз выше за презентацию.create-like-thisподходит, если у фирмы есть фирменный стиль: передайте одно брендированное изображение слайда какreferenceImageUrl, и каждый запуск унаследует стиль.- Озвучка и MP4 доступны только для слайдов с дизайном, через
generate-narrationпо 210 кредитов за страницу. Полезно для внутреннего видео с исследовательским докладом, не для пути Fast PPT.
Распространённые ошибки
- Лимит запросов 6 в минуту. Планируйте пакетные запуски с интервалом 10–12 секунд; опрос использует отдельный лимит 10 запросов/мин для
jobs. - Ключ API в теле узла n8n или в браузерном скрипте. Храните ключ в учётных данных n8n или в переменной окружения на сервере, никогда не в клиентском коде.
- Попытка озвучить Fast PPT.
generate-narrationпринимает только задания отcreate-pdf-slidesилиcreate-like-this. Задания Fast PPT отклоняются. page: 0означает автоопределение, а не ноль страниц. Вcreate-pdf-slidesставьтеpage: 12, если доклад уже на 12 слайдов, илиpage: 0, чтобы планировщик выбрал.- Коды языков вместо названий.
responseLanguageпринимает"Spanish"или"German", а не"es"или"de". - Отправка 20 полных статей как
userInput. Сначала суммируйте; в 2Slides идёт краткий доклад, а не сырые источники.
Часто задаваемые вопросы
Сколько стоит конвейер от исследования к презентации за одну презентацию?
Около $0.30 за часть 2Slides для 12-слайдовой презентации Fast PPT (120 кредитов по $0.0025 за кредит) или около $3.03 за 12-слайдовую презентацию с дизайном в 2K (1,210 кредитов). Добавьте один вызов API поиска и один вызов LLM, оплата которых идёт провайдерам. При 500 презентациях в месяц путь Fast PPT стоит около $120 в кредитах.
Может ли конвейер выдавать презентацию на другом языке?
Да. Передайте responseLanguage как название языка, например "Spanish" или "Japanese"; поддерживается более 20 языков. Самый чистый вариант — написать доклад на английском и позволить 2Slides перевести при генерации, чтобы цитаты и URL источников совпадали во всех языковых версиях одной презентации.
Нужно ли использовать n8n или можно обойтись без workflow-инструмента?
n8n не обязателен. Скрипт на Python из Шага 6 делает то же самое из cron, а агентская сессия с MCP или навыком 2Slides выполняет это интерактивно. n8n оправдан, если не инженеры должны запускать задачи из формы и нужна доставка в Google Drive и Slack без написания интеграций.
Как остановить LLM от выдумывания статистики на слайдах?
Ограничьте подсказку и проверьте результат. Требуйте, чтобы каждая цифра заканчивалась [n] с id источника, заставьте модель писать «надежных данных нет» вместо оценки и отклоняйте доклад, если id превышают количество источников. Храните файл с источниками рядом с презентацией, чтобы проверяющий мог сверить каждый слайд с оригиналом.
Можно ли сделать стиль слайдов как у моей фирмы, а не шаблон?
Да, с помощью create-like-this. Передайте публичный URL одного из ваших брендированных слайдов как referenceImageUrl, и конвейер с дизайном изображений унаследует цвета, шрифты и макет. Стоимость такая же, как у create-pdf-slides: 10 кредитов на планирование плюс 100 кредитов за страницу в 2K. Для редактируемого PPTX выберите ближайшую тему из themes/search.
Следующие шаги
- Получите API-ключ на 2slides.com/api. Новые аккаунты начинают с 500 бесплатных кредитов — достаточно для 4 тестовых презентаций по 12 слайдов.
- Посмотрите, как другие команды используют те же endpoint’ы в статье хаба AI presentation API use cases by team.
- Если ваша команда работает в Claude Code или Codex, установите Agent Skill и сначала выполните конвейер интерактивно, прежде чем планировать; n8n + 2Slides описывает версию с workflow-инструментом.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free