

Automação de Catálogo de Produtos para Apresentações de Vendas (2026)
Automação de catálogo de produtos para apresentação significa que um script lê cada SKU do seu exportação Shopify, PIM ou CSV e chama a API 2Slides duas vezes: POST /api/v1/slides/generate cria uma folha de venda editável em PPTX a partir de um template fixo da marca, e POST /api/v1/slides/create-like-this cria um deck de lançamento com design de imagem que combina com o visual chave da sua campanha. Uma folha de venda de 6 páginas custa 60 créditos (cerca de $0,15); um deck de lançamento 2K de 8 páginas custa 810 créditos (cerca de $2,03). Foi criado para operações de e-commerce, marketing de produto e agências que atendem marcas de varejo.
Principais pontos
- Uma linha do catálogo vira dois decks: uma folha de venda Fast PPT a 10 créditos por página, e um deck de lançamento com design de imagem a 10 créditos por trabalho mais 100 créditos por página 2K.
- Cada endpoint de geração é limitado a 6 requisições por minuto por chave, então o executor envia um trabalho a cada 10 segundos e armazena o
jobIdjunto ao SKU. - Passar o visual chave da marca como
referenceImageUrlmantém todos os decks de lançamento com o mesmo visual da campanha, comaspectRatio"16:9" para compradores e "4:5" para social. - A mesma requisição com
responseLanguage: "German"ou"Japanese"produz decks prontos para varejistas internacionais sem precisar de tradução separada. - 20 SKUs por mês (folha de venda mais deck de lançamento) custam cerca de 17.400 créditos, o que cabe em um único pacote de créditos de $42,50.
Para quem é este guia
Você gerencia operações de e-commerce ou marketing de produto para uma marca, marketplace ou agência, e toda vez que surge um novo SKU ou lançamento sazonal, alguém precisa refazer manualmente a mesma folha de venda, deck de revisão de linha e deck de lançamento. O catálogo já contém nome, características, especificações, preço e imagem principal. Esta receita torna o catálogo a fonte da verdade e permite que um script gere decks de produto a partir das linhas CSV em uma agenda ou evento Shopify.
Não use esta receita se você precisa de um deck personalizado por trimestre. A API vale a pena quando a mesma estrutura se repete em dezenas ou centenas de SKUs.
Fluxo de trabalho resumido
| Passo | Ferramenta | O que acontece | Endpoint 2Slides / créditos |
|---|---|---|---|
| 1 | Exportação Shopify, PIM ou CSV | Normaliza cada linha SKU em um resumo em texto simples (nome, características, especificações, preço, varejista, URL da imagem) | Nenhum |
| 2 | Script Node.js | Gera a folha de venda para o varejista como PPTX editável a partir do template da marca | POST /api/v1/slides/generate, 10 créditos/página |
| 3 | Script Node.js | Gera o deck de lançamento com design de imagem que combina com o visual da campanha, 16:9 e 4:5 | POST /api/v1/slides/create-like-this, 10 + 100 créditos/página (2K) |
| 4 | Script Node.js | Espaça as submissões a cada 10 s, persiste o mapeamento jobId para SKU, faz polling, envia para S3 | GET /api/v1/jobs/{jobId}, grátis |
| 5 | Mesmo script, linhas extras | Gera variantes em alemão e japonês para varejistas internacionais | Mesmos endpoints, responseLanguage definido por mercado |
| 6 | Shopify + Make | Evento de produto criado dispara uma requisição HTTP para que novos SKUs tenham decks em minutos | Mesmos endpoints, mesmos créditos |
Passo 1: Normalizar o catálogo em um resumo por SKU
Qualquer que seja a fonte, transforme cada SKU em uma linha com as mesmas colunas. Um CSV de produto Shopify já tem Title, Body (HTML), Variant Price e Image Src; uma exportação PIM geralmente tem atributos estruturados. Adicione duas colunas suas: target_retailer (qual comprador verá esta folha de venda) e market (qual idioma o varejista lê).
sku,name,features,specs,price,hero_image_url,target_retailer,market
NB-TRAIL-042,Northbound Trail Runner 2,"Sola Vibram; drop de 8 mm; mesh reciclado no cabedal","Peso 265 g; Tamanhos EU 39-47; Cores: Moss, Slate",139.00,https://cdn.example-brand.com/nb-trail-042.jpg,Decathlon DE,de
NB-TRAIL-042,Northbound Trail Runner 2,"Sola Vibram; drop de 8 mm; mesh reciclado no cabedal","Peso 265 g; Tamanhos EU 39-47; Cores: Moss, Slate",139.00,https://cdn.example-brand.com/nb-trail-042.jpg,Xebio JP,ja
NB-PACK-018,Northbound Daypack 22L,"Fechamento roll-top; compartimento para laptop; ripstop 420D","Volume 22 L; Peso 610 g; Cores: Sand, Black",89.00,https://cdn.example-brand.com/nb-pack-018.jpg,REI US,enO construtor de prompt transforma uma linha em userInput. Mantenha-o abaixo de algumas centenas de palavras e informe o público e a contagem de slides no texto, pois o Fast PPT planeja o deck a partir do resumo.
function sellSheetPrompt(row) {
return [
`Folha de venda para varejista do ${row.name} (SKU ${row.sku}), preparada para a equipe de compras da ${row.target_retailer}.`,
`6 slides: capa com nome do produto e posicionamento em uma linha; principais características; especificações técnicas; pontos de preço e margem (preço de varejo ${row.price} EUR); merchandising e cronograma de lançamento; contato e próximos passos.`,
`Características: ${row.features}. Especificações: ${row.specs}.`,
`Tom: factual, voltado para o comprador, sem superlativos de marketing.`,
].join("\n");
}
function launchPrompt(row) {
return [
`Deck de lançamento do produto ${row.name} (SKU ${row.sku}).`,
`Público: compradores de varejo e gerentes de categoria.`,
`Cubra a história principal, as três características de destaque (${row.features}), a ficha técnica (${row.specs}), preço de varejo ${row.price} EUR e o período da campanha sazonal.`,
`Use a imagem principal do produto em ${row.hero_image_url} como âncora visual onde for apropriado.`,
].join("\n");
}Passo 2: Gerar a folha de venda para o varejista com Fast PPT
Gerentes de conta precisam de um PPTX que possam abrir, editar o preço e encaminhar. Esse é o caminho Fast PPT: POST /api/v1/slides/generate preenche um dos mais de 1.500 templates desenhados e retorna um arquivo PowerPoint nativo em cerca de 30 segundos. Escolha um themeId por marca e fixe-o para que todas as folhas de venda compartilhem o mesmo sistema de layout. Se sua marca já tem um template aprovado, Slides AI na marca com preenchimento de template explica como padronizar.

