

Автоматизация преобразования каталога продуктов в презентации для коммерческих предложений (2026)
Автоматизация преобразования каталога продуктов в презентации означает, что скрипт читает каждый SKU из вашего экспорта Shopify, PIM или CSV и дважды вызывает API 2Slides: POST /api/v1/slides/generate создаёт редактируемый PPTX sell sheet на основе фиксированного брендового шаблона, а POST /api/v1/slides/create-like-this создаёт презентацию запуска с дизайном в виде изображений, соответствующую ключевому визуалу вашей кампании. 6-страничный sell sheet стоит 60 кредитов (около $0.15); 8-страничная 2K презентация запуска стоит 810 кредитов (около $2.03). Это решение создано для e-commerce операций, продуктовых маркетологов и агентств, обслуживающих розничные бренды.
Основные выводы
- Одна строка каталога превращается в два комплекта презентаций: Fast PPT sell sheet по 10 кредитов за страницу и презентация запуска с дизайном из изображений по 10 кредитов за задание плюс 100 кредитов за страницу 2K.
- Каждый endpoint генерации ограничен 6 запросами в минуту на ключ, поэтому скрипт отправляет одно задание каждые 10 секунд и сохраняет
jobIdрядом с SKU. - Передача ключевого визуала бренда как
referenceImageUrlсохраняет единый стиль запуска для всех презентаций кампании, сaspectRatio"16:9" для покупателей и "4:5" для соцсетей. - Тот же запрос с
responseLanguage: "German"или"Japanese"создаёт презентации, готовые для ритейлеров на зарубежных рынках, без отдельного шага перевода. - 20 SKU в месяц (sell sheet плюс презентация запуска) стоят около 17,400 кредитов, что помещается в один пакет на $42.50.
Для кого это
Вы управляете e-commerce операциями или продуктовым маркетингом для бренда, маркетплейса или агентства, и каждый новый SKU или сезонный релиз означает, что кто-то вручную собирает тот же sell sheet, презентацию обзора линейки и презентацию запуска. Каталог уже содержит название, характеристики, спецификации, цену и главное изображение. Этот рецепт превращает каталог в источник правды и позволяет скрипту генерировать презентации продуктов из строк CSV по расписанию или при событии Shopify.
Не используйте этот рецепт, если вам нужен один уникальный комплект презентации в квартал. API окупается, когда одна и та же структура повторяется для десятков или сотен SKU.
Обзор рабочего процесса
| Шаг | Инструмент | Что происходит | Endpoint 2Slides / кредиты |
|---|---|---|---|
| 1 | Экспорт Shopify, PIM или CSV | Нормализация каждой строки SKU в простой текстовый бриф (название, характеристики, спецификации, цена, ритейлер, URL изображения) | Нет |
| 2 | Скрипт Node.js | Создание sell sheet для ритейлера в виде редактируемого PPTX из брендового шаблона | POST /api/v1/slides/generate, 10 кредитов/страница |
| 3 | Скрипт Node.js | Создание презентации запуска с дизайном из изображений, соответствующей ключевому визуалу кампании, 16:9 и 4:5 | POST /api/v1/slides/create-like-this, 10 + 100 кредитов/страница (2K) |
| 4 | Скрипт Node.js | Разнесение отправок на 10 секунд, сохранение сопоставления jobId с SKU, опрос статуса, загрузка в S3 | GET /api/v1/jobs/{jobId}, бесплатно |
| 5 | Тот же скрипт, дополнительные строки | Генерация немецкой и японской версии для зарубежных ритейлеров | Те же endpoints, responseLanguage устанавливается по рынку |
| 6 | Shopify + Make | Событие создания продукта запускает HTTP-запрос, чтобы новые SKU получали презентации за несколько минут | Те же endpoints, те же кредиты |
Шаг 1: Нормализация каталога в бриф на каждый SKU
Независимо от источника, преобразуйте каждую строку SKU в строку с одинаковыми колонками. CSV продуктов Shopify уже содержит Title, Body (HTML), Variant Price и Image Src; экспорт из PIM обычно содержит структурированные атрибуты. Добавьте две свои колонки: target_retailer (какой покупатель видит этот sell sheet) и market (на каком языке ритейлер читает).
sku,name,features,specs,price,hero_image_url,target_retailer,market
NB-TRAIL-042,Northbound Trail Runner 2,"Подошва Vibram; перепад 8 мм; верх из переработанной сетки","Вес 265 г; Размеры EU 39-47; Цвета: Moss, Slate",139.00,https://cdn.example-brand.com/nb-trail-042.jpg,Decathlon DE,de
NB-TRAIL-042,Northbound Trail Runner 2,"Подошва Vibram; перепад 8 мм; верх из переработанной сетки","Вес 265 г; Размеры EU 39-47; Цвета: Moss, Slate",139.00,https://cdn.example-brand.com/nb-trail-042.jpg,Xebio JP,ja
NB-PACK-018,Northbound Daypack 22L,"Застёжка roll-top; отделение для ноутбука; 420D ripstop","Объём 22 л; Вес 610 г; Цвета: Sand, Black",89.00,https://cdn.example-brand.com/nb-pack-018.jpg,REI US,enГенератор промптов превращает строку в userInput. Держите его в пределах нескольких сотен слов и указывайте аудиторию и количество слайдов в тексте, так как Fast PPT планирует презентацию по брифу.
function sellSheetPrompt(row) {
return [
`Sell sheet для ритейлера по продукту ${row.name} (SKU ${row.sku}), подготовлен для команды закупок ${row.target_retailer}.`,
`6 слайдов: титульный с названием продукта и коротким позиционированием; ключевые характеристики; технические спецификации; цены и маржинальные моменты (розничная цена ${row.price} EUR); мерчендайзинг и сроки запуска; контакты и дальнейшие шаги.`,
`Характеристики: ${row.features}. Спецификации: ${row.specs}.`,
`Тон: фактический, ориентированный на покупателя, без маркетинговых преувеличений.`,
].join("\n");
}
function launchPrompt(row) {
return [
`Презентация запуска продукта ${row.name} (SKU ${row.sku}).`,
`Аудитория: розничные покупатели и менеджеры категорий.`,
`Осветить главную историю продукта, три ключевых характеристики (${row.features}), спецификации (${row.specs}), розничную цену ${row.price} EUR и сезонное окно кампании.`,
`Использовать главное изображение продукта по адресу ${row.hero_image_url} в качестве визуального якоря, где это уместно.`,
].join("\n");
}Шаг 2: Генерация sell sheet для ритейлера с Fast PPT
Менеджерам по аккаунтам нужен PPTX, который можно открыть, отредактировать цену и переслать. Это путь Fast PPT: POST /api/v1/slides/generate заполняет один из 1500+ дизайнерских шаблонов и возвращает нативный PowerPoint файл примерно за 30 секунд. Выберите один themeId на бренд и зашивайте его, чтобы все sell sheets имели одинаковую систему макета. Если у вашего бренда уже есть утверждённый шаблон, On-brand AI slides with template fill рассказывает, как стандартизировать его.

