2Slides Logo
Automazione da Catalogo Prodotti a Presentazione per Sales Decks (2026)
2Slides Team
18 min read

Automazione da Catalogo Prodotti a Presentazione per Sales Decks (2026)

L'automazione da catalogo prodotti a presentazione significa che uno script legge ogni SKU dal tuo export Shopify, PIM o CSV e chiama due volte l'API 2Slides: POST /api/v1/slides/generate costruisce un sell sheet PPTX modificabile da un template brand fisso, e POST /api/v1/slides/create-like-this crea un launch deck con design a immagine che corrisponde al key visual della tua campagna. Un sell sheet di 6 pagine costa 60 crediti (circa $0,15); un launch deck 2K di 8 pagine costa 810 crediti (circa $2,03). È pensato per operazioni e-commerce, product marketer e agenzie che servono brand retail.

Punti chiave

  • Una riga del catalogo diventa due deck: un sell sheet Fast PPT a 10 crediti per pagina, e un launch deck con design a immagine a 10 crediti per job più 100 crediti per pagina 2K.
  • Ogni endpoint di generazione è limitato a 6 richieste al minuto per chiave, quindi il runner invia un job ogni 10 secondi e memorizza il jobId accanto allo SKU.
  • Passare il key visual del brand come referenceImageUrl mantiene ogni launch deck nello stesso look di campagna, con aspectRatio "16:9" per buyer e "4:5" per social.
  • La stessa richiesta con responseLanguage: "German" o "Japanese" produce deck pronti per retailer cross-border senza un passaggio di traduzione separato.
  • 20 SKU al mese (sell sheet più launch deck) costano circa 17.400 crediti, che rientrano in un singolo pacchetto da $42,50.

A chi è rivolto

Gestisci operazioni e-commerce o product marketing per un brand, marketplace o agenzia, e ogni nuovo SKU o drop stagionale significa che qualcuno ricostruisce manualmente lo stesso sell sheet, line review deck e launch deck. Il catalogo contiene già nome, caratteristiche, specifiche, prezzo e immagine hero. Questa ricetta lo rende la fonte di verità e permette a uno script di generare deck prodotto da righe CSV su programma o evento Shopify.

Non usare questa ricetta se ti serve un solo deck personalizzato a trimestre. L'API conviene quando la stessa struttura si ripete su decine o centinaia di SKU.

Il flusso di lavoro a colpo d'occhio

PassoStrumentoCosa succedeEndpoint 2Slides / crediti
1Export Shopify, PIM o CSVNormalizza ogni riga SKU in un brief testuale (nome, caratteristiche, specifiche, prezzo, retailer, URL immagine)Nessuno
2Script Node.jsCostruisce il sell sheet retailer come PPTX modificabile dal template brandPOST /api/v1/slides/generate, 10 crediti/pagina
3Script Node.jsCostruisce il launch deck con design a immagine abbinato al key visual campagna, 16:9 e 4:5POST /api/v1/slides/create-like-this, 10 + 100 crediti/pagina (2K)
4Script Node.jsSpazia le submission a 10 s di distanza, persiste la mappatura jobId-SKU, poll, upload su S3GET /api/v1/jobs/{jobId}, gratuito
5Stesso script, righe extraGenera varianti in tedesco e giapponese per retailer cross-borderStessi endpoint, responseLanguage impostato per mercato
6Shopify + MakeEvento product created lancia una HTTP Request così i nuovi SKU hanno deck in pochi minutiStessi endpoint, stessi crediti

Passo 1: Normalizza il catalogo in un brief per SKU

Qualunque sia la fonte, appiattisci ogni SKU in una riga con le stesse colonne. Un CSV prodotto Shopify ha già Title, Body (HTML), Variant Price e Image Src; un export PIM di solito ha attributi strutturati. Aggiungi due colonne tue: target_retailer (chi vede questo sell sheet) e market (in quale lingua il retailer legge).

