Dina X- (Twitter-)omnämnanden kommer inte prydligt. De dyker upp som en rörig ström av åsikter, skärmdumpar, citat utan halva sammanhanget och ”är det här en kris?”-ögonblick som av någon anledning alltid landar när du redan har fullt upp.
Sheets Slack alerts löser det. Marknadschefer brukar känna av brandkårsutryckningen först, men grundare och kommunikationsansvariga hamnar i samma loop: scrolla, få panik, kopiera-klistra in, och sedan hoppas att du inte missade det enda inlägget som faktiskt spelar roll.
Det här arbetsflödet gör om nya tweet-rader i Google Sheets till en strukturerad sammanfattning för din vanliga Slack-kanal, plus separata brådskande aviseringar för det som kräver uppmärksamhet nu. Du får lära dig vad det gör, vad du behöver och hur du anpassar det till ditt varumärke.
Så fungerar den här automatiseringen
Här är det kompletta arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Google Sheets + Slack: smartare X-omnämnanden
flowchart LR
subgraph sg0["Schedule 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/code.svg' width='40' height='40' /></div><br/>Code"]
n1@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Count", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "counter", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Limit", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "set increase", 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/code.svg' width='40' height='40' /></div><br/>Code1"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "set count and cursor", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n11@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n12@{ icon: "mdi:database", form: "rounded", label: "getTweetsFromDatabase", pos: "b", h: 48 }
n13@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet1", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", 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/>Translator"]
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/>Tweet Scraper"]
n17@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "AI Analyst", pos: "b", h: 48 }
n4 --> n14
n4 --> n5
n0 --> n1
n9 --> n16
n7 --> n8
n2 --> n3
n5 --> n6
n10 --> n18
n3 --> n9
n14 --> n10
n18 --> n15
n15 --> n13
n6 --> n7
n16 --> n0
n17 --> n2
n1 --> n4
n8 --> n3
n12 -.-> n18
n11 -.-> n18
end
subgraph sg1["Schedule Flow"]
direction LR
n19@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n20@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n21["<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/>parseAlerts"]
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/slack.svg' width='40' height='40' /></div><br/>Send a message"]
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/slack.svg' width='40' height='40' /></div><br/>Send a message1"]
n24@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n25@{ icon: "mdi:robot", form: "rounded", label: "Strategist Agent", pos: "b", h: 48 }
n26["<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/>parser"]
n27["<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/>summary"]
n28@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger1", pos: "b", h: 48 }
n26 --> n25
n27 --> n22
n21 --> n24
n24 --> n23
n23 --> n24
n25 --> n27
n25 --> n21
n28 --> n20
n20 --> n26
n19 -.-> n25
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 n17,n28 trigger
class n18,n25 ai
class n11,n19 aiModel
class n4,n10 decision
class n1,n12,n13,n20 database
class n16 api
class n0,n7,n15,n21,n26,n27 code
classDef customIcon fill:none,stroke:none
class n0,n7,n15,n16,n21,n22,n23,n26,n27 customIcon
Varför det här är viktigt: brus från tweet-omnämnanden döljer verklig risk
Social bevakning låter enkelt tills du gör det på riktigt. Omnämnanden kommer i ryck, teamet skummar snabbt och de ”handlingsbara” försvinner mellan ofarligt snack och vag negativitet. Sedan ber någon om en daglig sammanfattning och plötsligt sitter du och syr ihop skärmdumpar, länkar och din egen tolkning i Slack. Det handlar inte bara om tid. Det är mental belastning. Du ifrågasätter vad du missade, och du kan inte bevisa att du hade koll när ledningen vill ha en snabb lägesbild.
Det blir snabbt mycket. Här är var det brukar fallera i de flesta team.
- Nya tweets skannas i all hast, så samma sak dubbelkollas flera gånger under en dag.
- Allt hamnar i en och samma kanal, vilket gör att brådskande frågor ser ut som vanligt brus.
- Manuella sammanfattningar tar ungefär en timme på intensiva dagar, och missar ändå kontext från hela batchen.
- Utan en ”bearbetad”-markering i arket kommer du antingen att dubbelavisera teamet eller tyst hoppa över saker.
Vad du bygger: sammanfattningar från Google Sheets till Slack plus brådskande aviseringar
Det här arbetsflödet fungerar som en analys- och larmmotor ovanpå din insamling av tweets. Enligt schema kontrollerar det ett Google Sheet som fylls med tweet-data (ofta från en Apify Tweet Scraper eller ett liknande scraping-verktyg). Det hämtar bara rader som inte har hanterats ännu genom att leta efter värdet ”Notmarked” i kolumnen action taken. Sedan buntar det ihop de nya tweetsen till en strukturerad prompt och skickar dem till en AI-modell (Google Gemini i det här flödet) för att skapa två saker: en lättläst sammanfattning och en maskinläsbar JSON-lista med brådskande ärenden. Därefter publicerar flödet sammanfattningen på en vanlig Slack-kanal och skickar varje brådskande punkt som ett eget meddelande till en högprioriterad Slack-kanal så att inget kritiskt begravs.
Arbetsflödet startar med schemalagda triggers, filtrerar och aggregerar nya tweet-rader från Google Sheets. AI skapar en sammanfattning plus en ”brådskande”-lista, och Slack får två strömmar: en lugn briefing och en uppsättning fokuserade larm. Korrekt formaterat, konsekvent och repeterbart.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att din scraper lägger in 60 nya omnämnanden i Google Sheets varje dag. Manuellt, även 1 minut per tweet för att skumma, bedöma brådska och klistra in kontext i Slack är ungefär en timme, och det är innan du skriver en sammanfattning. Med det här arbetsflödet lägger du ett par minuter på att bekräfta att arket fylls korrekt och väntar sedan medan Gemini genererar rapporten och Slack publicerar den. De flesta team får tillbaka den timmen på intensiva dagar, och det brådskande slutar försvinna i bruset.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra scrapade tweet-rader.
- Slack för att ta emot sammanfattningar och brådskande aviseringar.
- Google Gemini (PaLM) API-nyckel (hämta den från Google AI Studio / Google Cloud-uppgifter).
Kunskapsnivå: Nybörjare. Du kopplar konton, väljer rätt ark och klistrar in en API-nyckel.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En schemalagd kontroll hämtar nya rader. Arbetsflödet körs enligt schema och tittar i ditt Google Sheet efter tweet-rader där kolumnen action taken fortfarande visar en obearbetad status (som ”Notmarked”).
Tweet-innehållet struktureras och kombineras. Det transformerar tweet-payloaden, begränsar batchen så att du inte överbelastar analysen och aggregerar flera tweets till ett briefing-liknande underlag som en AI-modell kan förstå.
AI skapar två utdata från samma batch. Gemini genererar en läsbar sammanfattning för människor, plus en separat JSON-lista för brådskande ärenden så att n8n kan routa dem en och en. Det finns också ett agent-/chain-steg i flödet som formar svaret till något konsekvent.
Slack får rätt budskap på rätt plats. Sammanfattningen går till din vanliga bevakningskanal, och sedan delas brådskande ärenden upp i individuella aviseringar och skickas till en Slack-kanal med högre prioritet för snabb respons.
Du kan enkelt justera reglerna för brådska och Slack-destinationerna efter dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera schematriggern
Det här arbetsflödet använder två scheman: ett för att samla in tweets och ett annat för att generera en daglig briefing.
- Öppna Scheduled Trigger A och ställ in regeln Interval till önskad insamlingstakt för tweets.
- Öppna Scheduled Trigger B och ställ in regeln Interval med Trigger at hour till
9(eller er föredragna tid för daglig briefing). - Bekräfta att Scheduled Trigger A är ansluten till Initialize Counter och att Scheduled Trigger B är ansluten till Retrieve Pending Rows.
Steg 2: Anslut Google Sheets
Google Sheets lagrar råa tweets och analysresultat. Flera noder kräver samma autentiseringsuppgifter.
- Öppna Append Raw Sheet Row och välj rätt Document och Sheet så att det matchar
[YOUR_ID]ochSheet1. - Mappa fälten i Append Raw Sheet Row exakt som visas, inklusive URL →
{{ $json.url }}och next_cursor →{{ $json.nextCursor }}. - Öppna Append Analysis Row och säkerställ att Sheet är
Sheet2med kolumner som summary →{{ $json.summary }}och date_analyzed →{{ $now }}. - Öppna Retrieve Pending Rows och bekräfta att filtret action taken är lika med
Notmarked. - Credential Required: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Append Raw Sheet Row, Append Analysis Row, Retrieve Pending Rows och Fetch Tweets Tool.
Steg 3: Konfigurera pipelinen för tweet-insamling
Det här steget samlar in tweets, transformerar payloaden och lägger till rådata i Google Sheets samtidigt som cursor-tillståndet hanteras.
- I Initialize Counter ställer ni in count till
1och query tillemergentlabs. - I Set Cursor State ställer ni in counter till
{{ $json.count }}och cursor till{{ $json['next cursor'] }}. - Konfigurera Delay Execution för att styra takten innan API:et anropas.
- Öppna Tweet API Request och ställ in URL till
https://api.twitterapi.io/twitter/tweet/advanced_search. Använd Query Parameters: query →{{ $('Initialize Counter').item.json.query }}, queryType →Latest, cursor →{{ $json.cursor }}. - Credential Required: Anslut era httpHeaderAuth-inloggningsuppgifter till Tweet API Request.
- Säkerställ att Transform Tweet Payload körs efter API-anropet för att dela upp tweets i enskilda objekt för Append Raw Sheet Row.
- Bekräfta räknarloopen: Prepare Increment → Increment Counter Script → Store Count Cursor → Set Cursor State.
Steg 4: Konfigurera AI-baserad bearbetning av insikter
AI-analysen utförs av en agent som använder Gemini, och parsas sedan och lagras. Agenten använder även ett Google Sheets-verktyg.
- I Aggregate Content säkerställer ni att fieldToAggregate aggregerar Content till final.
- Bekräfta att Conditional Check utvärderar att
{{ $('Set Cursor State').item.json.counter }}är lika med1före aggregering. - Konfigurera Route If Data för att routa när
{{ $json.Content }}inte finns och skicka till AI Insight Agent. - I AI Insight Agent ska ni behålla prompten och systemmeddelandet oförändrade. Den använder verktyg för att hämta data och analysera sentiment, brådska och nyckelämnen.
- Credential Required: Anslut era googlePalmApi-inloggningsuppgifter till Gemini Chat Model (språkmodell för AI Insight Agent).
- För Fetch Tweets Tool, notera att det är ett AI-verktyg—inloggningsuppgifter ska läggas till i föräldranoden. Säkerställ att verktyget är kopplat till AI Insight Agent och använder rätt Google Sheets-dokument.
- Verifiera efterbearbetningskedjan: AI Insight Agent → Parse Analysis Text → Append Analysis Row.
Steg 5: Konfigurera strategy LLM chain och parallella utdata
Briefing-kedjan sammanfattar analyserade rader och tar fram åtgärdsbara alerts, och delar sedan upp i parallella spår.
- I Retrieve Pending Rows bekräftar ni att den bara hämtar rader där action taken är lika med
Notmarked. - I Compile Briefing Text behåller ni scriptet som bygger
preparedTextochrowsToUpdate. - I Strategy LLM Chain säkerställer ni att prompten inkluderar
{{ $json.preparedText }}och att batching är satt till1. - Credential Required: Anslut era googlePalmApi-inloggningsuppgifter till Gemini Chat Model B (språkmodell för Strategy LLM Chain).
- Strategy LLM Chain skickar utdata parallellt till både Extract Summary Text och Extract Alert JSON.
--- ACTIONABLE TWEETS JSON --- och JSON-blocket.Steg 6: Konfigurera Slack-notiser
Det här steget postar sammanfattningen till en Slack-kanal och brådskande alerts till en annan via batchbearbetning.
- I Post Summary to Slack ställer ni in Text till
📈 *Brand Sentry: Daily Strategic Briefing* 📈 *Generated on: {{ new Date().toLocaleString('en-IN', { timeZone: 'Asia/Kolkata' }) }}* {{ $json.summaryReport }}. - Credential Required: Anslut era slackOAuth2Api-inloggningsuppgifter till Post Summary to Slack och välj rätt kanal.
- I Iterate Alerts behåller ni batchbearbetningen för att loopa igenom items som returneras från Extract Alert JSON.
- I Dispatch Urgent Alert behåller ni formatet på alert-meddelandet med
{{ $json.urgency }},{{ $json.reason }}och{{ $json.tweetId }}. - Credential Required: Anslut era slackOAuth2Api-inloggningsuppgifter till Dispatch Urgent Alert och välj kanalen för brådskande meddelanden.
Steg 7: Testa och aktivera ert arbetsflöde
Kör arbetsflödet manuellt för att verifiera datainsamling, AI-analys och Slack-notiser innan ni aktiverar det i produktion.
- Klicka på Execute Workflow på Scheduled Trigger A för att testa tweet-inhämtning och bekräfta att rader läggs till i Append Raw Sheet Row.
- Verifiera att AI Insight Agent producerar ett formaterat svar och att Append Analysis Row tar emot fält för sentiment, brådska och sammanfattning.
- Klicka på Execute Workflow på Scheduled Trigger B för att testa briefing-flödet och kontrollera att Post Summary to Slack postar en formaterad rapport.
- Bekräfta att brådskande items flödar genom Extract Alert JSON → Iterate Alerts → Dispatch Urgent Alert.
- När allt fungerar, slå på arbetsflödet till Active så att båda schemana körs automatiskt.
Tips för felsökning
- Google Sheets-inloggningar kan gå ut eller sakna åtkomst till rätt fil. Om det skapar fel, kontrollera autentiseringsuppgiften i Google Sheets-noden och bekräfta att kalkylarket är delat med det kontot.
- Om du använder Wait-noder eller extern hämtning varierar processingtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du att redigera utdata i all evighet.
Snabba svar
Cirka 5–10 minuter om ditt ark och dina konton är redo.
Nej. Du väljer mest rätt Google Sheet, kopplar Slack och klistrar in din Gemini API-nyckel.
Ja. n8n har ett gratis självhostat 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 kostnader för användning av Google Gemini API.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och klarar n8n bra. Självhosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det bör du. De flesta team börjar med att ändra filtret i Google Sheets ”Retrieve Pending Rows” (andra statusvärden), och justerar sedan Gemini-prompten så att ”brådskande” matchar ditt varumärkes riskregler. Du kan också byta Slack-kanalerna i ”Post Summary to Slack” och ”Dispatch Urgent Alert” för att routa per produktlinje, region eller kund. Om du vill analysera andra källor kan du mata in andra rader i samma steg ”Aggregate Content” och behålla resten.
Oftast handlar det om behörigheter. Bekräfta att Google-kontot i din n8n-autentiseringsuppgift kan öppna just det kalkylarket och att arkets namn matchar det du valde i noden. Kontrollera också att dina kolumner finns som förväntat (särskilt action taken), eftersom saknade rubriker kan se ut som ”ingen data” och stoppa aviseringar. Om det fungerade igår men inte idag löser ofta en ny autentisering av Google Sheets-uppgiften problemet.
Mycket för de flesta små team. På n8n Cloud beror din månatliga körningsgräns på planen, och varje körning räknas som en exekvering. Om du självhostar finns inget hårt tak; det beror främst på din server och hur många tweet-rader du batchar in i varje AI-anrop. Praktiskt: börja med att begränsa varje körning till en hanterbar batch (till exempel några dussin rader) och öka sedan när du litar på prompterna och Slack-routningen.
Ofta, ja. Det här arbetsflödet bygger på logik i flera steg (filtrera obearbetade rader, aggregera, dela upp JSON till många meddelanden), vilket är där n8n ofta känns mindre trångt. Du får också möjligheten att självhosta för hög volym utan att betala per task på samma sätt. Zapier eller Make kan ändå fungera om du bara behöver ett enkelt flöde ”ny rad → skicka meddelande” och inte bryr dig om tolkning av brådskande ärenden. Om du är osäker, prata med en automationsexpert och beskriv din volym och dina kanaler.
När det här väl rullar slutar teamet ”bevaka” och börjar agera. Arbetsflödet sköter sortering och sammanfattning så att du kan fokusera på besluten.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.