themeId fixo por marca.
Encontre o tema uma vez e armazene o ID no seu ambiente:
curl "https://2slides.com/api/v1/themes/search?query=retail%20product%20catalog&limit=5" \
-H "Authorization: Bearer $SLIDES_API_KEY"Depois gere. O mode padrão é sync, que retorna downloadUrl em uma chamada. Para lotes use mode: "async" para que a requisição retorne um jobId imediatamente e seu script continue enviando.
curl -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Folha de venda para varejista do Northbound Trail Runner 2 (SKU NB-TRAIL-042), preparada para a equipe de compras da REI US. 6 slides: capa; principais características (sola Vibram, drop de 8 mm, mesh reciclado no cabedal); especificações técnicas (265 g, EU 39-47, Moss e Slate); pontos de preço e margem (varejo 139.00); merchandising e cronograma de lançamento; contato e próximos passos. Tom: factual, voltado para o comprador.",
"themeId": "YOUR_BRAND_THEME_ID",
"responseLanguage": "English",
"mode": "async"
}'Uma folha de venda de 6 páginas custa 60 créditos, aproximadamente $0,15 no pacote de $5.
Passo 3: Gerar o deck de lançamento da campanha com create-like-this
O deck de lançamento é diferente. Compradores e canais sociais esperam que ele pareça com a campanha, não com um template, e ninguém vai editar slide a slide. Esse é o caminho de design por imagem: POST /api/v1/slides/create-like-this recebe um referenceImageUrl, deriva um sistema de design (paleta, tipografia, composição) dessa imagem e gera cada página como uma imagem dentro de um PDF. Aponte para o visual chave da temporada e cada deck SKU herda o visual da campanha. A página do produto para Create Slides Like This mostra o mesmo pipeline no workspace web.

