Att publicera LinkedIn-karuseller låter enkelt tills du gör det varje vecka. Exportera slides. Döp om filer. Ladda upp. Upptäck att ordningen är fel. Rätta till. Och gör om allt nästa tisdag.
Den här Figma LinkedIn-automationen träffar marknadschefer först, ärligt talat. Men byråledare och founders som fortfarande “bara sköter publiceringen” själva känner det också. Resultatet är rakt: konsekventa, varumärkesanpassade karusellinlägg som publiceras automatiskt, med ett Telegram-meddelande som säger att det funkade (eller varför det inte gjorde det).
Nedan ser du hur flödet körs, vad det automatiserar från start till mål och vad du justerar för att matcha dina mallar och ditt publiceringsschema.
Så fungerar den här automationen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Figma till LinkedIn – karuseller via Telegram
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Extract from File1", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch1", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n4@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory2", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Search latest news1", pos: "b", h: 48 }
n6@{ icon: "mdi:wrench", form: "rounded", label: "Think1", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Date & Time1", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n10@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory3", pos: "b", h: 48 }
n11@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger1", pos: "b", h: 48 }
n12@{ icon: "mdi:wrench", form: "rounded", label: "MCP Client1", pos: "b", h: 48 }
n13["<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/>Generate posts1"]
n14["<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/>Get Linkedin user info1"]
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/>Initialize upload URN1"]
n16["<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/>Upload Posts as binary1"]
n17@{ icon: "mdi:cog", form: "rounded", label: "Convert to binary1", pos: "b", h: 48 }
n18["<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/>Create Linkedin post1"]
n19["<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/>Get uploaded file URN1"]
n20@{ icon: "mdi:robot", form: "rounded", label: "Linkedin Writer1", pos: "b", h: 48 }
n21@{ icon: "mdi:robot", form: "rounded", label: "Carousel Ideator1", pos: "b", h: 48 }
n22["<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/telegram.svg' width='40' height='40' /></div><br/>Success1"]
n23["<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/telegram.svg' width='40' height='40' /></div><br/>Error1"]
n1 --> n19
n6 -.-> n20
n2 --> n18
n2 --> n23
n2 --> n1
n12 -.-> n21
n7 -.-> n20
n3 --> n17
n4 -.-> n20
n10 -.-> n21
n13 --> n0
n20 --> n21
n21 --> n13
n11 --> n20
n17 --> n16
n0 --> n14
n8 -.-> n20
n8 -.-> n21
n5 -.-> n20
n18 --> n22
n19 --> n2
n15 --> n3
n14 --> n15
n16 --> n19
n9 -.-> n21
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 n11 trigger
class n9,n20,n21 ai
class n8 aiModel
class n6,n12 ai
class n4,n10 ai
class n2 decision
class n13,n14,n15,n16,n18,n19 api
classDef customIcon fill:none,stroke:none
class n13,n14,n15,n16,n18,n19,n22,n23 customIcon
Varför det här spelar roll: LinkedIn-karuseller är lätta att göra fel
Karusellinlägg är en av de bästa “auktoritetsbyggarna” på LinkedIn, men publiceringsprocessen är märkligt skör. En missad slide, en export i fel storlek eller en uppladdning som misslyckas utan att säga till, och ditt inlägg ser slarvigt ut. Det handlar inte bara om tid. Det är den mentala belastningen av att komma ihåg varje litet steg, särskilt när du publicerar enligt schema. Och om flera personer rör processen börjar varumärket driva direkt: typsnitt ändras, spacing justeras och tonaliteten i texten glider.
Det bygger snabbt på. Här är var det oftast faller isär.
- Någon exporterar fel uppsättning ramar från Figma, så karusellen blir ofullständig eller i fel ordning.
- Texten skrivs om i “sista milen”, vilket gör att inläggen slutar låta som ert varumärke.
- Att ladda upp tillgångar med många slides till LinkedIn tar så pass lång tid att publiceringen skjuts “till senare”. Senare blir aldrig.
- När ett inlägg misslyckas får du ofta veta det först timmar senare, efter att tillfället passerat.
Det du bygger: Figma-baserad karusellpublicering till LinkedIn med Telegram-notiser
Det här flödet gör dina Figma-designer till publiceringsklara LinkedIn-karuseller, automatiskt. Det startar enligt ett schema (dagligen, veckovis eller den takt du väljer). Sedan skapar det LinkedIn-inläggstexten (valfritt med AI), väljer en karusellmall från ditt designbibliotek och renderar en full uppsättning slides genom att fylla i platshållare i mallen. Därefter förbereder det karusellen för LinkedIns uppladdningsprocess, konverterar de genererade slidesen till rätt filformat och laddar upp dem som ett dokument med flera sidor. Till sist publicerar det inlägget och skickar en Telegram-bekräftelse, så du slipper gissa om det fungerade.
Flödet börjar med en schemalagd trigger i n8n. Därifrån bygger det inläggstext (statisk eller AI-genererad), genererar en karusellbatch från din Figma-baserade mall via Templated och laddar upp resultatet till LinkedIn. Telegram stänger loopen med en lyckad- eller misslyckad-notis.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du publicerar tre LinkedIn-karuseller i veckan. Manuellt kanske du lägger cirka 20 minuter på att exportera slides, kontrollera storlekar, ladda upp dokumentet och fixa oundvikliga “varför saknas slide 7?”-problem. Det är ungefär en timme i veckan, plus kontextbyten. Med det här flödet lägger du några minuter på att sätta ämnet (eller låta AI skissa det) och själva körningen blir oftast klar på under en minut, inklusive rendering och uppladdning. Du får Telegram-bekräftelsen, och sen är det klart.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Templated för att rendera Figma-baserade karusellmallar
- LinkedIn Developer-app för att aktivera OAuth-behörigheter för publicering
- Templated API-nyckel (hämta den i dina kontoinställningar i Templated)
Kunskapsnivå: Medel. Du kopplar OAuth-uppgifter, klistrar in en API-nyckel och justerar några fält så att de matchar dina mallvariabler.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett schema kickar igång. n8n triggar körningen enligt din valda takt, så publiceringen sker pålitligt istället för att bero på någons kalenderpåminnelser.
Inläggstexten förbereds. Flödet kan generera LinkedIn-text med en AI-modell (med valfri “färskhet” via ett nyhetssökverktyg) och formaterar sedan resultatet till en korrekt strukturerad form som fungerar för publicering.
Din Figma-mall blir riktiga slides. Flödet pratar med Templated för att hämta mallalternativ, väljer rätt och genererar en batch karusellbilder genom att fylla i platshållarfält (titlar, underrubriker, datum, allt du designat för).
LinkedIn-uppladdning, sedan bekräftelse. Det hämtar din LinkedIn-profilinfo, initierar en uppladdning, konverterar de genererade slidesen till korrekt binärt format, laddar upp och publicerar till sist inlägget. Telegram skickar ett lyckat-meddelande eller en felnotis med tillräckligt med detaljer för att felsöka snabbt.
Du kan enkelt ändra schemat och logiken för mallval för att rotera designer, byta publiceringsdagar eller växla mellan personliga och företagssidor. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den schemalagda triggern
Ställ in schemat som startar arbetsflödet för generering av inlägg till sociala medier.
- Lägg till och öppna Scheduled Run Trigger.
- I Rule → Interval definierar ni den frekvens ni vill ha (t.ex. dagliga eller veckovisa körningar).
- Bekräfta att Scheduled Run Trigger är ansluten till Compose LinkedIn Copy enligt exekveringsflödet.
Steg 2: anslut primära LinkedIn-tjänster
Koppla in LinkedIn API-anropen som hämtar användarprofilen, initierar uppladdningsresurser, laddar upp media och publicerar det slutliga inlägget.
- Öppna Fetch LinkedIn Profile och ställ in URL till
https://api.linkedin.com/v2/userinfo. - Inloggningsuppgifter krävs: Anslut era linkedInOAuth2Api-uppgifter (även konfigurerade med httpBearerAuth och linkedInCommunityManagementOAuth2Api i den här noden).
- Öppna Init Upload Resource och ställ in URL till
https://api.linkedin.com/rest/documents?action=initializeUpload. - Ställ in JSON Body till
{ "initializeUploadRequest": { "owner": "urn:li:person:{{ $json.sub }}" } }. - Inloggningsuppgifter krävs: Anslut era linkedInOAuth2Api-uppgifter i Init Upload Resource, Upload Binary Slides, Retrieve Upload URN och Publish LinkedIn Post.
Steg 3: konfigurera AI-generering av copy
Konfigurera AI-agenten som skapar copy för LinkedIn-inlägget med hjälp av research-, resonemangs- och minnesverktyg.
- Öppna Compose LinkedIn Copy och ställ in Text till
=Create a Linkedin post.. - Öppna OpenAI Chat Engine och välj Model
gpt-4o-mini. - Inloggningsuppgifter krävs: Anslut era openAiApi-uppgifter i OpenAI Chat Engine. Den här språkmodellen används av Compose LinkedIn Copy och Design Carousel Plan.
- Öppna Session Memory Buffer och ställ in Session Key till
{{ $now.format('dd-LL-yyyy') }}med Session ID Type inställd på customKey. - Öppna Query Recent News och bekräfta att meddelandeinnehållet använder
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}. - Inloggningsuppgifter krävs: Anslut era perplexityApi-uppgifter i Query Recent News. Det här verktyget är anslutet till Compose LinkedIn Copy som ett AI-verktyg.
- Verifiera att Reasoning Tool och Current Date Time är anslutna som AI-verktyg till Compose LinkedIn Copy (inga inloggningsuppgifter krävs för dessa verktyg).
Steg 4: konfigurera planering och generering av karusell
Gör om den genererade copytexten till en strukturerad karusellplan och trigga batchgenereringen av mallar.
- Öppna Design Carousel Plan och ställ in Text till
{{ $json.output }}. - Öppna Carousel Memory Buffer och ställ in Session Key till
{{ $now.format('dd-LL-yyyy') }}med Session ID Type inställd på customKey. - Öppna Structured JSON Parser och bekräfta att JSON Schema Example matchar det karusellmall-schema ni förväntar er.
- Öppna Template MCP Client och ställ in Endpoint URL till
https://templated.cometai.eu/mcpmed Authentication inställd på bearerAuth. - Inloggningsuppgifter krävs: Anslut era httpBearerAuth-uppgifter i Template MCP Client. Det här verktyget används av Design Carousel Plan.
- Öppna Generate Carousel Batch och ställ in URL till
https://templated.cometai.eu/api/batches/4/generate. - Ställ in JSON Body till
{{ $json.output }}och säkerställ att Send Body är aktiverat. - Inloggningsuppgifter krävs: Anslut era httpBearerAuth-uppgifter i Generate Carousel Batch.
Steg 5: förbered och ladda upp media till LinkedIn
Avkoda den genererade karusellen, konvertera den till binärdata, ladda upp den till LinkedIn och polla för resursens status.
- Öppna Decode File Payload och ställ in Operation till
binaryToPropery. - Öppna Map Attachment Field och ställ in attachment till
{{ $('Decode File Payload').item.json.data }}. - Öppna Convert Attachment File och ställ in Operation till
toBinarymed Source Property inställd påattachment. - Öppna Upload Binary Slides och ställ in URL till
{{ $('Init Upload Resource').item.json.value.uploadUrl }}med Content Type inställd på binaryData. - Öppna Retrieve Upload URN och ställ in URL till
https://api.linkedin.com/rest/documents/{{ $('Init Upload Resource').item.json.value.document }}. - Öppna Route by Status och bekräfta att villkoren kontrollerar
{{ $json.status }}förAVAILABLE,PROCESSING_FAILEDochPROCESSING. - Öppna Delay Interval Check och ställ in Amount till
3så att arbetsflödet väntar innan status kontrolleras igen.
PROCESSING, säkerställ att uppladdningsresursen och den binära payloaden är giltiga, och att Delay Interval Check ger LinkedIn tillräckligt med tid att bearbeta dokumentet.Steg 6: konfigurera publicering och notifieringar
Publicera LinkedIn-inlägget och skicka notifieringar vid lyckat eller misslyckat resultat.
- Öppna Publish LinkedIn Post och ställ in URL till
https://api.linkedin.com/rest/posts. - Ställ in JSON Body till
{ "author": "{{ $json.owner }}", "commentary": {{ JSON.stringify($('Compose LinkedIn Copy').item.json.output) }}, "visibility": "PUBLIC", "distribution": { "feedDistribution": "MAIN_FEED", "targetEntities": [], "thirdPartyDistributionChannels": [] }, "content": { "media": { "title": "Media", "id": "{{ $json.id }}" } }, "lifecycleState": "PUBLISHED", "isReshareDisabledByAuthor": false }. - Inloggningsuppgifter krävs: Anslut era linkedInOAuth2Api-uppgifter i Publish LinkedIn Post (även konfigurerade med httpBearerAuth och linkedInCommunityManagementOAuth2Api).
- Öppna Notify Success och ställ in Text till
Created new post. - Öppna Notify Failure och ställ in Text till
Failed to create new post. - Inloggningsuppgifter krävs: Anslut era telegramApi-uppgifter för både Notify Success och Notify Failure.
Steg 7: testa och aktivera ert arbetsflöde
Kör ett kontrollerat test för att bekräfta att generering, uppladdning, publicering och notifieringar fungerar end-to-end.
- Klicka på Execute Workflow för att köra Scheduled Run Trigger manuellt.
- Verifiera att Compose LinkedIn Copy output:ar ett inlägg och att Design Carousel Plan producerar giltig JSON för Generate Carousel Batch.
- Bekräfta att Upload Binary Slides returnerar en lyckad uppladdning och att Retrieve Upload URN ger statusen
AVAILABLE. - Kontrollera att Publish LinkedIn Post slutförs och att Notify Success skickar Telegram-meddelandet.
- När allt är verifierat, slå på arbetsflödet till Active så att det körs enligt schemat.
Tips för felsökning
- LinkedIn OAuth-uppgifter kan löpa ut eller sakna rätt scopes. Om publiceringen misslyckas, kontrollera behörigheterna i din LinkedIn Developer-app och återanslut OAuth-uppgiften i n8n först.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på tomma svar.
- Templated API-nycklar och mall-ID:n måste matcha din workspace. Om karusellgenereringen returnerar tomt eller fel, bekräfta API-nyckeln och verifiera att den valda mallen finns i Templated.
Snabba svar
Cirka 15 minuter om dina konton och mallar är redo.
Nej. Du kopplar konton och justerar några mappningsfält för dina mallvariabler.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in användning av Templated och eventuella API-kostnader för AI-modeller (OpenAI-anrop kostar ofta bara några cent styck, beroende på storleken på din prompt).
Två alternativ: n8n Cloud (managed, 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 körningar men kräver grundläggande serveradministration.
Ja, och det bör du förmodligen. Du kan byta schema i “Scheduled Run Trigger”, ändra hur mallar väljs via Template MCP Client och justera platshållarmappningarna i steget “Map Attachment Field”. Vanliga justeringar är att rotera mellan flera karusellmallar, posta till en företagssida istället för en personlig profil och ersätta AI-skriven text med en fast caption för återkommande annonseringar.
Oftast är det utgångna OAuth-uppgifter eller saknade LinkedIn-behörigheter för publicering. Återanslut din LinkedIn OAuth-uppgift i n8n och bekräfta sedan att din LinkedIn Developer-app har rätt scopes aktiverade för innehållspublicering. Om det bara misslyckas ibland kan du slå i rate limits eller köra flera inlägg för tätt, så att glesa ut körningarna kan hjälpa.
En typisk körning publicerar en karusell per exekvering, och LinkedIn i sig begränsar volymen (cirka 25 inlägg/dag för personliga profiler och cirka 100/dag för företagssidor).
Ofta ja, eftersom det här flödet har många rörliga delar: mallrendering, dokumentuppladdning i flera steg, villkorsstyrd routing och väntan/retries. n8n hanterar förgreningslogik snyggt, och self-hosting innebär att du inte betalar per litet steg när volymen växer. Zapier eller Make kan vara enklare för grundläggande automationer som “posta en textuppdatering”, men karuseller är där det blir pilligt och dyrt. Vill du ha en second opinion på avvägningar, prata med en automationsexpert så kvalitetssäkrar vi din setup.
Sätt upp det här en gång och låt sedan din publiceringstakt rulla utan veckostressen. Flödet tar hand om de repetitiva delarna så att du kan fokusera på idéerna och budskapet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.