themeId на бренд.
Найдите тему один раз и сохраните ID в окружении:
curl "https://2slides.com/api/v1/themes/search?query=retail%20product%20catalog&limit=5" \
-H "Authorization: Bearer $SLIDES_API_KEY"Затем генерируйте. По умолчанию mode — sync, который возвращает downloadUrl в одном вызове. Для пакетной обработки используйте mode: "async", чтобы запрос сразу возвращал jobId, и скрипт мог продолжать отправлять задания.
curl -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Sell sheet для ритейлера по продукту Northbound Trail Runner 2 (SKU NB-TRAIL-042), подготовлен для команды закупок REI US. 6 слайдов: титульный; ключевые характеристики (подошва Vibram, перепад 8 мм, верх из переработанной сетки); технические спецификации (265 г, EU 39-47, Moss и Slate); цены и маржинальные моменты (розничная 139.00); мерчендайзинг и сроки запуска; контакты и дальнейшие шаги. Тон: фактический, ориентированный на покупателя.",
"themeId": "YOUR_BRAND_THEME_ID",
"responseLanguage": "English",
"mode": "async"
}'6-страничный sell sheet стоит 60 кредитов, примерно $0.15 при цене пакета $5.
Шаг 3: Генерация презентации запуска кампании с create-like-this
Презентация запуска отличается. Покупатели и соцсети ожидают, что она будет выглядеть как кампания, а не как шаблон, и никто не будет редактировать её слайд за слайдом. Это путь с дизайном из изображений: POST /api/v1/slides/create-like-this принимает referenceImageUrl, извлекает из изображения дизайн-систему (палитру, типографику, композицию) и рендерит каждую страницу как изображение внутри PDF. Укажите ключевой визуал сезона, и каждая презентация SKU унаследует стиль кампании. Страница продукта Create Slides Like This показывает тот же процесс в веб-рабочем пространстве.

