Att publicera LinkedIn-karuseller låter enkelt tills du försöker göra det konsekvent. Du hittar en story, skriver om den, formaterar slides, exporterar en PDF, laddar upp den och skriver sedan en caption. Nästa dag, samma sak igen. Det är inte svårt. Det är bara ett arbete som aldrig tar slut.
Det här drabbar marknadschefer först, eftersom innehållskalendern aldrig stannar. Men byråägare som försöker hålla flera kunder synliga känner det också, och soloföretagande grundare fastnar i samma loop. Den här automatiseringen för Gemini LinkedIn carousels gör en TechRadar-story till en karusell-PDF som är redo att publiceras och publicerar den åt dig, så att du kan hålla en jämn takt utan att bo i Canva.
Nedan ser du hur workflowet körs klockan 06:00, hur det väljer en story som passar din profil och hur PostNitro plus LinkedIns uppladdnings-API:er tar hand om de tråkiga delarna.
Så här fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Gemini + LinkedIn: karuseller publiceras jämnt
flowchart LR
subgraph sg0["6:00 AM Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "6:00 AM Trigger", pos: "b", h: 48 }
n1["<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/form.svg' width='40' height='40' /></div><br/>On form submission"]
n2["<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/>TechRadar News"]
n3["<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/>Parse HTML"]
n4@{ icon: "mdi:brain", form: "rounded", label: "Gemini Flash 2.5", pos: "b", h: 48 }
n5["<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/>Parse LLM Response"]
n6@{ icon: "mdi:cog", form: "rounded", label: "ImportSlides embedPost", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Decide which News to Choose", pos: "b", h: 48 }
n8["<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/>Linkedin User URN"]
n9["<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 Upload URL"]
n10["<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 PDF"]
n11["<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/>Download PDF"]
n12["<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/>Post to LinkedIn"]
n13@{ icon: "mdi:robot", form: "rounded", label: "Gemini Generate", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "Gemini Generate1", 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/code.svg' width='40' height='40' /></div><br/>Parse LLM Response1"]
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/code.svg' width='40' height='40' /></div><br/>Get Title and Description"]
n3 --> n7
n10 --> n14
n11 --> n10
n9 --> n11
n2 --> n3
n0 --> n2
n13 --> n15
n4 -.-> n7
n14 --> n12
n8 --> n9
n1 --> n16
n5 --> n16
n15 --> n6
n6 --> n8
n16 --> n13
n7 --> n5
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 n0,n1 trigger
class n7,n13,n14 ai
class n4 aiModel
class n2,n8,n9,n10,n11,n12 api
class n3,n5,n15,n16 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n5,n8,n9,n10,n11,n12,n15,n16 customIcon
Utmaningen: publicera karuseller utan att förlora dina morgnar
Karuseller är bra för räckvidd, sparningar och kommentarer i stil med “det här behövde jag”. Nackdelen är produktionslinan bakom varje inlägg. Du kopierar rubriker från ett flöde, avgör vad som är relevant, skriver om till en berättelse och omvandlar sedan berättelsen till slide-vänliga delar. Efter det återstår fortfarande export-och-uppladdningsdansen, plus en caption som inte låter som att den fogades ihop i sista minuten. Missar du två dagar dör din plan om att “vi postar konsekvent” i det tysta.
Det blir snabbt mycket. Och friktionen uppstår på samma ställen varje gång:
- Att välja en daglig story blir ett mini-researchprojekt, särskilt när du försöker matcha en nisch och inte bara återposta det som trendar.
- Karusellformatering är pilligt, eftersom slides behöver tydlig struktur, inte långa stycken, och du slutar med att skriva om samma idé tre gånger.
- Att ladda upp PDF:er till LinkedIn är irriterande manuellt, och att göra det på mobilen gör det ännu värre.
- När någon i teamet “bara sköter publiceringen” sjunker kvaliteten eller så hoppas godkännanden över, vilket gör att tonaliteten glider över tid.
Lösningen: TechRadar → Gemini → PostNitro → LinkedIn, helt automatiserat
Det här workflowet körs varje morgon klockan 06:00 (eller när du vill) och hämtar senaste nyhetsflödet från TechRadar. Det parsar RSS-posterna till korrekt formaterad JSON, och sedan utvärderar Gemini vilken story som passar din profil och målgrupp bäst. När en rubrik har valts genererar workflowet karusellklar text som redan är strukturerad för slides, inte bloggstycken. PostNitro omvandlar det strukturerade innehållet till en designad karusell och returnerar en PDF-fil. Slutligen laddar workflowet upp PDF:en till LinkedIn, genererar inläggstext med Gemini och publicerar inlägget via LinkedIns uppladdningsflöde och API-anrop för publicering. Du kan också trigga allt med ett formulär när du vill ersätta dagens val med din egen titel och beskrivning.
Workflowet startar från en schematrigger eller en formulärtrigger. Gemini sköter både urval och skrivande, medan PostNitro sköter det visuella bygget och PDF-utmatningen. LinkedIns uppladdningssteg hämtar fil-ID:t och kopplar det till det slutliga inlägget så att publiceringen sker i ett svep.
Vad som förändras: före vs. efter
| Det här elimineras | Effekten du märker |
|---|---|
|
|
Effekt i praktiken
Säg att du publicerar 5 karuseller i veckan. Manuellt ser en typisk runda ut så här: 20 minuter för att välja och sammanfatta en story, cirka 45 minuter för att skriva om till slides, ytterligare 20 minuter för att skapa/exportera en PDF, plus 10 minuter för uppladdning och caption. Det är ungefär 1,5 timmar per inlägg, eller cirka 7 timmar i veckan. Med den här automatiseringen lägger du kanske 10 minuter på att granska den genererade karuselltexten (eller skicka in ett formulär med din egen vinkel), sedan bygger den PDF:en och publicerar medan du gör annat.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Gemini för att välja stories och skriva karuseller.
- PostNitro för att rendera karusellslides till en PDF.
- API-åtkomst till LinkedIn (hämta det från inställningarna i din LinkedIn developer-app)
Kunskapsnivå: Medel. Du kopplar API:er och klistrar in inloggningsuppgifter, men du bygger ingen applikation.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i workflowet
En schemalagd eller manuell trigger startar körningen. Klockan 06:00 triggar schemat automatiskt, eller så kan du skicka in ett formulär när du vill mata in en specifik titel och beskrivning i pipelinen.
Workflowet hämtar TechRadar och städar upp flödet. En HTTP-request hämtar de senaste posterna, och sedan omvandlar ett litet kodsteg RSS-utdata till läsbar JSON så att AI:n kan utvärdera det pålitligt.
Gemini väljer bästa storyn och skriver innehåll som är redo för slides. Ett Gemini-steg rankar vilken nyhet som “passar” din profil, och sedan genererar ett annat Gemini-steg karuselltexten som strukturerad data som kan delas upp i slides. Ett parsningssteg kontrollerar svaret så att PostNitro får felfria fält.
PostNitro renderar karusellen och sedan publicerar LinkedIn. PostNitro returnerar en PDF-fil, workflowet initierar en uppladdningssession, laddar upp PDF:en, hämtar dokument-ID:t, genererar inläggstexten och publicerar det färdiga LinkedIn-inlägget via HTTP-requests.
Du kan enkelt byta källflöde (TechRadar) till en annan RSS-källa utifrån dina behov. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementation
Steg 1: konfigurera triggertypen
Sätt upp de schemalagda och manuella triggers som startar arbetsflödet, så att det kan köras dagligen eller vid behov via formulärinlämning.
- Öppna Scheduled Morning Trigger och ställ in schemaregeln så att den körs vid
6(triggerAtHour) för er dagliga automation. - Öppna Form Submission Trigger och bekräfta att Path är
create-carousaloch att Button Label ärCreate Carousal. - I Form Submission Trigger, behåll Form Title som
Linkedin Carousaloch Response Mode somlastNode. - Säkerställ att formulärfälten inkluderar Title och Description med de angivna platshållarna, så att manuella inskick kan skickas vidare till innehållsgenereringen.
Steg 2: anslut nyhetskällan och parsa RSS
Hämta RSS-flödet och parsa poster till strukturerad JSON för AI-urval.
- Konfigurera Fetch Tech News Feed med URL satt till
https://www.techradar.com/feeds.xml. - I Extract RSS Items behåller ni den angivna JavaScript-koden som parsar RSS-XML:en och returnerar en
result-array. - Verifiera kopplingsflödet: Scheduled Morning Trigger → Fetch Tech News Feed → Extract RSS Items.
Steg 3: sätt upp AI-val av rubrik och sammanställning av sammanfattning
Använd Gemini för att välja bästa rubriken, och slå sedan ihop titel och beskrivning till en gemensam sammanfattning för efterföljande AI-steg.
- Öppna Gemini Flash Selector och välj er Gemini-modellkoppling. Credential Required: Anslut era
googlePalmApi-uppgifter. - I Select Relevant Headline ställer ni Text till hela prompt-uttrycket som börjar med
=You are an AI assistant...och säkerställer att det refererar till RSS-listan via{{ JSON.stringify($json.result.map((item, index) => ({ number: index+1, title: item.title })), null, 2) }}. - Bekräfta att Gemini Flash Selector är ansluten som språkmodell för Select Relevant Headline (uppgifter läggs till på Gemini Flash Selector, inte på chain-noden).
- I Read LLM Choice behåller ni koden som parsar det valda numret och läser från Extract RSS Items:
const item = $('Extract RSS Items').first().json.result[number]. - I Assemble Title Summary behåller ni Mode som
runOnceForEachItemoch koden som returnerarcombinedTitleochcombinedDescription.
Tips: Arbetsflödet tar emot både automatiserad RSS-input och manuell formulärinput, eftersom Form Submission Trigger och Read LLM Choice båda skickar output till Assemble Title Summary.
Steg 4: generera karusellslides och bygg PDF:en
Skapa karusellinnehållet med Gemini, parsa JSON till slides och importera till PostNitro för att producera en PDF.
- I Generate Carousel Copy väljer ni modellen
models/gemini-2.5-flashoch behåller den långa prompten som endast returnerar giltig JSON. Credential Required: Anslut eragooglePalmApi-uppgifter. - Säkerställ att prompten innehåller uttrycken för input:
{{ $json.combinedTitle }}och{{ $json.combinedDescription }}. - I Parse Carousel JSON behåller ni koden som tar bort kodstaket (code fences) och parsar JSON från
$input.first().json.content.parts[0].text. - Konfigurera PostNitro Slide Import med Operation satt till
importSlides, Slides JSON satt till={{ JSON.stringify( $json.slides ) }}, och ersätt[YOUR_ID]för både brandId och templateId. Credential Required: Anslut erapostNitroApi-uppgifter.
⚠️ Vanlig fallgrop: Om Generate Carousel Copy returnerar något annat än giltig JSON kommer Parse Carousel JSON att misslyckas. Behåll promptens krav “Return only raw JSON” intakt.
Steg 5: konfigurera uppladdning och publicering till LinkedIn
Ladda upp PostNitro-PDF:en till LinkedIn, generera inläggstexten och publicera karusellinlägget.
- I Retrieve LinkedIn User ställer ni URL till
https://api.linkedin.com/v2/userinfooch använder Authentication som fördefinierad credential-typ. Credential Required: Anslut eralinkedInOAuth2Api-uppgifter. - Konfigurera Initialize Upload Link med URL
https://api.linkedin.com/rest/documents?action=initializeUpload, MethodPOST, och JSON Body som={"initializeUploadRequest":{"owner":"urn:li:person:{{ $json.sub }}"}}. Behåll headernLinkedIn-Version: 202307. Credential Required: Anslut eralinkedInOAuth2Api-uppgifter. - Ställ in Fetch PDF File URL till
={{ $('PostNitro Slide Import').item.json.data.result.data }}och outputta filen som=my.pdfi svarsinställningarna. - I Send PDF Upload ställer ni URL till
={{ $json.value.uploadUrl }}, Method tillPUT, Content Type tillbinaryData, och Input Data Field Name till=my.pdf. Inkludera headernContent-Type: application/pdf. Credential Required: Anslut eralinkedInOAuth2Api-uppgifter. - I Generate Post Text väljer ni modellen
models/gemini-2.5-flashoch behåller prompten som outputtar råtext med{{ $('Assemble Title Summary').item.json.combinedTitle }}och{{ $('Assemble Title Summary').item.json.combinedDescription }}. Credential Required: Anslut eragooglePalmApi-uppgifter. - I Publish LinkedIn Post ställer ni URL till
https://api.linkedin.com/rest/posts, MethodPOST, och behåller JSON-body med uttrycken:{{ $('Retrieve LinkedIn User').item.json.sub }},{{ JSON.stringify($json.content.parts[0].text) }},{{ $('Parse Carousel JSON').item.json.slides[0].heading }}, och{{ $('Initialize Upload Link').item.json.value.document }}. Behåll headernLinkedIn-Version: 202408. Credential Required: Anslut eralinkedInOAuth2Api-uppgifter.
Steg 6: testa och aktivera ert arbetsflöde
Kör en testkörning för att verifiera hela kedjan från innehållsgenerering till publicering på LinkedIn.
- Klicka på Execute Workflow och använd antingen Form Submission Trigger med exempel på Title/Description eller vänta på att Scheduled Morning Trigger körs.
- Bekräfta att flödet körs i ordning: Fetch Tech News Feed → Extract RSS Items → Select Relevant Headline → Read LLM Choice → Assemble Title Summary → Generate Carousel Copy → Parse Carousel JSON → PostNitro Slide Import → Retrieve LinkedIn User → Initialize Upload Link → Fetch PDF File → Send PDF Upload → Generate Post Text → Publish LinkedIn Post.
- En lyckad körning ska sluta med att ett LinkedIn-inlägg skapas och att ett giltigt dokument-id returneras i Publish LinkedIn Post.
- Växla arbetsflödet till Active för att aktivera daglig publicering kl. 06:00 och inskick vid behov.
Se upp med
- LinkedIn API-inloggningsuppgifter kan löpa ut eller kräva extra behörigheter. Om något skapar fel, kontrollera först inställningarna i din LinkedIn developer-app och att token är giltig.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Cirka en timme om du redan har API-nycklarna redo.
Ja, men någon behöver vara bekväm med API-nycklar och att testköra några rundor. Ingen “riktig kodning”, bara noggrann uppsättning och lite felsökning.
Ja. n8n har ett gratis alternativ för egen hosting 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 Gemini API-användning och din PostNitro-plan.
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serveradministration.
Du kan byta ut TechRadar-hämtningen mot ett annat RSS-flöde genom att ändra HTTP-requesten “Fetch Tech News Feed”. Om du vill ha striktare urval, justera prompten i “Gemini Flash Selector” så att den bara väljer stories inom din nisch. Vanliga anpassningar är att ändra antal slides i den genererade JSON:en, justera PostNitro template- och brand-ID:n och att routa utkast till Google Sheets innan publicering.
Oftast beror det på utgångna tokens eller saknade LinkedIn-behörigheter för uppladdning och publicering. Skapa en ny access token, bekräfta att appen har rätt scopes, uppdatera sedan credentials i n8n och kör om ett testobjekt. Om PDF-uppladdningen lyckas men publiceringen misslyckas, kontrollera HTTP-svaren för “Initialize Upload Link” och “Publish LinkedIn Post” för ett användbart felmeddelande. Rate limiting kan också dyka upp om du kör många tester under en kort period.
Med n8n Cloud Starter kan du köra några tusen körningar per månad, vilket räcker gott för daglig publicering. Om du self-hostar finns ingen körningsgräns, men det beror på din server och hur lång tid PostNitro-renderingen tar. I praktiken kör de flesta team detta en gång per dag och varumärke, plus några manuella formulärtriggers för specialinlägg.
Ofta, ja. Det här flödet har flera steg (RSS-parsning, AI-urval, strukturerad JSON-generering, PDF-hantering, flera LinkedIn-uppladdningsanrop), och n8n hanterar den typen av grenar och dataformning utan att bli en skör hög med zaps. Alternativet för egen hosting spelar också roll, eftersom community-noder (som PostNitros) är vanliga i workflows som detta. Zapier eller Make kan fortfarande fungera om du förenklar processen, till exempel genom att bara generera text och ladda upp manuellt. Om du vill ha exakt vägen “PDF-karusell till LinkedIn” och är osäker på vilken väg som går snabbast, prata med en automationsexpert.
När detta väl är igång kör din LinkedIn-karusellpipeline i bakgrunden och dina morgnar förblir dina. Granska när du vill, publicera konsekvent och gå vidare till arbetet som faktiskt får verksamheten att växa.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.