sku,name,features,specs,price,hero_image_url,target_retailer,market NB-TRAIL-042,Northbound Trail Runner 2,"Suola Vibram; drop 8 mm; tomaia in mesh riciclato","Peso 265 g; Taglie EU 39-47; Colori: Moss, Slate",139.00,https://cdn.example-brand.com/nb-trail-042.jpg,Decathlon DE,de NB-TRAIL-042,Northbound Trail Runner 2,"Suola Vibram; drop 8 mm; tomaia in mesh riciclato","Peso 265 g; Taglie EU 39-47; Colori: Moss, Slate",139.00,https://cdn.example-brand.com/nb-trail-042.jpg,Xebio JP,ja NB-PACK-018,Northbound Daypack 22L,"Chiusura roll-top; tasca laptop; 420D ripstop","Volume 22 L; Peso 610 g; Colori: Sand, Black",89.00,https://cdn.example-brand.com/nb-pack-018.jpg,REI US,en

Il prompt builder trasforma una riga in userInput. Mantienilo sotto qualche centinaio di parole e indica il pubblico e il numero di slide nel testo, poiché Fast PPT pianifica il deck dal brief.

function sellSheetPrompt(row) { return [ `Sell sheet retailer per ${row.name} (SKU ${row.sku}), preparato per il team acquisti di ${row.target_retailer}.`, `6 slide: copertina con nome prodotto e posizionamento in una riga; caratteristiche chiave; specifiche tecniche; prezzo e punti margine (prezzo retail ${row.price} EUR); merchandising e tempistiche lancio; contatti e prossimi passi.`, `Caratteristiche: ${row.features}. Specifiche: ${row.specs}.`, `Tono: fattuale, rivolto al buyer, senza superlativi di marketing.`, ].join("\n"); } function launchPrompt(row) { return [ `Launch deck prodotto per ${row.name} (SKU ${row.sku}).`, `Pubblico: buyer retail e category manager.`, `Copri la storia hero, le tre caratteristiche principali (${row.features}), la scheda tecnica (${row.specs}), prezzo retail ${row.price} EUR e la finestra della campagna stagionale.`, `Usa l'immagine hero prodotto a ${row.hero_image_url} come ancora visiva dove opportuno.`, ].join("\n"); }

Passo 2: Genera il sell sheet retailer con Fast PPT

Gli account manager hanno bisogno di un PPTX che possano aprire, modificare un prezzo e inoltrare. Questo è il percorso Fast PPT: POST /api/v1/slides/generate riempie uno dei 1.500+ template disegnati e restituisce un file PowerPoint nativo in circa 30 secondi. Scegli un themeId per brand e codificalo così ogni sell sheet condivide lo stesso sistema di layout. Se il tuo brand ha già un template approvato, On-brand AI slides with template fill spiega come standardizzarlo.

2Slides Fast PPT con schede template, il percorso PPTX modificabile che l'API automatizza
Figura 1: La libreria template Fast PPT. La chiamata API sotto fa la stessa cosa del pulsante "Generate", con themeId fisso per brand.

Trova il tema una volta e memorizza l'ID nell'ambiente:

curl "https://2slides.com/api/v1/themes/search?query=retail%20product%20catalog&limit=5" \ -H "Authorization: Bearer $SLIDES_API_KEY"

Poi genera. Il mode predefinito è sync, che restituisce downloadUrl in una chiamata. Per batch usa mode: "async" così la richiesta restituisce subito un jobId e lo script continua a inviare.

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 retailer per Northbound Trail Runner 2 (SKU NB-TRAIL-042), preparato per il team acquisti di REI US. 6 slide: copertina; caratteristiche chiave (suola Vibram, drop 8 mm, tomaia mesh riciclato); specifiche tecniche (265 g, EU 39-47, Moss e Slate); prezzo e punti margine (retail 139.00); merchandising e tempistiche lancio; contatti e prossimi passi. Tono: fattuale, rivolto al buyer.", "themeId": "YOUR_BRAND_THEME_ID", "responseLanguage": "English", "mode": "async" }'

Un sell sheet di 6 pagine costa 60 crediti, circa $0,15 al prezzo del pacchetto da $5.

Passo 3: Genera il launch deck campagna con create-like-this

Il launch deck è diverso. Buyer e canali social si aspettano che assomigli alla campagna, non a un template, e nessuno lo modificherà slide per slide. Questo è il percorso design a immagine: POST /api/v1/slides/create-like-this prende un referenceImageUrl, ricava un sistema di design (palette, tipo, composizione) da quell'immagine e rende ogni pagina come immagine dentro un PDF. Punta al key visual della stagione e ogni deck SKU eredita il look campagna. La pagina prodotto di Create Slides Like This mostra la stessa pipeline nello spazio web.