create-like-this é o ponto de entrada da API; a imagem de referência substitui o prompt escrito de estilo.
Execute duas vezes por SKU com valores diferentes de aspectRatio: "16:9" para o deck do comprador e "4:5" para o carrossel social. Pipelines de imagem usam mode: "async" por padrão.
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": "Deck de lançamento do produto Northbound Trail Runner 2 (SKU NB-TRAIL-042). Público: compradores de varejo e gerentes de categoria. Cubra a história principal, três características de destaque (sola Vibram, drop de 8 mm, mesh reciclado no cabedal), a ficha técnica (265 g, EU 39-47), preço de varejo 139.00 e o período da campanha 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"
}'Para a versão social, altere aspectRatio para "4:5" e page para 6, e encurte o resumo para a história principal mais três características. Um deck 2K de 8 páginas custa 10 + 800 = 810 créditos (cerca de $2,03); a versão 4:5 de 6 páginas custa 610 créditos (cerca de $1,53). page: 0 permite que o planejador escolha a contagem, mas um número fixo mantém os custos do catálogo previsíveis.
Passo 4: Execute o catálogo em lotes a 6 requisições por minuto
O limite de taxa é 6 requisições por minuto por chave API, e GET /api/v1/jobs/{jobId} permite 10 por minuto. Um executor que respeita ambos é simples: envie um trabalho a cada 10 segundos, escreva o jobId junto ao SKU no disco conforme avança, depois faça polling do conjunto pendente em round-robin a uma verificação a cada 6 segundos. Cada arquivo finalizado é enviado para armazenamento em nuvem assim que o trabalho é concluído.
// catalog-to-decks.mjs (Node 20, rodar no servidor; nunca envie SLIDES_API_KEY para o navegador)
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(); // modo async retorna { jobId, ... }
}
// 1. Enviar: uma requisição a cada 10 s mantém abaixo de 6 requisições/min
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);
}
// mapa jobId <-> SKU no disco, para que uma falha no meio da execução não perca trabalhos pagos
await writeFile("jobs.json", JSON.stringify(jobs, null, 2));
}
// 2. Polling: jobs/{id} permite 10 requisições/min, então verifique um job a cada 6 s em round-robin
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(`uploaded ${job.sku} ${job.market} ${job.kind}`);
} else if (state.status === "failed") {
pending.delete(job.jobId);
console.error(`failed ${job.sku} ${job.kind}`, state);
}
await sleep(6_000);
}
}Três trabalhos por SKU a 10 segundos de intervalo significa que 100 SKUs são enviados em 50 minutos; o polling de 300 jobs a uma verificação a cada 6 segundos adiciona cerca de 30 minutos por rodada. Se preferir Python, o mesmo loop está em Automatize a geração de apresentações com Python e a API 2Slides, e o padrão geral de fila é abordado em Como gerar apresentações em lote com uma API de IA.
Passo 5: Adicione variantes multilíngues para varejistas internacionais
O comércio internacional é onde a automação vale a pena. Um comprador alemão e um japonês devem receber cada um uma folha de venda no seu idioma, com as mesmas especificações e o mesmo template da marca. Você não precisa de um serviço de tradução: responseLanguage aceita o nome do idioma e o deck é escrito nesse idioma a partir do mesmo resumo em inglês.

