Att återposta videor på X låter enkelt tills du jonglerar länkar, kontrollerar vad som redan har delats och städar upp bildtexter som inte matchar din tonalitet. Sedan råkar du posta en dubblett. Eller så hoppar du över ett bra klipp för att du inte minns om det redan har publicerats.
Det här är den typen av röra som social media managers känner av varje dag. En marknadsförare som kör kampanjer känner det också, och det gör även en kreatör som försöker hålla en jämn takt. Den här X repost automation ger dig ett felfritt, deduplicerat system som återpostar ett målkontos videotweets och loggar varje åtgärd i Google Sheets.
Du får se exakt hur arbetsflödet undviker dubbelpublicering, hur det skapar bättre bildtexter med OpenRouter och vad du behöver för att köra det helt hands-off.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: X + Google Sheets: återposta videor utan dubbletter
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get User ID"]
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/>Get Tweets with Videos"]
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/>Filter Video Tweets"]
n4@{ icon: "mdi:database", form: "rounded", label: "Check Existing URLs", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check New Videos", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Generate Tweet Text", pos: "b", h: 48 }
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/x.dark.svg' width='40' height='40' /></div><br/>Post to X"]
n10@{ icon: "mdi:database", form: "rounded", label: "Update Spreadsheet", pos: "b", h: 48 }
n11@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n9 --> n10
n5 --> n6
n1 --> n2
n7 --> n8
n0 --> n1
n4 --> n5
n3 --> n4
n8 --> n9
n11 -.-> n8
n2 --> n3
n6 --> n7
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 trigger
class n8 ai
class n11 aiModel
class n7 decision
class n4,n6,n10 database
class n1,n2 api
class n3 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n9 customIcon
Problemet: återposta videor utan att tappa bort sig
De flesta “system” för återpostning är en flik i webbläsaren, en anteckning och goda intentioner. Du scrollar ett målkonto, öppnar några videor, kopierar länkar, skriver om bildtexter och hoppas att du inte upprepar gårdagens inlägg. Det är mentalt brusigt arbete och kostnaden smyger sig på. Tio minuter här, femton minuter där. Och när du hanterar mer än ett konto är det lätt att publicera samma klipp två gånger (eller missa de bästa helt) eftersom det inte finns någon pålitlig historik.
Det blir snabbt mycket. Här är var det fallerar i praktiken.
- Att kontrollera “har vi redan postat det här?” blir en daglig skattjakt bland utkast, schemalagda inlägg och gamla trådar.
- Manuella bildtexter glider off-brand, vilket betyder fler redigeringar och svagare engagemang över tid.
- Att copy-pasta URL:er och mediedetaljer till en tracker bjuder in små misstag som senare förstör spårbarheten.
- Om något fallerar halvvägs märker du det ofta inte förrän flera timmar senare, så kön stannar tyst.
Lösningen: schemalagda återposter på X loggade i Google Sheets
Det här arbetsflödet körs enligt schema och gör grovjobbet åt dig. Det slår upp ett specifikt X-användarnamn (Twitter), hämtar senaste tweets som innehåller media och filtrerar ner till enbart videoinlägg. Varje kandidat skrivs in i Google Sheets så att du får en enda källa till sanning för deduplicering och spårning. Sedan bygger arbetsflödet en delbar video-URL, ber en AI-modell (via OpenRouter) att skapa en kort, on-brand bildtext och publicerar återposten på ditt eget X-konto. Till sist uppdaterar det Google Sheet för att markera posten som publicerad, så nästa körning hoppar över den automatiskt.
Arbetsflödet startar med en schemalagd trigger i n8n. Därifrån hämtar HTTP-anrop användar-ID och senaste mediatweets, ett filter plockar ut enbart videoinlägg och Google Sheets blir din loggbok. När en post inte har publicerats ännu genererar OpenRouter bildtexten och n8n publicerar den på X, och därefter uppdateras sheetet med status som klart.
Det du får: automatisering vs. resultat
| Vad arbetsflödet automatiserar | Resultaten du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du återpostar 1 video per dag från ett målkonto. Manuellt kanske du lägger cirka 10 minuter på att hitta ett bra klipp, 5 minuter på att skriva om bildtexten och ytterligare 5 minuter på att logga det, alltså ungefär 20 minuter per dag (cirka 2 timmar i veckan). Med det här arbetsflödet: du lägger kanske 5 minuter på att sätta användarnamnet och prompten en gång, och sedan hanterar varje schemalagd körning hämtning → bildtext → publicering automatiskt. Du gör främst en snabb kontroll i Google Sheet, vilket oftast är en tvåminuterskoll.
Det du behöver
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- X (Twitter) OAuth2 för att läsa tweets och publicera.
- Google Sheets OAuth2 för att lagra loggar och deduplicera.
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard).
Kunskapsnivå: Mellan. Du kopplar upp credentials, ändrar ett sheet-ID och justerar ett schema, men du skriver ingen “riktig kod” utöver grundläggande konfiguration.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis konsultation i 15 minuter).
Så fungerar det
Schemalagd start. n8n kör detta med det intervall eller cron du väljer, så återpostning sker även när du är offline.
Hämta och filtrera videotweets. Arbetsflödet slår upp målanvändaren via ett HTTP-anrop, hämtar senaste tweets med media och extraherar enbart videoinlägg innan kandidater skrivs till Google Sheets.
Deduplicera och avgör vad som ska postas. Google Sheets används som spårningslager: arbetsflödet upsert:ar en rad med en delningslänk och kontrollerar sedan villkoret “inte postat” (en If-nod) så att gamla poster inte återpostas igen.
Skapa bildtext, publicera och logga klart. En AI Agent genererar en bildtext med en OpenRouter-chatmodell, n8n postar på X och sheetet uppdateras för att markera posten som klar så framtida körningar hoppar över den.
Du kan enkelt justera prompten för bildtext så den matchar din varumärkesröst, eller lägga till extra filter (som att exkludera svar eller sätta en minimiålder) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera schematriggern
Det här arbetsflödet startar enligt ett schemalagt intervall för att hämta senaste X (Twitter)-videor och förbereda bildtexter automatiskt.
- Lägg till och öppna Scheduled Automation Start.
- Ställ in schemaregelns intervall till hours (som konfigurerat i noden).
- Säkerställ att noden är ansluten till Fetch User Identifier som första åtgärd.
Steg 2: anslut X API-anrop och videoextraktion
Dessa noder hämtar ert användar-ID, plockar in senaste tweets med media och filtrerar ned till enbart videoinlägg.
- Öppna Fetch User Identifier och ställ in URL till
https://api.twitter.com/2/users/by/username/[YOUR_ID]. - I Fetch User Identifier, behåll Send Headers aktiverat och verifiera att headern User-Agent är satt till
n8n-workflow. - Öppna Retrieve Video Tweets och ställ in URL till
{{ 'https://api.twitter.com/2/users/' + $json.data.id + '/tweets?max_results=10&tweet.fields=attachments&expansions=attachments.media_keys&media.fields=type,url,variants' }}. - Öppna Extract Video Posts och behåll JavaScript-koden som den är för att mata ut
tweet_id,textochurlför tweets med enbart video.
Credential Required: Anslut era Twitter API-inloggningsuppgifter för Fetch User Identifier och Retrieve Video Tweets (HTTP-anrop till X kräver auktoriseringsheaders).
[YOUR_ID] i URL:en kommer det att ge ett fel eller en tom användarsökning.Steg 3: anslut Google Sheets och mappa delnings-URL:er
Den här delen loggar videoinlägg till Sheets, bygger delnings-URL:en och gör en upsert för spårning.
- Öppna Log URL Records och ställ in Operation till
append. - Ställ in Document ID till rätt kalkylark och Sheet Name till er loggflik (för närvarande konfigurerat som
[YOUR_ID]och更新情報). - Bekräfta kolumnmappningar: URL →
{{ $json.url }}, 文章 →{{ $json.text }}, ツイートID →{{ $json.tweet_id }}. - Öppna Map Share URL och ställ in setURL till
{{ $json.URL }}/video/1. - Öppna Upsert Share Link och ställ in Operation till
appendOrUpdatemed Matching Columns satt tillツイートID. - Verifiera mappningar i Upsert Share Link: setURL →
{{ $json.setURL }}och ツイートID →{{ $('Log URL Records').item.json['ツイートID'] }}. - Öppna Validate Unposted Items och säkerställ att villkoret är satt till
{{ $('Upsert Share Link').item.json['達成状況'] || '' }}not equal till完了.
Credential Required: Anslut era Google Sheets-inloggningsuppgifter till Log URL Records, Upsert Share Link och Mark Posting Complete.
Steg 4: konfigurera AI-bildtexter och publicering till X
Generera en japansk bildtext med hashtags och publicera den sedan till X tillsammans med videons delningslänk.
- Öppna Create Caption Draft och bekräfta att prompttexten innehåller
{{ $json.text }}samt det japanska instruktionsblocket för 100–150 tecken. - Säkerställ att noden OpenRouter Chat Engine är ansluten som språkmodell till Create Caption Draft.
- Öppna Publish to X och ställ in Text till
{{ $json.output }} {{ $('Upsert Share Link').item.json.setURL }}. - Öppna Mark Posting Complete och ställ in Operation till
appendOrUpdatemed 達成状況 satt till完了och ツイートID mappad till{{ $('Upsert Share Link').item.json['ツイートID'] }}.
Credential Required: Anslut era OpenRouter-inloggningsuppgifter i OpenRouter Chat Engine (inloggningsuppgifter läggs till i språkmodellnoden, inte i Create Caption Draft).
Credential Required: Anslut era Twitter-inloggningsuppgifter i Publish to X.
Steg 5: testa och aktivera ert arbetsflöde
Validera hela flödet från början till slut innan ni aktiverar körningar i produktion.
- Klicka på Execute Workflow för att köra Scheduled Automation Start manuellt.
- Bekräfta att data flödar från Fetch User Identifier → Retrieve Video Tweets → Extract Video Posts utan fel.
- Kontrollera ert Google Sheet så att Log URL Records, Upsert Share Link och Mark Posting Complete uppdaterade rader som förväntat.
- Verifiera att Create Caption Draft ger en japansk bildtext och att Publish to X publicerar korrekt med delnings-URL:en tillagd.
- När allt fungerar, växla arbetsflödet till Active för att köra enligt schema.
Vanliga fallgropar
- Google Sheets-credentials kan löpa ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera sidan Credentials i n8n och bekräfta att kalkylarket är delat med rätt Google-konto.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardpromptar i OpenRouter är generiska. Lägg in din varumärkesröst tidigt (ton, hashtag-regler och eventuell compliance-rad), annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 30 minuter om dina credentials är klara.
Nej. Du kopplar främst ihop konton och redigerar några fält, som målanvändarnamnet och detaljerna för Google Sheet.
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 OpenRouter-användning (det beror på vilken modell du väljer, men det är vanligtvis låg kostnad för korta bildtexter).
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men gör det med avsikt. Det enklaste upplägget är att lägga till ett booleskt fält (till exempel “dryRun”) i Set/Edit Fields-noden och skicka det genom If-kontrollen före noden “Publish to X”. När dryRun är true hoppar du över publiceringen och uppdaterar ändå Google Sheets med en status som “ready” eller “skipped”. Det är också vanligt att ändra schemat så att det kör oftare under test, och sedan dra ner frekvensen när du litar på loggarna.
Oftast handlar det om utgången OAuth-behörighet eller fel access-nivå i din X-app. Återanslut X (Twitter) OAuth2-credential i n8n och bekräfta sedan att appen får posta för din räkning. Om det bara fallerar när flera poster behandlas kan du också slå i rate limits, så minska hur många tweets du hämtar per körning eller posta mer sällan.
Många, så länge du håller dig inom gränserna för dina X- och n8n-planer.
Ofta, ja, eftersom det här flödet behöver filtrering, deduplicering och några villkorsgrenar som blir krångliga (och dyra) i enklare verktyg. n8n är också enklare att self-hosta, så du kan köra täta scheman utan att hålla koll på task-counts som en hök. Google Sheets-mönstret “upsert och validera” är rakt på sak i n8n, och AI-steget med OpenRouter passar snyggt in i samma arbetsflöde. Zapier eller Make kan fortfarande fungera om du håller det extremt enkelt, men de flesta vill till slut ha bättre loggning och mer kontroll. Prata med en automationsexpert om du vill ha en snabb rekommendation för just din setup.
När det här väl rullar slutar återpostning att vara ett dagligt måste och blir ett tyst system i bakgrunden. Sheetet hålls felfritt, dubbletter försvinner och du får tillbaka tid för 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.