2Slides Nano Banana slide con design a immagine, la pipeline dietro create-like-this
Figura 2: La pipeline delle slide con design a immagine. create-like-this è il punto di ingresso API; l'immagine di riferimento sostituisce un prompt scritto di stile.

Eseguilo due volte per SKU con valori aspectRatio diversi: "16:9" per il deck buyer e "4:5" per il carosello social. Le pipeline immagine usano di default 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": "Launch deck prodotto per Northbound Trail Runner 2 (SKU NB-TRAIL-042). Pubblico: buyer retail e category manager. Copri la storia hero, tre caratteristiche principali (suola Vibram, drop 8 mm, tomaia mesh riciclato), la scheda tecnica (265 g, EU 39-47), prezzo retail 139.00 e la finestra campagna 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" }'

Per la versione social cambia aspectRatio in "4:5" e page in 6, e accorcia il brief alla storia hero più tre caratteristiche. Un deck 2K di 8 pagine costa 10 + 800 = 810 crediti (circa $2,03); la versione 4:5 di 6 pagine costa 610 crediti (circa $1,53). page: 0 lascia scegliere il planner, ma un numero fisso mantiene i costi catalogo prevedibili.

Passo 4: Esegui il catalogo in batch a 6 richieste al minuto

Il rate limit è 6 richieste al minuto per chiave API, e GET /api/v1/jobs/{jobId} permette 10 al minuto. Un runner che rispetta entrambi è semplice: invia un job ogni 10 secondi, scrive il jobId accanto allo SKU su disco man mano, poi fa polling del set pendente in round-robin a un controllo ogni 6 secondi. Ogni file finito viene caricato su cloud storage appena il job ha successo.

// catalog-to-decks.mjs (Node 20, eseguito server-side; mai spedire SLIDES_API_KEY al browser) 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(); // modalità async restituisce { jobId, ... } } // 1. Submit: una richiesta ogni 10 s resta sotto 6 richieste/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); } // mappa jobId <-> SKU su disco, così un crash a metà non perde job pagati await writeFile("jobs.json", JSON.stringify(jobs, null, 2)); } // 2. Poll: jobs/{id} permette 10 richieste/min, quindi controlla un job ogni 6 s in 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(`caricato ${job.sku} ${job.market} ${job.kind}`); } else if (state.status === "failed") { pending.delete(job.jobId); console.error(`fallito ${job.sku} ${job.kind}`, state); } await sleep(6_000); } }

Tre job per SKU a 10 secondi di distanza significa che 100 SKU si inviano in 50 minuti; il polling di 300 job a un controllo ogni 6 secondi aggiunge circa 30 minuti per passata. Se preferisci Python, lo stesso loop è in Automate presentation generation with Python and the 2Slides API, e il pattern generale di coda è trattato in How to batch-generate presentations with an AI API.

Passo 5: Aggiungi varianti multilingua per retailer cross-border

Il cross-border è dove l'automazione ripaga. Un buyer tedesco e uno giapponese dovrebbero ricevere ciascuno un sell sheet nella propria lingua, con le stesse specifiche e lo stesso template brand. Non serve un servizio di traduzione: responseLanguage accetta un nome di lingua e il deck è scritto in quella lingua dallo stesso brief inglese.

Parametri endpoint API 2Slides e lingue di output supportate
Figura 3: Parametri dell'endpoint generate e lingue di output supportate. Passa il nome della lingua, come "German", mai un codice come "de".

Lo script sopra mappa già market a un nome lingua (de a "German", ja a "Japanese"). I 20+ valori supportati includono spagnolo, francese, italiano, portoghese, polacco, coreano, cinese semplificato, cinese tradizionale, arabo e turco. Scrivi i prezzi nella valuta di mercato (EUR, JPY) e nomina il retailer nel brief così numeri e contesto sono localizzati, non solo le parole.

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 retailer per Northbound Trail Runner 2 (SKU NB-TRAIL-042), preparato per il team acquisti di Xebio. 6 slide: copertina; caratteristiche chiave (suola Vibram, drop 8 mm, tomaia mesh riciclato); specifiche tecniche (265 g, taglie 25-30 cm, Moss e Slate); prezzo e punti margine (retail JPY 21,900); merchandising e tempistiche lancio; contatti e prossimi passi.", "themeId": "YOUR_BRAND_THEME_ID", "responseLanguage": "Japanese", "mode": "async" }'