generate e idiomas de saída suportados. Passe o nome do idioma, como "German", nunca um código como "de".
O script acima já mapeia market para o nome do idioma (de para "German", ja para "Japanese"). Os mais de 20 valores suportados incluem espanhol, francês, italiano, português, polonês, coreano, chinês simplificado, chinês tradicional, árabe e turco. Escreva preços na moeda do mercado (EUR, JPY) e nomeie o varejista no resumo para que números e contexto sejam localizados, não apenas as palavras.
curl -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Folha de venda para varejista do Northbound Trail Runner 2 (SKU NB-TRAIL-042), preparada para a equipe de compras da Xebio. 6 slides: capa; principais características (sola Vibram, drop de 8 mm, mesh reciclado no cabedal); especificações técnicas (265 g, tamanhos 25-30 cm, Moss e Slate); pontos de preço e margem (varejo JPY 21.900); merchandising e cronograma de lançamento; contato e próximos passos.",
"themeId": "YOUR_BRAND_THEME_ID",
"responseLanguage": "Japanese",
"mode": "async"
}'Cada variante de idioma é um trabalho separado com o mesmo preço, então um SKU vendido em três mercados custa três folhas de venda: 180 créditos, cerca de $0,45.
Passo 6: Dispare no evento "Produto criado" do Shopify com Make
O executor em lote cuida dos lançamentos sazonais. Para um fluxo constante de novos SKUs, conecte a loja à API para que um deck exista minutos após o produto ser criado. Make (veja o centro de ajuda do Make) expõe eventos de produto Shopify diretamente; o mesmo formato funciona no Zapier ou n8n.
- Gatilho: evento Shopify "Watch products" para produto criado, ou gatilho Webhook alimentado pelo webhook
products/createdo Shopify. - Transformação: um nó de Código que remove HTML do corpo do produto, pega
variants[0].priceeimages[0].src, e montauserInputcomo emsellSheetPrompt. - Nó HTTP Request (1):
POST https://2slides.com/api/v1/slides/create-like-thiscom o corpo do Passo 3; o cabeçalhoAuthorization: Bearer <key>vem de uma variável do cenário, nunca dos dados do produto. - Nó Delay/Wait: 60 segundos.
- Nó HTTP Request (2):
GET https://2slides.com/api/v1/jobs/{{jobId}}. Um Router verificastatus:successcontinua,pendingouprocessingvolta para o Delay,failedenvia alerta no Slack. - Entrega: HTTP GET no
downloadUrl, um nó de upload para Google Drive, Dropbox ou S3 na pasta do SKU, e uma linha na planilha comsku,jobId,statuse caminho de armazenamento.
O Shopify pode disparar vários eventos de produto em sequência (importação em massa, sincronização de app). Adicione o mesmo espaçamento de 10 segundos aqui, ou direcione eventos para uma fila e deixe o executor do Passo 4 esvaziá-la; caso contrário, uma sequência de 20 importações falha na requisição 7.
Escolhendo um estilo de referência
create-like-this precisa de uma imagem de referência. O visual chave da sua campanha é a escolha certa quando o objetivo é consistência da campanha. Quando ainda estiver decidindo como deve ser um deck do setor varejista, a Galeria 2Slides hospeda decks reais para estudo, ou passe como referenceImageUrl para emprestar o sistema de design deles. São decks de referência, não saída da API.