create-like-this — точка входа API; референсное изображение заменяет текстовый стиль промпта.
Запускайте дважды на каждый SKU с разными значениями aspectRatio: "16:9" для презентации покупателям и "4:5" для соцсетей. Пайплайны изображений по умолчанию используют mode: "async".
curl -X POST https://2slides.com/api/v1/slides/create-like-this \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Презентация запуска продукта Northbound Trail Runner 2 (SKU NB-TRAIL-042). Аудитория: розничные покупатели и менеджеры категорий. Осветить главную историю, три ключевых характеристики (подошва Vibram, перепад 8 мм, верх из переработанной сетки), спецификации (265 г, EU 39-47), розничную цену 139.00 и кампанию FW26.",
"referenceImageUrl": "https://cdn.example-brand.com/campaigns/fw26/key-visual.jpg",
"aspectRatio": "16:9",
"resolution": "2K",
"page": 8,
"contentDetail": "standard",
"imageModel": "gemini-3-pro-image",
"responseLanguage": "English",
"mode": "async"
}'Для соцверсии измените aspectRatio на "4:5" и page на 6, а бриф сократите до главной истории и трёх характеристик. 8-страничная 2K презентация стоит 10 + 800 = 810 кредитов (около $2.03); 6-страничная версия 4:5 стоит 610 кредитов (около $1.53). page: 0 позволяет планировщику выбирать количество страниц, но фиксированное число делает стоимость каталога предсказуемой.
Шаг 4: Запуск каталога пакетами с лимитом 6 запросов в минуту
Лимит скорости — 6 запросов в минуту на API-ключ, а GET /api/v1/jobs/{jobId} допускает 10 запросов в минуту. Скрипт, соблюдающий оба лимита, прост: отправляйте одно задание каждые 10 секунд, записывайте jobId рядом с SKU на диск по ходу, затем опрашивайте ожидающие задания по кругу с интервалом в 6 секунд. Каждый готовый файл загружается в облачное хранилище сразу после успешного завершения задания.
// catalog-to-decks.mjs (Node 20, запуск на сервере; никогда не отправляйте SLIDES_API_KEY в браузер)
import { readFile, writeFile } from "node:fs/promises";
import { parse } from "csv-parse/sync";
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const API = "https://2slides.com/api/v1";
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.SLIDES_API_KEY}`,
};
const THEME_ID = process.env.BRAND_THEME_ID;
const KEY_VISUAL = "https://cdn.example-brand.com/campaigns/fw26/key-visual.jpg";
const s3 = new S3Client({ region: "eu-central-1" });
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const LANGUAGE = { en: "English", de: "German", ja: "Japanese" };
async function submit(path, body) {
const res = await fetch(`${API}${path}`, { method: "POST", headers, body: JSON.stringify(body) });
if (!res.ok) throw new Error(`${path} -> ${res.status} ${await res.text()}`);
return res.json(); // async mode возвращает { jobId, ... }
}
// 1. Отправка: один запрос каждые 10 с, чтобы не превышать 6 запросов/мин
const rows = parse(await readFile("catalog.csv", "utf8"), { columns: true });
const jobs = []; // { sku, market, kind, jobId }
for (const row of rows) {
const responseLanguage = LANGUAGE[row.market] ?? "Auto";
const sheet = await submit("/slides/generate", {
userInput: sellSheetPrompt(row),
themeId: THEME_ID,
responseLanguage,
mode: "async",
});
jobs.push({ sku: row.sku, market: row.market, kind: "sell-sheet", jobId: sheet.jobId });
await sleep(10_000);
for (const [aspectRatio, page, kind] of [["16:9", 8, "launch-16x9"], ["4:5", 6, "social-4x5"]]) {
const deck = await submit("/slides/create-like-this", {
userInput: launchPrompt(row),
referenceImageUrl: KEY_VISUAL,
aspectRatio,
resolution: "2K",
page,
contentDetail: "standard",
responseLanguage,
mode: "async",
});
jobs.push({ sku: row.sku, market: row.market, kind, jobId: deck.jobId });
await sleep(10_000);
}
// Сопоставление jobId <-> SKU на диске, чтобы сбой не потерял оплаченные задания
await writeFile("jobs.json", JSON.stringify(jobs, null, 2));
}
// 2. Опрос: jobs/{id} допускает 10 запросов/мин, проверяем одно задание каждые 6 с по кругу
const pending = new Set(jobs.map((j) => j.jobId));
while (pending.size > 0) {
for (const job of jobs.filter((j) => pending.has(j.jobId))) {
const res = await fetch(`${API}/jobs/${job.jobId}`, { headers });
const state = await res.json(); // { status, progress, downloadUrl }
if (state.status === "success") {
pending.delete(job.jobId);
const file = await fetch(state.downloadUrl);
const ext = job.kind === "sell-sheet" ? "pptx" : "pdf";
await s3.send(new PutObjectCommand({
Bucket: "brand-sales-assets",
Key: `decks/${job.sku}/${job.market}/${job.kind}.${ext}`,
Body: Buffer.from(await file.arrayBuffer()),
}));
console.log(`загружено ${job.sku} ${job.market} ${job.kind}`);
} else if (state.status === "failed") {
pending.delete(job.jobId);
console.error(`ошибка ${job.sku} ${job.kind}`, state);
}
await sleep(6_000);
}
}Три задания на SKU с интервалом 10 секунд означают, что 100 SKU отправятся за 50 минут; опрос 300 заданий с проверкой раз в 6 секунд добавляет около 30 минут на проход. Если предпочитаете Python, аналогичный цикл есть в Автоматизация генерации презентаций на Python и 2Slides API, а общий паттерн очередей описан в Как пакетно генерировать презентации с AI API.
Шаг 5: Добавление многоязычных вариантов для зарубежных ритейлеров
Зарубежные рынки — это где автоматизация окупается. Немецкий и японский покупатели должны получить sell sheet на своём языке, с теми же спецификациями и шаблоном бренда. Переводчик не нужен: responseLanguage принимает название языка, и презентация создаётся на этом языке из того же английского брифа.

generate и поддерживаемые языки вывода. Передавайте название языка, например "German", а не код "de".
Скрипт выше уже сопоставляет market с названием языка (de -> "German", ja -> "Japanese"). Поддерживается более 20 языков, включая испанский, французский, итальянский, португальский, польский, корейский, упрощённый и традиционный китайский, арабский и турецкий. Пишите цены в валюте рынка (EUR, JPY) и указывайте ритейлера в брифе, чтобы локализовать не только слова, но и числа с контекстом.
curl -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Sell sheet для ритейлера по продукту Northbound Trail Runner 2 (SKU NB-TRAIL-042), подготовлен для команды закупок Xebio. 6 слайдов: титульный; ключевые характеристики (подошва Vibram, перепад 8 мм, верх из переработанной сетки); технические спецификации (265 г, размеры 25-30 см, Moss и Slate); цены и маржинальные моменты (розничная JPY 21,900); мерчендайзинг и сроки запуска; контакты и дальнейшие шаги.",
"themeId": "YOUR_BRAND_THEME_ID",
"responseLanguage": "Japanese",
"mode": "async"
}'Каждый языковой вариант — отдельное задание по той же цене, поэтому SKU, продаваемый на трёх рынках, стоит три sell sheets: 180 кредитов, около $0.45.
Шаг 6: Триггер на событие "Product created" Shopify с Make
Пакетный запуск подходит для сезонных релизов. Для постоянного потока новых SKU подключите магазин к API, чтобы презентация появилась через несколько минут после создания продукта. Make (см. справочный центр Make) напрямую обрабатывает события продуктов Shopify; аналогично работают Zapier и n8n.
- Триггер: событие Shopify "Watch products" для создания продукта или Webhook, получающий
products/createот Shopify. - Преобразование: узел кода, который убирает HTML из описания продукта, выбирает
variants[0].priceиimages[0].src, собираетuserInputкак вsellSheetPrompt. - HTTP-запрос (1):
POST https://2slides.com/api/v1/slides/create-like-thisс телом из Шага 3; заголовокAuthorization: Bearer <key>берётся из переменной сценария, не из данных продукта. - Задержка/Ожидание: 60 секунд.
- HTTP-запрос (2):
GET https://2slides.com/api/v1/jobs/{{jobId}}. Маршрутизатор проверяетstatus:success— дальше,pendingилиprocessing— повторно через задержку,failed— отправка оповещения в Slack. - Доставка: HTTP GET по
downloadUrl, узел загрузки в Google Drive, Dropbox или S3 в папку SKU, и строка в таблице сsku,jobId,statusи путём хранения.
Shopify может отправлять несколько событий продукта подряд (массовый импорт, синхронизация приложений). Добавьте здесь те же 10-секундные интервалы или направьте события в очередь и дайте скрипту из Шага 4 её обработать, иначе всплеск из 20 импортов вызовет ошибку на 7-м запросе.
Выбор референсного стиля
create-like-this требует референсное изображение. Ваш ключевой визуал кампании — правильный выбор, если цель — согласованность кампании. Если вы ещё решаете, как должна выглядеть презентация для розничного сектора, в Галерее 2Slides есть реальные референсные презентации для изучения или передачи как referenceImageUrl, чтобы позаимствовать их дизайн-систему. Это референсные презентации, а не вывод API.


referenceImageUrl говорит модели использовать сетку, палитру и оформление диаграмм.
Используйте одно референсное изображение на кампанию и на соотношение сторон. Смена изображения между SKU создаст 40 презентаций, каждая из которых выглядит хорошо, но не как единая серия.
Стоимость
Кредиты оплачиваются по мере использования: $5 покупают 2,000 кредитов ($0.0025 за кредит), $80 — 40,000 кредитов ($0.002 за кредит). Новые аккаунты получают 500 бесплатных кредитов, примерно 8 sell sheets для теста.
| Объём | На SKU | Кредиты в месяц | Приблизительно USD |
|---|---|---|---|
| 20 SKU/мес: 6-страничный sell sheet + 8-страничный 16:9 launch deck | 60 + 810 = 870 | 17,400 | $42.50 (один пакет на 20,000 кредитов) |
| 20 SKU/мес: добавить 6-страничный 4:5 social deck | 870 + 610 = 1,480 | 29,600 | $60–$74 в зависимости от размера пакета |
| 500 SKU/мес: sell sheet + 16:9 launch deck | 870 | 435,000 | около $870 при $0.002 за кредит |
| 500 SKU/мес: все три презентации | 1,480 | 740,000 | около $1,480 при $0.002 за кредит |
Только sell sheets стоят недорого: 500 штук по 6 страниц — 30,000 кредитов, около $60. Бюджет уходит на презентации с дизайном из изображений, поэтому генерируйте презентацию запуска один раз на SKU, а sell sheet — один раз на SKU на рынок.
Для сравнения, API Gamma (см. developers.gamma.app) предлагает похожую автоматизацию, но требует Pro-план для API-ключей; ключи 2Slides работают с любым аккаунтом. 2Slides — наш продукт, учитывайте это при сравнении.
Fast PPT или слайды с дизайном из изображений для этого кейса?
| Потребность | Использовать | Почему |
|---|---|---|
| Менеджер аккаунта редактирует цены, меняет слайд, пересылает покупателю | Fast PPT generate | Нативный PPTX, 10 кредитов/страница, фиксированный themeId на бренд |
| Презентация должна точно соответствовать ключевому визуалу кампании | create-like-this | Дизайн-система извлекается из referenceImageUrl |
| Социальный карусельный или вертикальный формат | create-like-this с aspectRatio "4:5" или "9:16" | PDF с изображениями по страницам, готов к публикации |
| Озвученный продуктовый обзор или MP4 для листинга на маркетплейсе | create-like-this, затем generate-narration (210 кредитов/страница) | Fast PPT не поддерживает озвучку |
Частые ошибки
- Превышение лимита скорости при массовом импорте. 6 запросов/мин на ключ действует для всех endpoint генерации. Разносите отправки на 10 секунд или ставьте в очередь; не используйте
Promise.all. - API-ключ в теме Shopify или скрипте витрины. Ключи должны храниться на сервере (ваш скрипт, подключение Make или serverless функция); в браузере ключ может прочитать кто угодно.
- Ожидание озвучки Fast PPT sell sheet.
generate-narrationпринимает только задания изcreate-pdf-slidesилиcreate-like-this. Если нужна озвучка, начинайте с презентации с дизайном из изображений. - Передача
responseLanguage: "de". Параметр принимает название языка: "German", "Japanese", "Spanish". Коды не распознаются. - Выгрузка полного PIM-записи в
userInput. Длинные списки атрибутов создают загромождённые слайды. Сначала суммируйте характеристики и спецификации, важные для покупателя; колонки CSV из Шага 1 — это фильтр. - Позволять планировщику выбирать количество страниц для каталога.
page: 0подходит для одноразового запуска, но фиксированноеpageделает стоимость на SKU одинаковой и предсказуемой.
Часто задаваемые вопросы
Можно ли генерировать презентации продуктов напрямую из экспорта Shopify CSV?
Да. CSV продуктов Shopify содержит название, описание, цену варианта и URL изображения; конструктор из Шага 1 преобразует эти колонки в userInput. Добавьте колонки target_retailer и market или определяйте их по тегам. Скрипт затем вызывает generate для PPTX sell sheet и create-like-this для презентации запуска, по одной строке за раз.
Как сохранить сотни презентаций запуска в едином стиле бренда?
Передавайте один и тот же ключевой визуал кампании как referenceImageUrl в каждом вызове create-like-this и используйте один референс на соотношение сторон. Дизайн-система извлекается из изображения, поэтому презентации имеют общую палитру, типографику и композицию. Для редактируемого sell sheet зашивайте один themeId на бренд, чтобы все PPTX создавались из одного шаблона.
Сколько времени занимает запуск 100 SKU?
Узкое место — отправка: при 6 запросах в минуту и трёх презентациях на SKU получается один SKU каждые 30 секунд, итого 100 SKU отправятся примерно за 50 минут. Задания Fast PPT завершаются примерно за 30 секунд; презентации с дизайном из изображений создаются в фоне, пока вы продолжаете отправлять. Опрос с 10 запросами в минуту добавляет около 30 минут на проход.
Сколько стоит один SKU в кредитах?
6-страничный Fast PPT sell sheet — 60 кредитов (около $0.15). 8-страничная 2K презентация запуска с дизайном из изображений — 10 кредитов за планирование плюс 800 за страницы, всего 810 (около $2.03). 6-страничная 4:5 соцверсия — 610 кредитов. Все три вместе — 1,480 кредитов, около $2.96 при пакете $80 ($0.002 за кредит).
Может ли один и тот же скрипт создавать презентации на немецком и японском?
Да. Установите responseLanguage в "German" или "Japanese" в одном и том же теле запроса, и презентация будет написана на этом языке из вашего английского брифа. Каждый языковой вариант — отдельное задание по той же цене. Указывайте цены и имя ритейлера в брифе, чтобы локализовать числа и контекст, а не только текст.
Следующие шаги
- Получите API-ключ на 2slides.com/api. Новые аккаунты получают 500 бесплатных кредитов, достаточно для теста шаблона и промпта на нескольких sell sheets.
- Посмотрите, как другие команды используют те же endpoints в публикации хаба AI presentation API use cases by team.
- Прочитайте Как маркетинговые команды создают AI презентации в масштабе для понимания автоматизации каталога продуктов в презентации с точки зрения кампании, затем запустите пилот на 5 SKU перед первым полным запуском каталога.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free