Ogni variante linguistica è un job separato allo stesso prezzo, quindi uno SKU venduto in tre mercati costa tre sell sheet: 180 crediti, circa $0,45.

Passo 6: Trigger su Shopify "Product created" con Make

Il batch runner gestisce i drop stagionali. Per un flusso costante di nuovi SKU, collega il negozio all'API così un deck esiste pochi minuti dopo la creazione prodotto. Make (vedi il Make help center) espone eventi prodotto Shopify direttamente; lo stesso schema funziona in Zapier o n8n.

  • Trigger: evento Shopify "Watch products" per prodotto creato, o trigger Webhook alimentato dal webhook Shopify products/create.
  • Trasformazione: nodo Code che rimuove HTML dal body prodotto, prende variants[0].price e images[0].src, e costruisce userInput come in sellSheetPrompt.
  • Nodo HTTP Request (1): POST https://2slides.com/api/v1/slides/create-like-this con il corpo del Passo 3; header Authorization: Bearer <key> viene da variabile scenario, mai da dati prodotto.
  • Nodo Delay/Wait: 60 secondi.
  • Nodo HTTP Request (2): GET https://2slides.com/api/v1/jobs/{{jobId}}. Un Router controlla status: success continua, pending o processing torna al Delay, failed manda alert Slack.
  • Consegna: HTTP GET su downloadUrl, nodo upload su Google Drive, Dropbox o S3 sotto cartella SKU, e riga sheet con sku, jobId, status e percorso storage.

Shopify può lanciare più eventi prodotto in burst (bulk import, sync app). Aggiungi qui la stessa spaziatura di 10 secondi, o instrada eventi in una coda e lascia che il runner del Passo 4 la svuoti, altrimenti un burst di 20 importazioni fallisce alla richiesta 7.

Scegliere uno stile di riferimento

create-like-this ha bisogno di un'immagine di riferimento. Il tuo key visual campagna è la scelta giusta quando l'obiettivo è la coerenza di campagna. Se stai ancora decidendo come dovrebbe essere un deck settore retail, la 2Slides Gallery ospita deck di riferimento reali che puoi studiare o passare come referenceImageUrl per prendere in prestito il loro sistema di design. Sono deck di riferimento, non output API.

Deck di riferimento DHL 2025 e-commerce trends dalla 2Slides Gallery, riferimento stile settore retail
Figura 4: Copertina del deck DHL 2025 E-commerce Trends Report nella 2Slides Gallery. Uno stile pulito e orientato ai dati che funziona come riferimento per un deck categoria o line review.

Deck di riferimento DHL 2025 e-commerce trends dalla 2Slides Gallery, riferimento stile settore retail
Figura 5: Una slide interna dello stesso deck di riferimento. Passare una slide così come referenceImageUrl dice al modello di riutilizzare griglia, palette e trattamento grafico.

Usa una singola immagine di riferimento per campagna e per aspect ratio. Cambiarla tra SKU produce 40 deck che ognuno sembra a posto ma non come una famiglia.

Quanto costa

I crediti sono pay-as-you-go: $5 comprano 2.000 crediti ($0,0025 per credito) e $80 comprano 40.000 ($0,002 per credito). I nuovi account partono con 500 crediti gratuiti, circa 8 sell sheet per un test.

VolumePer SKUCrediti al meseUSD approssimativi
20 SKU/mese: sell sheet 6 pagine + launch deck 16:9 8 pagine60 + 810 = 87017.400$42,50 (un pacchetto da 20.000 crediti)
20 SKU/mese: aggiungi un deck social 4:5 6 pagine870 + 610 = 1.48029.600$60-$74 a seconda del pacchetto
500 SKU/mese: sell sheet + launch deck 16:9870435.000circa $870 a $0,002 per credito
500 SKU/mese: tutti e tre i deck1.480740.000circa $1.480 a $0,002 per credito

Solo i sell sheet sono economici: 500 sell sheet PPTX di 6 pagine costano 30.000 crediti, circa $60. I deck con design a immagine sono dove va il budget, quindi genera il launch deck una volta per SKU e il sell sheet una volta per SKU per mercato.