referenceImageUrl indica ao modelo para reutilizar sua grade, paleta e tratamento de gráficos.
Use uma única imagem de referência por campanha e por proporção de aspecto. Mudá-la entre SKUs gera 40 decks que parecem bons individualmente, mas não como uma família.
Quanto custa
Créditos são pay-as-you-go: $5 compram 2.000 créditos ($0,0025 por crédito) e $80 compram 40.000 ($0,002 por crédito). Contas novas começam com 500 créditos grátis, cerca de 8 folhas de venda para um teste.
| Volume | Por SKU | Créditos por mês | Aproximado em USD |
|---|---|---|---|
| 20 SKUs/mês: folha de venda 6 páginas + deck de lançamento 16:9 8 páginas | 60 + 810 = 870 | 17.400 | $42,50 (um pacote de 20.000 créditos) |
| 20 SKUs/mês: adiciona deck social 6 páginas 4:5 | 870 + 610 = 1.480 | 29.600 | $60 a $74 dependendo do pacote |
| 500 SKUs/mês: folha de venda + deck de lançamento 16:9 | 870 | 435.000 | cerca de $870 a $0,002 por crédito |
| 500 SKUs/mês: os três decks | 1.480 | 740.000 | cerca de $1.480 a $0,002 por crédito |
Folhas de venda sozinhas são baratas: 500 folhas de venda PPTX de 6 páginas custam 30.000 créditos, cerca de $60. Os decks com design de imagem são onde o orçamento vai, então gere o deck de lançamento uma vez por SKU e a folha de venda uma vez por SKU por mercado.
Para comparação, a API da Gamma (veja developers.gamma.app) oferece automação similar, mas requer plano Pro para chaves API; chaves 2Slides funcionam em qualquer conta. 2Slides é nosso produto, então leve isso em conta na comparação.
Fast PPT ou slides com design de imagem para este caso?
| Necessidade | Use | Por quê |
|---|---|---|
| Gerente de conta edita preços, troca um slide, encaminha para comprador | Fast PPT generate | PPTX nativo, 10 créditos/página, themeId fixo por marca |
| Deck deve combinar exatamente com o visual chave da campanha | create-like-this | Sistema de design derivado de referenceImageUrl |
| Carrossel social ou formato vertical | create-like-this com aspectRatio "4:5" ou "9:16" | PDF com imagens por página, pronto para postar |
| Apresentação narrada do produto ou MP4 para listagem em marketplace | create-like-this depois generate-narration (210 créditos/página) | Jobs Fast PPT não podem ser narrados |
Erros comuns
- Ultrapassar o limite de taxa em uma importação em massa. 6 requisições/min por chave se aplicam a todos os endpoints de geração. Espaçe as submissões a cada 10 segundos ou enfileire; não use
Promise.allpara disparar tudo junto. - Chave API em tema Shopify ou script de loja. Chaves devem ficar no servidor (seu executor, conexão Make ou função serverless); qualquer coisa no navegador pode ser lida por qualquer pessoa.
- Esperar narrar uma folha de venda Fast PPT.
generate-narrationsó aceita jobs decreate-pdf-slidesoucreate-like-this. Se o objetivo é vídeo narrado do produto, comece pelo deck com design de imagem. - Passar
responseLanguage: "de". O parâmetro aceita nome do idioma: "German", "Japanese", "Spanish". Códigos não são reconhecidos. - Colocar o registro completo do PIM em
userInput. Listas longas de atributos produzem slides confusos. Resuma para as características e especificações relevantes para o comprador; as colunas CSV do Passo 1 são o filtro. - Deixar o planejador escolher a contagem de páginas para execução de catálogo.
page: 0é ok para um único uso, mas umpagefixo mantém o custo em créditos por SKU idêntico para orçamento.
Perguntas Frequentes
Posso gerar decks de produto diretamente de uma exportação CSV do Shopify?
Sim. O CSV de produto do Shopify contém título, corpo, preço da variante e URL da imagem necessários; o construtor do Passo 1 mapeia essas colunas para userInput. Adicione colunas target_retailer e market, ou derive-as das tags. O executor então chama generate para a folha de venda PPTX e create-like-this para o deck de lançamento, linha a linha.
Como manter centenas de decks de lançamento na marca?
Passe o mesmo visual chave da campanha como referenceImageUrl em todas as chamadas create-like-this, e mantenha uma referência por proporção de aspecto. O sistema de design é derivado dessa imagem, então os decks compartilham paleta, tipografia e composição. Para a folha de venda editável, fixe um themeId por marca para que todos os PPTX venham do mesmo template.
Quanto tempo leva para gerar 100 SKUs?
O gargalo é o envio: a 6 requisições por minuto, três decks por SKU significa um SKU a cada 30 segundos, então 100 SKUs são enviados em cerca de 50 minutos. Jobs Fast PPT terminam em cerca de 30 segundos cada; decks com design de imagem completam em background enquanto você continua enviando. O polling a 10 requisições por minuto adiciona cerca de 30 minutos por rodada.
Quanto custa um SKU em créditos?
Uma folha de venda Fast PPT de 6 páginas custa 60 créditos (cerca de $0,15). Um deck de lançamento 2K de 8 páginas custa 10 créditos de planejamento mais 800 de página, total 810 (cerca de $2,03). Um deck social 4:5 de 6 páginas custa 610 créditos. Os três juntos somam 1.480 créditos, cerca de $2,96 no pacote de $80 a $0,002 por crédito.
O mesmo script pode produzir decks em alemão e japonês?
Sim. Defina responseLanguage para "German" ou "Japanese" no mesmo corpo da requisição e o deck é escrito nesse idioma a partir do seu resumo em inglês. Cada variante de idioma é um trabalho separado com o mesmo custo em créditos. Coloque preços específicos do mercado e o nome do varejista no resumo para que números e contexto sejam localizados, assim como o texto.
Próximos passos
- Obtenha uma chave API em 2slides.com/api. Contas novas incluem 500 créditos grátis, suficientes para testar o template e prompt em algumas folhas de venda.
- Veja como outras equipes usam os mesmos endpoints no post do hub Casos de uso da API de apresentação AI por equipe.
- Leia Como equipes de marketing produzem decks de apresentação AI em escala para a visão do lado da campanha da automação de catálogo de produto para apresentação, depois faça um piloto com 5 SKUs antes da primeira execução completa do catálogo.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free