Att få ett X-konto (Twitter) att se “levande” ut är märkligt tidskrävande. Du öppnar appen för att gilla några inlägg, blir distraherad, glömmer vad du redan gillat och gör om det i morgon. Och om du hanterar mer än ett varumärke eller en profil blir den lilla uppgiften snabbt en daglig syssla.
Det här drabbar growth marketers först, men community managers och solo-founders känner av det också. Med Twitter likes automation håller du kontot aktivt utan att behöva passa det, och du slutar råka gilla samma inlägg igen.
Det här arbetsflödet använder Phantombuster och SharePoint för att rotera gillningar på ett säkert sätt, logga vad som gillats och hålla aktiviteten jämn. Nedan ser du hur det körs, vad som förändras i vardagen och vad du behöver för att få det att fungera.
Så fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Phantombuster + SharePoint: jämna Twitter-gilla-markeringar
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Wait1", 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/code.svg' width='40' height='40' /></div><br/>Get Random Post"]
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/code.svg' width='40' height='40' /></div><br/>Create CSV Binary"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Upload CSV", pos: "b", h: 48 }
n4["<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/phantombuster.png' width='40' height='40' /></div><br/>Get Response"]
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/phantombuster.png' width='40' height='40' /></div><br/>Get Autoliking Agent"]
n6["<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/phantombuster.png' width='40' height='40' /></div><br/>Launch AL Agent"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set ENV Variables", pos: "b", h: 48 }
n8@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Update file", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Download file", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Check if in List"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Wait2", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Prepare Updated Data"]
n15@{ icon: "mdi:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Convert to File", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Get Available Session Cookies", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Extract Cookies", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Select Cookie", pos: "b", h: 48 }
n20@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", 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/phantombuster.png' width='40' height='40' /></div><br/>Get Profile Extractor Agent"]
n22@{ icon: "mdi:cog", form: "rounded", label: "Get List of Accounts", pos: "b", h: 48 }
n23@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Empty", pos: "b", h: 48 }
n24["<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 Request"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request1"]
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/>Prepare Posts"]
n27@{ icon: "mdi:cog", form: "rounded", label: "Wait3", pos: "b", h: 48 }
n28["<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/phantombuster.png' width='40' height='40' /></div><br/>Launch Agent1"]
n12 --> n13
n12 --> n14
n0 --> n4
n13 --> n1
n27 --> n24
n23 --> n13
n3 --> n5
n9 --> n2
n24 --> n25
n10 --> n15
n25 --> n26
n28 --> n27
n26 --> n23
n19 --> n7
n16 --> n9
n18 --> n19
n1 --> n10
n6 --> n0
n11 --> n12
n8 --> n17
n2 --> n3
n15 --> n11
n7 --> n21
n20 -.-> n19
n5 --> n6
n22 --> n28
n14 --> n16
n21 --> n22
n17 --> n18
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 n8 trigger
class n19 ai
class n20 aiModel
class n12,n23 decision
class n24,n25 api
class n1,n2,n11,n14,n26 code
classDef customIcon fill:none,stroke:none
class n1,n2,n4,n5,n6,n11,n14,n21,n24,n25,n26,n28 customIcon
Utmaningen: konsekventa gillningar utan att se spammig ut
På X spelar konsekvens roll. En profil som gillar en handfull relevanta inlägg varje dag tenderar att hålla sig kvar i folks flöde, även om du inte publicerar hela tiden. Men att göra det manuellt är störigt, och ärligt talat är det lätt att göra fel. Du gillar samma inlägg två gånger. Du får slut på bra inlägg att gilla eftersom du kollade en profil men glömde de andra. Eller så blir du upptagen en vecka och hela grejen med “stadig närvaro” rasar.
Det blir snabbt mycket. Här är var det oftast fallerar i riktiga team.
- Någon måste komma ihåg att göra gillningarna varje dag, och det är aldrig den högst prioriterade uppgiften.
- Manuella gillningar gör att dubbel interaktion lätt uppstår, särskilt när flera personer hanterar samma konto.
- Att rotera sessioner säkert är svårt att göra för hand, så aktiviteten kommer ofta från en enda inloggningscookie tills något låser sig.
- Det finns ingen strukturerad logg, vilket betyder att du inte kan bevisa vad ni interagerat med eller felsöka “varför gillade den det där?” i efterhand.
Lösningen: automatiserade gillningar med cookie-rotation + dubblettloggning
Det här arbetsflödet körs på ett schema (varje timme) och gör “lätt interaktion” åt dig på ett kontrollerat sätt. Det hämtar en lista med målprofiler från SharePoint, ber Phantombuster att extrahera senaste tweets (upp till cirka 20 per profil) och väljer sedan en tweet slumpmässigt. Innan något gillas kontrollerar det en SharePoint-hostad loggfil med URL:er som redan har gillats. Om det är en dubblett väntar arbetsflödet och försöker igen så att du inte fortsätter trycka på samma innehåll. När den hittar en ny tweet bygger den en liten CSV, laddar upp den till SharePoint och kör Phantombusters Autolike Agent för att utföra gillningen. Till sist lägger den till den gillade URL:en i loggen så att nästa körning undviker den.
Flödet startar med en schemalagd trigger och ett steg för cookie-rotation (så du inte kör hårt på en session utan avbrott). Sedan extraherar det inlägg, filtrerar bort tomma värden, kontrollerar dubbletter och först därefter skickar det “gilla”-jobbet till Phantombuster. SharePoint fungerar som ett enkelt kontrollcenter för din profillista, sessionscookies och historiken över “redan gillat”.
Vad som förändras: före vs. efter
| Vad detta tar bort | Effekten du märker |
|---|---|
|
|
Praktisk effekt
Säg att du följer 15 profiler och gillar 10 inlägg per dag för att hålla dig synlig. Manuellt lägger du kanske 3 minuter per gillning när du räknar in scrollning, att kontrollera kontot och att inte upprepa dig, alltså cirka 30 minuter per dag. Med det här arbetsflödet lägger du runt 10 minuter på att sätta upp SharePoint-filerna en gång, och sedan är löpande arbete nära noll (körningen sker varje timme och “tiden” är mest att vänta på att Phantombuster ska hämta och gilla). En vanlig vecka ger det ungefär 2–3 timmar tillbaka, plus färre “oj, vi gillade redan den där”-ögonblick.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Phantombuster för att köra Profile Extractor- och Autolike-agenterna.
- Microsoft SharePoint för att lagra cookies, profillista och loggar.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard) för att stödja den agentbaserade urvalslogiken.
Svårighetsnivå: Medel. Du är bekväm med att lägga till autentiseringsuppgifter, redigera en CSV-header och testa en körning i n8n.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Arbetsflödet steg för steg
Ett timschema drar i gång det. n8n kör arbetsflödet på en timer, så engagemanget håller sig konsekvent utan att du behöver komma ihåg något.
SharePoint står för “inputs”. Arbetsflödet laddar ner twitter_session_cookies.txt och din profiles_twitter.csv, tolkar filerna och väljer en sessionscookie att använda i den här körningen.
Phantombuster hämtar senaste tweets. En Profile Post Extractor-agent körs, n8n väntar tills den är klar och hämtar sedan den resulterande CSV:en via HTTP och formaterar den till en användbar lista. Om extractorn inte returnerar något pausar arbetsflödet och försöker igen senare.
En dubblettspärr gör det säkert. n8n väljer en slumpmässig tweet, kontrollerar den mot twitter_posts_already_liked.csv i SharePoint och väntar antingen på ett nytt inlägg (om det är en upprepning) eller uppdaterar loggen och förbereder en CSV med “tweets att gilla”.
Gillningen görs och loggas. CSV:en laddas upp till SharePoint och Phantombusters Autolike Agent körs. Efter en kort väntan hämtar n8n agentens output så att du kan granska vad som hände.
Du kan enkelt ändra källan för profillistan eller körfrekvensen efter dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den schemalagda triggern
Konfigurera det timvisa schemat som startar tweet-liknande pipelinen.
- Lägg till noden Scheduled Run Trigger och öppna dess inställningar.
- Ställ in schemaregeln så att den körs varje timme och sätt Trigger At Minute till
5. - Bekräfta att triggern kopplas till Fetch Session Cookies som första åtgärd.
Steg 2: anslut SharePoint-källor för cookies och profiler
Hämta sessionscookies och profillistan från SharePoint innan ni startar agenterna.
- I Fetch Session Cookies väljer ni SharePoint-Site, Folder och filen
session_cookies.txt. Credential Required: Anslut eramicrosoftSharePointOAuth2Api-uppgifter. - I Load Profile List ställer ni Operation till
updateoch File Name tilltwitter_profiles_to_scrape.csv. Credential Required: Anslut eramicrosoftSharePointOAuth2Api-uppgifter. - Säkerställ att Parse Cookie Text använder Operation
textför att extrahera cookie-innehållet. - Bekräfta att Fetch Session Cookies → Parse Cookie Text → Choose Session Cookie är kopplade i följd.
Steg 3: konfigurera AI-baserat cookie-val och ENV-tilldelningar
Använd AI-agenten för att välja en sessionscookie baserat på tidsindelning och spara ENV-variabler för efterföljande PhantomBuster-steg.
- Öppna Choose Session Cookie och behåll prompten som använder tidsindelning och returnerar
session_cookiei JSON. - Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för Choose Session Cookie. Credential Required: Anslut era
openAiApi-uppgifter i OpenAI Chat Engine (inte i Choose Session Cookie). - I Assign ENV Settings sätter ni ENV_SEARCH_HASHTAGS till
={{ $json.output.parseJson().hashtag }}. - I Assign ENV Settings sätter ni ENV_SESSION_COOKIE till
={{ $('Choose Session Cookie').first().json.output.parseJson().session_cookie }}.
session_cookie. Behåll kravet i prompten om enbart JSON-utdata intakt.Steg 4: kör profilagenten och ladda ned tweet-resultat
Starta profilscraping-agenten, vänta och hämta samt tolka den resulterande tweet-listan.
- I Retrieve Profile Agent ställer ni Operation till
getoch ersätter[YOUR_ID]med ert PhantomBuster-agent-ID. Credential Required: Anslut eraphantombusterApi-uppgifter. - I Start Profile Agent behåller ni Agent ID som
={{ $('Retrieve Profile Agent').item.json.id }}och säkerställer att Arguments JSON innehållerspreadsheetUrlfrån Load Profile List ochsessionCookiefrån Assign ENV Settings. - Ställ in Delay for Agent Amount till
30sekunder innan ni hämtar resultat. - I Fetch Agent Data sätter ni URL till
https://api.phantombuster.com/api/v2/agents/fetch?id=[YOUR_ID]och ersätter[YOUR_ID]. - I Download Result CSV sätter ni URL till
=https://phantombuster.s3.amazonaws.com/{{ $json.data?.orgS3Folder || $json.orgS3Folder }}/{{ $json.data?.s3Folder || $json.s3Folder }}/filtered_result.csv. - I Format Tweet List behåller ni JS-koden som mappar CSV-rader till
tweetUrl-objekt.
[YOUR_ID]-platshållare i PhantomBuster-noderna, annars misslyckas API-anropen.Steg 5: filtrera tomma resultat och förhindra duplicerade likes
Säkerställ att arbetsflödet bara fortsätter när det finns nya tweets och undviker att gilla inlägg igen.
- I Check Empty Results behåller ni villkoret
={{ $json.isEmpty() }}för att routa tomma resultat till Pause for New Post. - I Pick Random Tweet behåller ni JS-koden som väljer en slumpmässig
tweetUrloch returnerarpostUrl. - I Download Liked Log väljer ni SharePoint-filen för gillade inlägg. Credential Required: Anslut era
microsoftSharePointOAuth2Api-uppgifter. - I Extract Log Records aktiverar ni Header Row för att tolka CSV-poster.
- I Detect Duplicate Post behåller ni JS-koden som normaliserar URL:er och kontrollerar dubbletter.
- I Duplicate Check verifierar ni att villkoret använder
={{ $('Detect Duplicate Post').first().json.isDuplicate }}för att routa dubbletter till Pause for New Post.
Steg 6: uppdatera loggen, bygg CSV och kör like-agenten
Lägg till den nya tweeten i loggen över gillade inlägg, ladda upp like-listan och kör PhantomBuster like-agenten.
- I Assemble Updated Log behåller ni JS-koden som slår ihop befintliga loggposter och den nya
postUrl. - Koppla Convert Log to File → Update Liked Log och sätt File Name till
twitter_posts_already_liked.csvmed Change File Content aktiverat. Credential Required: Anslut eramicrosoftSharePointOAuth2Api-uppgifter. - I Build CSV Binary behåller ni JS-koden som genererar
phantombuster_clean.csvoch skriver ut binärdata. - I Upload CSV File sätter ni File Name till
twitter_posts_to_like.csvoch behåller Operationupload. Credential Required: Anslut eramicrosoftSharePointOAuth2Api-uppgifter. - I Retrieve Like Agent och Start Like Agent ersätter ni
[YOUR_ID]med ert PhantomBuster like-agent-ID. Credential Required: Anslut eraphantombusterApi-uppgifter. - I Start Like Agent behåller ni Arguments JSON som refererar till
{{$('Upload CSV File').item.json['@content.downloadUrl']}}och{{ $('Assign ENV Settings').first().json.ENV_SESSION_COOKIE }}. - Ställ in Delay Before Output Amount till
15sekunder och hämta sedan resultat i Fetch Agent Output med OperationgetOutput.
Steg 7: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta cookie-val, tweet-val, dubblettkontroller och agentkörningar innan ni aktiverar schemat.
- Klicka på Execute Workflow för att köra flödet en gång från Scheduled Run Trigger.
- Verifiera att Choose Session Cookie matar ut ett giltigt JSON-fält
session_cookieoch att Assign ENV Settings innehållerENV_SESSION_COOKIE. - Bekräfta att Format Tweet List matar ut en lista med
tweetUrl-objekt och att Pick Random Tweet väljer enpostUrl. - Kontrollera att Duplicate Check routar dubbletter till Pause for New Post och icke-dubbletter till Assemble Updated Log.
- Säkerställ att like-agenten slutförs och att Fetch Agent Output returnerar ett giltigt PhantomBuster-resultat.
- När det fungerar, växla arbetsflödet till Active för att köra varje timme.
Se upp med
- Microsoft SharePoint-autentiseringsuppgifter kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera SharePoint-anslutningen i n8n:s Credentials-vy och bekräfta att arbetsflödet kan läsa och uppdatera filer i mappen “Phantombuster”.
- Om du använder Wait-noder eller extern bearbetning i Phantombuster varierar processingtiderna. Öka väntetiden om efterföljande HTTP Request-noder misslyckas eller returnerar tomma CSV-filer.
- Cookie-rotation fungerar bara om din twitter_session_cookies.txt underhålls. Om cookies är inaktuella kan Phantombuster-körningar misslyckas även om n8n ser “grön” ut, så uppdatera sessionscookies regelbundet och håll filen strukturerad.
Vanliga frågor
Cirka en timme om din SharePoint-mapp och dina Phantombuster-agenter är redo.
Ja, men någon behöver vara bekväm med autentiseringsuppgifter och CSV-filer. Om du kan följa en checklista och testa en körning är det lugnt.
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 OpenAI API-kostnader (ofta några dollar i månaden vid lätt användning) och din Phantombuster-plan.
Två alternativ: n8n Cloud (hanterat, enklast setup) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsat antal körningar men kräver grundläggande serveradministration.
Du kan ändra schemat i noden “Scheduled Run Trigger” och byta målprofiler genom att redigera profiles_twitter.csv i SharePoint. Om din största oro är säkerhet, skärp dubblettreglerna i kodnoden “Detect Duplicate Post” och låt loggfilen växa i stället för att skriva över den. Du kan också ersätta SharePoint-lagringen med en annan fillagring senare, men att behålla en enda CSV för “redan gillat” är nyckelidén.
Oftast beror det på att Phantombuster API-uppgifterna har gått ut eller att en agent inte längre matchar förväntad setup. Koppla om dina Phantombuster-uppgifter i n8n och bekräfta sedan att noderna “Retrieve Profile Agent” och “Retrieve Like Agent” pekar på rätt agenter. Om agenten kör men returnerar tom output, kontrollera din fil med Twitter-sessionscookies i SharePoint eftersom inaktuella cookies kan blockera både extrahering och gillningar.
På n8n Cloud Starter är du normalt helt okej för ett enda varumärke som kör varje timme. Om du self-hostar är antalet körningar inte begränsat, men du begränsas fortfarande av Phantombusters agentkörtid, cookiernas hälsa och hur många profiler du extraherar per körning. I praktiken skalar de flesta team genom att öka profillistan långsamt och hålla koll på tomma resultat, dubbletter eller rate limits. Om du vill ha högre volym kan du överväga att köra mer sällan men extrahera fler profiler per körning, vilket ofta blir mer förutsägbart. Det säkra svaret: börja smått, bevisa stabilitet och skala sedan.
För det här arbetsflödet passar n8n bättre eftersom det hanterar flersteglogik (slumpmässigt urval, filparsning, dubblettkontroller och förgreningar med väntelägen) utan att bli en dyr härva. Du får också möjligheten att self-hosta, vilket spelar roll när du kör varje timme och inte vill räkna varje task. Zapier och Make kan fortfarande fungera om du bara behöver ett enkelt “trigger → gilla”-flöde, men dubbletter och loggning är där det blir klumpigt. Om du vill hålla det pålitligt över tid är n8n det mer flexibla valet. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl rullar slutar “att hålla sig aktiv” vara en daglig uppgift och blir i stället en bakgrundsrutin. Arbetsflödet tar hand om det repetitiva, och du får tillbaka tiden till det arbete som faktiskt gör skillnad.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.