Per confronto, l'API di Gamma (vedi developers.gamma.app) offre automazione simile ma richiede un piano Pro per le chiavi API; le chiavi 2Slides funzionano su qualsiasi account. 2Slides è il nostro prodotto, quindi considera questo nel confronto.

Fast PPT o slide con design a immagine per questo caso d'uso?

NecessitàUsaPerché
L'account manager modifica prezzi, sostituisce una slide, inoltra a un buyerFast PPT generatePPTX nativo, 10 crediti/pagina, themeId fisso per brand
Il deck deve corrispondere esattamente al key visual campagnacreate-like-thisSistema di design derivato da referenceImageUrl
Carosello social o formato verticalecreate-like-this con aspectRatio "4:5" o "9:16"PDF più immagini per pagina, pronto per la pubblicazione
Presentazione narrata prodotto o MP4 per listing marketplacecreate-like-this poi generate-narration (210 crediti/pagina)I job Fast PPT non possono essere narrati

Errori comuni

  • Superare il rate limit in un import bulk. 6 richieste/min per chiave vale per ogni endpoint di generazione. Spazia le submission di 10 secondi o mettile in coda; non usare Promise.all.
  • Chiave API in tema Shopify o script storefront. Le chiavi devono vivere server-side (runner, connessione Make o funzione serverless); tutto nel browser è leggibile da chiunque.
  • Aspettarsi di narrare un sell sheet Fast PPT. generate-narration accetta solo job da create-pdf-slides o create-like-this. Se vuoi un video prodotto narrato, parti dal deck con design a immagine.
  • Passare responseLanguage: "de". Il parametro prende un nome lingua: "German", "Japanese", "Spanish". I codici non sono riconosciuti.
  • Inserire l'intero record PIM in userInput. Liste lunghe di attributi producono slide confuse. Riassumi prima a caratteristiche e specifiche rilevanti per il buyer; le colonne CSV del Passo 1 sono il filtro.
  • Lasciare che il planner scelga il numero di pagine per un run catalogo. page: 0 va bene per un one-off, ma un page fisso mantiene il costo credito per SKU identico per budget.

Domande Frequenti

Posso generare deck prodotto direttamente da un export CSV Shopify?

Sì. Il CSV prodotto Shopify contiene titolo, body, prezzo variante e URL immagine necessari; il builder del Passo 1 mappa quelle colonne in userInput. Aggiungi colonne target_retailer e market, o derivale dai tag. Il runner poi chiama generate per il sell sheet PPTX e create-like-this per il launch deck, una riga alla volta.

Come mantengo centinaia di launch deck on brand?

Passa lo stesso key visual campagna come referenceImageUrl a ogni chiamata create-like-this, e tieni un riferimento per aspect ratio. Il sistema di design è derivato da quell'immagine, quindi i deck condividono palette, tipo e composizione. Per il sell sheet modificabile, codifica un themeId per brand così ogni PPTX viene dallo stesso template.

Quanto tempo richiede un run di 100 SKU?

Il collo di bottiglia è l'invio: a 6 richieste al minuto, tre deck per SKU significa uno SKU ogni 30 secondi, quindi 100 SKU si inviano in circa 50 minuti. I job Fast PPT finiscono in circa 30 secondi ciascuno; i deck con design a immagine completano in background mentre continui a inviare. Il polling a 10 richieste al minuto aggiunge circa 30 minuti per passata.

Quanto costa un singolo SKU in crediti?

Un sell sheet Fast PPT di 6 pagine costa 60 crediti (circa $0,15). Un launch deck 2K di 8 pagine con design a immagine costa 10 crediti di pianificazione più 800 di pagina, 810 in totale (circa $2,03). Un deck social 4:5 di 6 pagine costa 610 crediti. Tutti e tre insieme sono 1.480 crediti, circa $2,96 al prezzo del pacchetto da $80 ($0,002 per credito).

Lo stesso script può produrre deck in tedesco e giapponese?

Sì. Imposta responseLanguage su "German" o "Japanese" nello stesso corpo richiesta e il deck viene scritto in quella lingua dal tuo brief inglese. Ogni variante linguistica è un job separato allo stesso costo in crediti. Metti prezzi specifici per mercato e nome retailer nel brief così numeri e contesto sono localizzati oltre al testo.

Prossimi passi

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free