RSS ska göra innehåll enklare. Sedan inser du att du fortfarande kopierar länkar, skummar artiklar, gör dispositioner, skriver, letar upp en bild och jagar godkännanden i DM. Det är många små steg som på något sätt stjäl hela eftermiddagen.
Content managers märker det först. Men en marketing lead som försöker få iväg veckovisa inlägg, eller en byråägare som jonglerar kundgranskningar, stöter på samma flaskhals. Den här RSS-utkastautomatiseringen gör nya flödesobjekt till granskningsklara utkast (med en omslagsbild) och levererar dem direkt till Telegram.
Du ser exakt vad arbetsflödet gör, vad du behöver för att köra det och vilka resultat du kan förvänta dig när det väl är på plats.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutlig output:
n8n Workflow Template: Google Gemini + Telegram: RSS-utkast för granskning
flowchart LR
subgraph sg0["RSS 1 Flow"]
direction LR
n0["<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/merge.svg' width='40' height='40' /></div><br/>Merge"]
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/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n2@{ icon: "mdi:robot", form: "rounded", label: "Gemini Content Generation", pos: "b", h: 48 }
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/>Json Parser"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Slug Selector", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Generate Image", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Image Renamer", pos: "b", h: 48 }
n7["<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/s3.png' width='40' height='40' /></div><br/>Upload Image to Cloudflare R.."]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Statement", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Statement2", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Get an item", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items2", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Create or update an item", 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/merge.svg' width='40' height='40' /></div><br/>Merge3"]
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Last Content Detection", 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/telegram.svg' width='40' height='40' /></div><br/>Telegram Debugger"]
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/telegram.svg' width='40' height='40' /></div><br/>Telegram Debugger1"]
n20["<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/>Telegram Debugger2"]
n21@{ icon: "mdi:cog", form: "rounded", label: "Convert to File", pos: "b", h: 48 }
n22@{ icon: "mdi:play-circle", form: "rounded", label: "RSS 1", pos: "b", h: 48 }
n23@{ icon: "mdi:play-circle", form: "rounded", label: "RSS 2", pos: "b", h: 48 }
n24@{ icon: "mdi:play-circle", form: "rounded", label: "RSS 3", pos: "b", h: 48 }
n25["<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/>Edit Chat ID"]
n16 --> n2
n16 --> n14
n16 --> n18
n0 --> n6
n22 --> n13
n23 --> n12
n24 --> n11
n1 --> n9
n15 --> n16
n10 --> n15
n3 --> n5
n3 --> n4
n3 --> n1
n8 --> n1
n8 --> n19
n9 --> n17
n9 --> n20
n6 --> n7
n4 --> n0
n5 --> n0
n21 --> n25
n12 --> n10
n12 --> n15
n11 --> n10
n11 --> n15
n13 --> n10
n13 --> n15
n17 --> n21
n2 --> n3
n7 --> n8
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 n22,n23,n24 trigger
class n2,n5 ai
class n8,n9,n16 decision
class n3 code
classDef customIcon fill:none,stroke:none
class n0,n1,n3,n7,n15,n18,n19,n20,n25 customIcon
Problemet: RSS-flöden faller isär vid granskning
Att hämta idéer från RSS låter strukturerat, men processen kollapsar ofta när det är dags att göra “intressant länk” till “utkast någon kan godkänna”. Du läser ett inlägg, klistrar in URL:en i ett dokument, skriver en grov version och försöker sedan minnas vad du redan har hanterat förra veckan. Under tiden frågar någon efter en omslagsbild, en slug, en metabeskrivning och en tydlig överlämning till den som publicerar. Om du gör detta för flera flöden smyger dubletter in och du slutar med att skriva om samma ämne två gånger. Ärligt talat är det den mentala kontextväxlingen som gör mest ont.
Friktionen byggs på. Här är var det brukar spricka.
- Du lägger cirka 30 minuter per artikel bara på att nå ett “första utkast” som är tillräckligt strukturerat för att gå att granska.
- Dubletter av ämnen slinker igenom, vilket betyder bortkastad skrivtid och röriga redaktionella kalendrar.
- Bilder blir en sista-minuten-paniksprint, så inlägg försenas eller publiceras utan ett konsekvent uttryck.
- Utkast finns på för många ställen, så godkännanden blir till trådar av typen “Kan du skicka den filen igen?”.
Lösningen: RSS → Gemini-utkast + omslag → Telegram JSON
Det här arbetsflödet bevakar flera RSS-flöden enligt ett schema (varje timme, dagligen, veckovis — du väljer) och hämtar nyligen publicerade objekt. För varje objekt kontrollerar det en DynamoDB-tabell för att bekräfta att URL:en inte har bearbetats tidigare, så att du inte genererar samma utkast två gånger. När artikeln verkligen är ny tar Google Gemini fram ett komplett bloggutkast i ett strukturerat JSON-format, inklusive titel, metabeskrivning, slug och en prompt för en varumärkesanpassad omslagsbild. Arbetsflödet rensar och tolkar sedan Geminis output (så att du får giltig JSON, inte stökiga kodblock), genererar omslagsbilden, laddar upp den till Cloudflare R2 och paketerar slutligen allt i en enda [slug].json-fil. Den filen skickas till Telegram som ett dokument, redo för granskning och snabb feedback.
Arbetsflödet börjar med RSS-triggers och batchning, kör sedan en deduplikationskontroll i DynamoDB. Gemini skapar inlägget och omslagsbilden, och n8n bygger ihop den slutliga payloaden. Telegram tar emot den färdiga JSON-filen, så att granskningar sker på ett ställe.
Det du får: automatisering vs. resultat
| Det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du följer 3 RSS-källor och vanligtvis gör 5 objekt per vecka till utkastkandidater. Manuellt tar även ett “snabbt” flöde cirka 20 minuter att läsa och göra disposition, 40 minuter att skriva utkastet och ytterligare 10 minuter att hitta eller briefa en bild. Räkna med cirka 70 minuter per styck, alltså runt 6 timmar i veckan. Med det här arbetsflödet gör du mestadels bara granskning: RSS-triggern körs automatiskt, Gemini genererar utkastet och Telegram får en JSON-fil plus länk till omslagsbild. Din tid blir “skumma och godkänn”, ofta 10 minuter per utkast, så du hamnar närmare en timme i veckan.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Gemini för artikelutkast och bilder
- Telegram för att ta emot granskningsklara JSON-filer
- AWS DynamoDB-uppgifter (skapa i AWS IAM och lägg sedan till i n8n)
Svårighetsnivå: Medel. Du kopplar ihop några tjänster, sätter behörigheter och verifierar att JSON-outputen matchar vad dina granskare förväntar sig.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
RSS-triggers hämtar nya objekt. Arbetsflödet bevakar flera flöden (till exempel publikationer som Search Engine Journal och TechCrunch) och samlar in nya URL:er enligt ditt schema.
Deduplikation stoppar upprepningar. Varje URL kontrolleras mot en DynamoDB-tabell. Om länken redan finns stoppar arbetsflödet för det objektet och skickar en snabb debug-notis till Telegram, så att du vet att den medvetet hoppades över.
Gemini genererar innehållet och bildprompten. För nya artiklar producerar Gemini ett komplett utkast i JSON, inklusive slug, metabeskrivning och hela brödtexten. Ett kodsteg rensar svaret och tolkar det pålitligt, eftersom AI-output kan bli rörig om du inte tvingar fram formatering.
Omslagsbilden skapas och lagras. Gemini genererar en 1200×630-bild, filen döps om med sluggen och laddas upp till Cloudflare R2. Om uppladdningen misslyckas får Telegram en varning i stället för att tillgången försvinner i tystnad.
Telegram får ett enda granskningsunderlag. Arbetsflödet slår ihop utkastets JSON med den hostade bild-URL:en, konverterar det till en [slug].json-fil och skickar den till dina Telegram-mottagare som ett dokument.
Du kan enkelt ändra RSS-källorna så att de matchar din nisch och sedan skicka den färdiga filen till en annan kanal utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera RSS-feed-triggaren
Konfigurera de tre RSS-triggerkällorna som matar workflowet och styr hur ofta nya objekt kontrolleras.
- Öppna RSS Trigger Alpha och ställ in Feed URL till er primära RSS-länk (för närvarande tom).
- I RSS Trigger Alpha, behåll Poll Times som konfigurerat:
everyHourocheveryWeek. - Öppna RSS Trigger Beta och ställ in Feed URL till en sekundär RSS-länk, och behåll sedan Poll Times på
everyWeek. - Öppna RSS Trigger Gamma och ställ in Feed URL till en tredje RSS-länk, med Poll Times inställt på
everyWeekochweekday: 5vidhour: 12. - Verifiera att varje trigger är kopplad till sin batch-nod: RSS Trigger Alpha → Batch Items A, RSS Trigger Beta → Batch Items B, RSS Trigger Gamma → Batch Items C.
Steg 2: anslut AWS DynamoDB för deduplicering
Använd DynamoDB för att förhindra duplicerade blogginlägg och styra innehållsskapande baserat på tidigare bearbetade länkar.
- Öppna Fetch Record och ställ in Operation till
getmed Table Name satt tillprocessed_rss_linksoch nyckeln article_url satt till={{ $json.link }}.
Credential Required: Anslut era aws-credentials. - Säkerställ att Batch Items A, Batch Items B och Batch Items C routas in i Fetch Record och Combine Sources C för enhetlig bearbetning.
- Öppna Combine Sources C och bekräfta att Mode är
combinemed Combine By satt tillcombineAll. - Konfigurera New Article Gate för att kontrollera om article_url är tomt, med
={{ $json.article_url }}och operatorn empty. - Öppna Upsert Record och ställ in Table Name till
processed_rss_links, och mappa article_url till={{ $json.link }}.
Credential Required: Anslut era aws-credentials. - Bekräfta den parallella splitten: New Article Gate skickar utdata både till Gemini Article Draft och Upsert Record parallellt.
Steg 3: sätt upp AI-utkast och parsing
Skapa bloggutkastet med Gemini och parsa det till en strukturerad JSON-payload för efterföljande steg.
- Öppna Gemini Article Draft och bekräfta att Model är
models/gemini-2.5-flashmed promptmeddelandet som inkluderar{{ $json.link }}.
Credential Required: Anslut era googlePalmApi-credentials. - Granska Parse Gemini Output och behåll den befintliga JavaScript-parsningslogiken intakt för att extrahera blogg-JSON.
- Notera den parallella splitten: Parse Gemini Output skickar utdata till Create Cover Image, Select Slug Field och Combine Streams B parallellt.
- Öppna Select Slug Field och ställ in slug till
={{ $json.slug }}för att skicka vidare sluggen. - Konfigurera Create Cover Image med Resource satt till
imageoch Prompt satt till=**Image Size: 1200x630 aspect Ratio 1.91:1** {{ $json.image_generation_prompt }}.
Credential Required: Anslut era googlePalmApi-credentials.
Steg 4: konfigurera bildhantering och lagring
Slå ihop slug- och bilddata, byt namn på bilden, ladda upp den till R2 och validera att uppladdningen lyckades.
- Bekräfta att Combine Streams slår ihop sluggen från Select Slug Field och bilddata från Create Cover Image med Mode
combineoch Combine BycombineAll. - Öppna Rename Image File och ställ in fileName till
={{ $json.slug }}.{{ $json.fileExtension }}med Include Other Fields aktiverat. - Öppna Upload Image to R2 och ställ in Operation till
upload, Bucket Name tillsaywize-mediaoch File Name till={{ $json.fileName }}.
Credential Required: Anslut era s3-credentials. - Kontrollera Image Upload Check för att validera att
={{ $json.success }}ärtrueinnan ni går vidare.
Steg 5: mappa slutligt innehåll och leverera JSON-filen
Validera innehållet, mappa fält till slutligt schema, serialisera till JSON och skicka till Telegram.
- Bekräfta att Combine Streams B slår ihop det parsade innehållet och status för bilduppladdningen före valideringssteget.
- Öppna Content Validation Check och behåll den nuvarande villkorskedjan för att styra skapandet av slutlig output.
- I Map Final Content, mappa fälten exakt som konfigurerat, inklusive image_url satt till
=https://cdn.saywize.com/{{ $json.slug }}.pngoch article_url satt till={{ $('Combine Sources C').item.json.link }}. - Öppna Serialize to File och bekräfta att Operation är
toJsonmed File Name satt till={{ $json.slug }}.json. - Öppna Send File to Telegram och ställ in Operation till
sendDocumentmed Binary Data aktiverat.
Credential Required: Anslut era telegramApi-credentials.
Steg 6: lägg till fel- och statusaviseringar
Konfigurera Telegram-aviseringar för befintligt innehåll, bildfel och valideringsfel.
- Öppna Alert Existing Article och bekräfta meddelandetexten:
=Since the article already exists, the blog post could not be created: {{ $json.article_url }}.
Credential Required: Anslut era telegramApi-credentials. - Öppna Alert Image Failure och behåll meddelandet
An error occurred during image creation..
Credential Required: Anslut era telegramApi-credentials. - Öppna Alert Blog Failure och behåll meddelandet
I encountered a problem while creating a blog..
Credential Required: Anslut era telegramApi-credentials. - Verifiera routningen: New Article Gate false path → Alert Existing Article, Image Upload Check false path → Alert Image Failure och Content Validation Check false path → Alert Blog Failure.
Steg 7: testa och aktivera ert workflow
Kör ett fullständigt test för att bekräfta RSS-inhämtning, AI-generering, bilduppladdning och leverans till Telegram.
- Kör RSS Trigger Alpha manuellt (eller valfri trigger) med ett exempelobjekt från RSS för att starta workflowet.
- Verifiera att New Article Gate släpper igenom ett nytt objekt och att Gemini Article Draft producerar ett giltigt svar som parsas av Parse Gemini Output.
- Bekräfta att bilden laddas upp genom att kontrollera Upload Image to R2 och ett
true-resultat i Image Upload Check. - Kontrollera att Serialize to File skapar en JSON-fil och att Send File to Telegram levererar dokumentet till er chatt.
- När allt är verifierat, slå på workflowet Active för att aktivera automatiserad körning i produktion.
Vanliga fallgropar
- AWS DynamoDB-uppgifter kan gå ut eller kräva specifika behörigheter. Om något slutar fungera: kontrollera först status för AWS IAM access key och tabellens behörigheter.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre nedströms fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 45 minuter om dina konton och nycklar är klara.
Nej. Du kopplar mestadels ihop tjänster och klistrar in autentiseringsuppgifter. Den enda “koden” är redan inkluderad i arbetsflödet för att rensa Geminis JSON-output.
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 användning av Google Gemini API och lagringskostnader för Cloudflare R2.
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 körningar men kräver grundläggande serverhantering.
Ja, men du ändrar det sista leveranssteget. Byt ut noden “Send File to Telegram” mot en Slack-filuppladdning (eller ett meddelande med en länk), och behåll noden “Serialize to File” så att granskare fortfarande får ett enda strukturerat underlag. Vanliga justeringar är att byta RSS-källor, vässa Gemini-prompten för er tonalitet och justera valideringskontroller så att utkast med låg kvalitet flaggas i stället för att levereras.
Oftast beror det på bot-token eller chat-ID. Kontrollera Telegram-uppgifterna i n8n igen, bekräfta att boten är tillagd i målchatten och att den har behörighet att skicka dokument. Om du skickar till en kanal behöver boten ofta administratörsbehörighet. Håll också koll på körningar som fallerar tidigare (till exempel vid bilduppladdning), eftersom filnoden då aldrig får någon giltig bilaga.
Många, så länge din plan och dina API-begränsningar klarar det. På n8n Cloud Starter jobbar du inom månatliga körningsgränser; på högre nivåer kan du köra mer. Om du self-hostar finns ingen körningsgräns, men serverresurser och Geminis rate limits blir flaskhalsen. I praktiken hanterar de flesta team utan problem från dussintals till några hundra RSS-objekt per vecka när batchning och deduplikation är på plats.
För just det här arbetsflödet är n8n oftast bättre. Deduplikation mot DynamoDB, rensning av felformaterad AI-JSON, förgrening baserat på validering och filgenerering som ett dokument är betydligt enklare när du har full kontroll över logiken. Zapier och Make kan göra delar av detta, men komplexa flöden blir snabbt dyra och sköra. Om du bara behöver “RSS-objekt → skicka en sammanfattning” funkar de verktygen bra. Om du vill ha ett granskningsklart utkastpaket med lagring och skyddsräcken vinner n8n oftare än inte. Prata med en automationsexpert om du vill ha en snabb rekommendation baserad på din volym.
När det här väl rullar slutar RSS vara en läslista och blir ett stabilt flöde av utkast du faktiskt kan godkänna. Sätt upp det en gång och lägg sedan din tid på att redigera idéerna som förtjänar det.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.