Dina produktsidor ska inte kännas som en aldrig sinande redigeringskö. Men när du hanterar dussintals (eller hundratals) SKU:er blir texterna snabbt inkonsekventa. En person skriver ”premiumläder”, en annan skriver ”äkta läder”, och plötsligt felsöker du ton och korrekthet i stället för att sälja.
E-handelsansvariga brukar se det först. Marketing leads märker det när SEO:n tappar och returerna börjar smyga upp. Och byråteam som skriver om kunders kataloger? Samma röra. Den här Shopify copy automation skapar tydliga, varumärkesanpassade beskrivningar utifrån produktbilder och spårar sedan varje utkast i Google Sheets så att du kan granska, godkänna och publicera med mindre risk.
Nedan ser du hur flödet körs, var texterna kommer ifrån och vad du behöver för att få det live utan att göra det till ett ”stort techprojekt”.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Shopify + Google Sheets: enhetlig produktcopy
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:memory", form: "rounded", label: "Session Memory2", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Analyze image", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Message a model in Perplexity", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "Shopify Content Generator", pos: "b", h: 48 }
n12@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet1", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Limit1", pos: "b", h: 48 }
n24@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n25@{ icon: "mdi:database", form: "rounded", label: "Update row in sheet", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n28@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n13 --> n2
n27 --> n11
n2 --> n27
n0 -.-> n11
n24 --> n12
n12 --> n13
n3 -.-> n11
n4 -.-> n1
n1 -.-> n11
n11 --> n25
n9 -.-> n11
n28 --> n12
end
subgraph sg1["Flow 2"]
direction LR
n14@{ icon: "mdi:cog", form: "rounded", label: "Every 5 Minutes", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Shopify Products"]
n16@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet2", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code5"]
n18@{ icon: "mdi:database", form: "rounded", label: "Update row in sheet1", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If2", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Limit2", pos: "b", h: 48 }
n22@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet2", pos: "b", h: 48 }
n23@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If3", pos: "b", h: 48 }
n29["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code1"]
n20 --> n19
n23 --> n22
n29 --> n23
n17 --> n20
n19 --> n18
n14 --> n16
n22 --> n21
n16 --> n15
n15 --> n29
n15 --> n17
end
subgraph sg2["Schedule Flow"]
direction LR
n30@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger1", pos: "b", h: 48 }
n31["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request1"]
n32@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n33@{ icon: "mdi:cog", form: "rounded", label: "Summarize", pos: "b", h: 48 }
n34@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n35@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields2", pos: "b", h: 48 }
n36@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n37@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet1", pos: "b", h: 48 }
n36 --> n32
n36 --> n37
n32 --> n35
n33 --> n34
n35 --> n33
n31 --> n36
n30 --> n31
end
subgraph sg3["Error Flow"]
direction LR
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Error Trigger", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model2", pos: "b", h: 48 }
n8@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Message a model in Perplexity1", pos: "b", h: 48 }
n26@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet in Googl..", pos: "b", h: 48 }
n5 --> n6
n8 -.-> n6
n7 -.-> n6
n10 -.-> n6
n26 -.-> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n24,n28,n30,n5 trigger
class n1,n2,n11,n6 ai
class n3,n4,n7 aiModel
class n0,n8 ai
class n20,n23,n36 decision
class n12,n25,n16,n18,n22,n34,n37,n26 database
class n15,n31 api
class n17,n29 code
classDef customIcon fill:none,stroke:none
class n15,n17,n29,n31 customIcon
Problemet: produktbeskrivningar glider iväg, och du betalar för det
De flesta butiker har inte ett ”copywriting-problem”. De har ett operationsproblem. Nya produkter läggs in, bilder ändras, leverantörer skickar ofullständig info och teamet fyller luckorna manuellt. Det är då misstagen händer. Någon gissar ett material som inte syns. En annan kopierar en gammal mall som inte passar den här SKU:n. Sedan redigerar du igen, korrekturläser igen och omformaterar body_html för Shopify-teman, vilket ärligt talat är den värsta sortens sitta-syssla. Under tiden växer katalogen och dina standarder hamnar tyst på efterkälken.
Friktionen byggs på. Här är var det oftast brister.
- Beskrivningar skrivs utan en konsekvent källa till sanning, så varje nyanställd levererar en ny ”stil”.
- Manuell text introducerar onödig risk eftersom personer spekulerar om detaljer som inte är bekräftade av produktbilderna.
- Du tappar tid på fram-och-tillbaka-granskningar i Slack eller e-post eftersom det inte finns en enda plats som spårar status, utkast och fel.
- När du väl bestämmer dig för att ”fixa katalogen” fastnar du i batcharbete vid sämsta möjliga tidpunkt (lanseringsveckan).
Lösningen: bildförankrade utkast + granskningskontroll i Google Sheets
Det här n8n-flödet gör din Shopify-katalog till en strukturerad, spårbar produktionslina för produkttexter. Det kontrollerar regelbundet Shopify efter produkter som har bilder men tom beskrivning, och hämtar bara artiklar som matchar dina regler (till exempel en säsongstagg som currSeas:SS2025). Sedan analyserar GPT‑4o Vision produktbilden och extraherar enbart det som är synligt sant (material, stängningstyp, klackform, sula och så vidare). Därefter skriver Claude 3.5 Sonnet själva beskrivningen i ett styrt format: kort, nyttodriven, konsekvent ton och korrekt formaterad HTML som fungerar bra med Shopify-teman. Om du vill ha extra träffsäkerhet kring leverantörs- eller varumärkespåståenden kan Perplexity ta fram officiell kontext så att du slipper gissa.
Allt går via Google Sheets: produkter förbereds, utkast skrivs tillbaka för granskning och du spårar ”Redo”, ”Under granskning”, ”Godkänd” eller vilken status du föredrar. Fel loggas också med förklaringar på vanlig svenska, så att det inte tar en eftermiddag att åtgärda en trasig behörighet.
Det du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du lägger in 50 nya produkter på en vecka. En typisk manuell process tar ungefär 10 minuter per SKU för att granska bilder, skriva en beskrivning, formatera den för Shopify och klistra in den. Det är cirka 8 timmar, och det blir oftast mer när redigeringarna börjar. Med det här flödet blir ”arbetet” granskning: du kanske lägger 1–2 minuter per SKU på att godkänna utkast i Google Sheets, vilket är runt 1–2 timmar totalt. Resten kör på schema varannan minut, så din backlog växer inte till en snöboll.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Shopify Admin API access token för Products read och Orders read
- Google Sheets för att förbereda produkter, spåra status och revidera
- OpenAI API-nyckel (hämta den från din OpenAI-dashboard)
- OpenRouter API-nyckel (hämta den från ditt OpenRouter-konto)
- Perplexity API-nyckel (hämta den från dina Perplexity API-inställningar)
Svårighetsgrad: Medel. Du kopplar konton, klistrar in API-nycklar och mappar några kolumner i arket, men du behöver inte skriva kod.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15 minuters konsultation).
Så fungerar det
Ett schema (och valfri manuell körning) startar flödet. Flödet kör på en tät timer för textgenerering, plus ett separat dagligt schema för säljanalyser. Du kan även trigga genereringsflödet manuellt när du vill testa på en liten batch.
Shopify-produkter hämtas och filtreras. n8n anropar Shopify REST API, går igenom sidor via Link-headers och sparar page_info-pekaren i ett ProcessingState-ark så att nästa körning kan fortsätta säkert. Ett kodfilter behåller bara kvalificerade artiklar, som produkter med bild och utan nuvarande beskrivning.
AI genererar ”säker” copy utifrån det som syns. GPT‑4o Vision extraherar fysiska attribut från bilden, sedan skriver Claude den kundnära beskrivningen enligt dina formateringsregler. Perplexity kan lägga till verifierad kontext om en leverantör eller ett varumärke när du behöver det, vilket hjälper dig att undvika påhittade påståenden.
Google Sheets blir din kontrollpanel. Utkast, statusar och fel skrivs till specifika flikar (Products, Error_log, Sales Analytics), så granskning blir centraliserad och sökbar. Du kan enkelt justera prompten för din varumärkesröst och dina regler för statusen ”redo för AI” efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggertypen
Det här arbetsflödet använder flera triggers för att starta produktbearbetning, försäljningsspårning och manuella körningar.
- Lägg till och konfigurera Five Minute Cron så att den körs var 5:e minut med Cron Expression inställt på
*/5 * * * *. - Konfigurera Scheduled Trigger A så att den kör produktbeskrivningspipelinen med ert önskade intervall (använder standardregeln för schema enligt konfiguration).
- Konfigurera Scheduled Trigger B för daglig försäljningsspårning med Trigger At Hour inställt på
14och Trigger At Minute inställt på1. - Behåll Manual Run Trigger för manuell testning och ad-hoc-körningar av produktflödet.
- Aktivera Error Event Trigger för att fånga arbetsflödesfel för felanalysgrenen.
Steg 2: anslut Google Sheets
Flera Google Sheets-noder hanterar produktköer, bearbetningsstatus, försäljningsloggning och felloggar.
- I Retrieve Sheet Rows A väljer ni Document
[YOUR_ID]och SheetProducts, och behåller filtret Status inställt påReady for AI Description. - I Retrieve Sheet Rows B väljer ni Document
[YOUR_ID]och SheetProcessingState. - I Append Sheet Row B bekräftar ni att den lägger till rader i Sheet
Productsmed mappade fält som Product ID{{$json['Product ID']}}och Image url{{$json['Image URL']}}. - I Update Sheet Row A behåller ni Operation inställt på
updateoch mappar batch number till{{$json['batch number']}}och page_info_next till{{$json.page_info}}. - I Update Sheet Row Main säkerställer ni att Operation är
updateoch att Matching Columns inkluderar Product ID. - Konfigurera Append Sales Row och Append Zero Sales Row så att de skriver till shopify_daily_sales med Date inställt på
{{ DateTime.now().setZone('Australia/Melbourne').minus({days: 1}).toISODate() }}och Total Sales till{{$json.sum_current_price}}eller=0. - Konfigurera Log Error to Sheet så att den lägger till i Error_log med timestamp inställt på
{{$now}}och Reason of Error inställt på{{$fromAI('Reason_of_Error', ``, 'string')}}. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till alla Google Sheets-noder (7+ noder hanterar produktdata, status, försäljningsspårning och felloggar).
Steg 3: anslut Shopify och hantering av paginering
Shopify-produkter och ordrar hämtas via HTTP-förfrågningar, där pagineringen bearbetas och lagras för batch-spårning.
- I Retrieve Shopify Products ställer ni in URL till
https://peter-sheppard.myshopify.com/admin/api/2024-04/products.jsonoch frågeparametrarna limit till200och page_info till{{$json.page_info_next}}. - Inloggningsuppgifter krävs: Anslut era shopifyAccessTokenApi-inloggningsuppgifter till Retrieve Shopify Products.
- I Parse Pagination Data behåller ni JavaScript-koden som den är för att extrahera page_info_next från Link-headern.
- I Pagination Check säkerställer ni att villkoret kontrollerar att
{{$json.has_next_page}}är true. - I Map Batch Fields ställer ni in batch number till
{{$('Retrieve Sheet Rows B').item.json['batch number'] + 1}}och page_info till{{$json.page_info}}.
Retrieve Shopify Products skickar utdata parallellt till både Filter Eligible Products och Parse Pagination Data.
Steg 4: konfigurera produktfiltrering och vision-analys
Det här avsnittet filtrerar kvalificerade produkter, validerar ID:n och extraherar visuella attribut från bilder.
- I Filter Eligible Products behåller ni JavaScript-filterlogiken som kräver giltiga bilder, tom body_html och taggen
currSeas:SS2025. - I Validate Product ID bekräftar ni att villkoret kontrollerar att
{{$json['Product ID']}}inte är tomt. - I Cap Items A ställer ni in Max Items till
10för att begränsa belastningen på AI-bearbetningen. - I Image Attribute Review behåller ni Resource inställt på
imageoch Image URLs inställt på{{$json['Image url']}}. - Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter till Image Attribute Review.
- I Map Vision Fields mappar ni content till
{{$json.content}}och produktfälten från Cap Items A såsom Product ID{{$('Cap Items A').item.json['Product ID']}}.
Tips: Säkerställ att ert Products-ark har en kolumn Image url som är ifylld, annars kommer Image Attribute Review att returnera tomma resultat och trigga omförsök.
Steg 5: konfigurera AI-copywriting och parsning
Copywriting-agenten genererar strukturerad JSON med hjälp av en språkmodell, minne och verktygsintegrationer.
- I Shopify Copywriting Agent behåller ni Text-prompten enligt konfiguration och säkerställer att alternativet hasOutputParser är aktiverat.
- OpenRouter Chat Engine är ansluten som språkmodell för Shopify Copywriting Agent — inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i OpenRouter Chat Engine.
- Structured Result Parser är ansluten som output parser för Shopify Copywriting Agent — säkerställ att den använder JSON-schemaexemplet för fält som
product_idochgenerated_description. - OpenRouter Chat Engine B är ansluten som språkmodell för Structured Result Parser — inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i OpenRouter Chat Engine B.
- Perplexity Query Tool är kopplat till Shopify Copywriting Agent för research om leverantörens ursprung — inloggningsuppgifter krävs: Anslut era perplexityApi-inloggningsuppgifter i Perplexity Query Tool (lägg till inloggningsuppgifter i verktygsnodens överordnade agentkontext).
- Conversation Memory B tillhandahåller minne för Shopify Copywriting Agent; inga inloggningsuppgifter krävs, men behåll Session Key som
{{$now.minute}}. - I Update Sheet Row Main säkerställer ni att mappningarna använder parsade utdatafält som
{{$json.output.generated_description}}och matchar på Product ID.
⚠️ Vanlig fallgrop: Om Structured Result Parser returnerar ogiltig JSON kan Update Sheet Row Main misslyckas med att mappa utdatafälten. Behåll Auto Fix aktiverat.
Steg 6: konfigurera flödet för försäljningsspårning
Den här grenen hämtar betalda ordrar för föregående dag, summerar totaler och loggar resultat till Google Sheets.
- I Order API Request behåller ni URL inställt på
https://re3-shop.myshopify.com/admin/api/2024-04/orders.jsonoch frågeparametrar för föregående dag med{{$now.setZone('Australia/Melbourne').minus({days: 1}).startOf('day')}}och{{$now.setZone('Australia/Melbourne').minus({days: 1}).set({ hour: 23, minute: 59, second: 59, millisecond: 999 })}}. - Inloggningsuppgifter krävs: Anslut era shopifyAccessTokenApi-inloggningsuppgifter till Order API Request.
- I Orders Present Check behåller ni villkoret som verifierar att
{{$json.orders}}inte är tomt. - Om ordrar finns delar Split Orders List upp arrayen med fieldToSplitOut inställt på
orders, och därefter mappar Map Order Fields current_price till{{$json.current_total_price}}. - Summarize Totals aggregerar current_price med Aggregation inställt på
sum, och därefter skriver Append Sales Row dagens total. - Om inga ordrar finns loggar Append Zero Sales Row ett Total Sales-värde på
=0.
Steg 7: lägg till felhantering
Fel fångas, analyseras av en agent och loggas i ett Google Sheet.
- Säkerställ att Error Event Trigger är kopplad till Failure Analysis Agent för att fånga körningsfel.
- OpenRouter Chat Engine C är ansluten som språkmodell för Failure Analysis Agent — inloggningsuppgifter krävs: Anslut era openRouterApi-inloggningsuppgifter i OpenRouter Chat Engine C.
- Perplexity Query Tool B är kopplat som verktyg för Failure Analysis Agent — inloggningsuppgifter krävs: Anslut era perplexityApi-inloggningsuppgifter i Perplexity Query Tool B (lägg till inloggningsuppgifter i verktygsnodens överordnade agentkontext).
- Log Error to Sheet är också kopplad som ett verktyg till Failure Analysis Agent — inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Log Error to Sheet (inloggningsuppgifterna hör till verktygsnoden, men dess utdata styrs av agenten).
- Basic Memory Cache tillhandahåller minne till Failure Analysis Agent; behåll Session Key inställt på
{{$now.minute}}.
Steg 8: testa och aktivera ert arbetsflöde
Kör kontrollerade tester för att bekräfta att varje gren exekverar korrekt innan ni aktiverar schemalagda triggers.
- Klicka på Execute Workflow på Manual Run Trigger för att testa produktbeskrivningsflödet, och bekräfta sedan att rader uppdateras av Update Sheet Row Main med en Status på
generated. - Kör tillfälligt Scheduled Trigger B manuellt för att verifiera att Append Sales Row skriver ett Total Sales-värde och korrekt datum.
- Framkalla ett fel (t.ex. inaktivera en credential) för att bekräfta att Error Event Trigger loggar till Log Error to Sheet.
- När testerna passerar växlar ni arbetsflödet till Active för att aktivera schemalagda körningar för Five Minute Cron, Scheduled Trigger A och Scheduled Trigger B.
Vanliga fallgropar
- Shopify-behörigheter kan löpa ut eller sakna scopes. Om produkt-hämtningar misslyckas, kontrollera först behörigheterna för din Shopify Admin API-token (Products read, Orders read) i Shopify-admin.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Räkna med cirka 45 minuter om du redan har API-åtkomst och Google Sheetet är skapat.
Nej. Du kommer mest att koppla konton och matcha kolumner i arket mot fält.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in API-användning för OpenAI, OpenRouter (Claude) och Perplexity, vilket beror på hur många produkter du bearbetar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade exekveringar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan ändra filtreringslogiken som väljer kvalificerade produkter (till exempel kräva en säsongstagg eller hoppa över vissa leverantörer) och du kan justera prompterna i noderna Image Attribute Review och Shopify Copywriting Agent så att output matchar din tonalitet. Vanliga justeringar är att tvinga en kortare beskrivningslängd, lägga till din ”säg inte”-lista och göra texterna könsanpassade baserat på dina befintliga produkttaggar.
Oftast är det en utgången token eller saknade API-scopes. Skapa om din Shopify Admin API access token (eller installera om den anpassade appen), uppdatera sedan behörigheten i n8n och kör om ett enda test på en produkt. Det kan också vara en felaktig API-version i sökvägen, eller rate limiting om du försöker bearbeta för många produkter på en gång. Kolla posten i Error_log-arket eftersom det här flödet skriver både en teknisk hint och en förklaring på vanlig svenska.
Det är byggt för skala: Shopify-hämtningar körs i sidor med upp till 200 produkter, och flödet sparar pagineringsstatus så att det kan återuppta korrekt. På n8n Cloud beror kapaciteten på din plans månatliga exekveringar, eftersom varje batchkörning och varje AI-anrop räknas. Om du self-hostar begränsas du främst av din server och API:ernas rate limits. I praktiken börjar de flesta team med en liten gräns (som 10 produkter per körning), bekräftar kvaliteten och ökar sedan volymen när granskningarna flyter.
För det här flödet är n8n oftast en bättre match eftersom det klarar paginering, förgrenad logik och strukturerade outputs utan att bli en dyr labyrint av flera Zaps. Self-hosting är också en stor fördel om du bearbetar stora kataloger. Zapier eller Make kan ändå fungera om du bara vill ha ett lätt flöde ”ny rad → generera text → uppdatera produkt” och inte bryr dig om återupptagbar paginering eller feldiagnostik. Prata med en automatiseringsexpert om du vill ha en snabb rekommendation baserat på antal SKU:er och er granskningsprocess.
När detta väl är i drift slutar produkttexter att vara en återkommande brandkårsutryckning. Du får korrekta utkast, en granskningshistorik i Google Sheets och en katalog som förblir konsekvent när den växer.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.