Konkurrentanalys av annonser börjar enkelt. Sedan drunknar du i flikar, skärmdumpar, halvt kopierad annonstext och ett ”vi organiserar det här senare”-kalkylark som aldrig blir organiserat.
Apify Sheets-automatisering rensar upp den röran. PPC-managers använder den för att veckovisa uppdateringar av swipe-filer inte ska ta över kalendern. En marketing lead kan äntligen dela konkurrentinsikter utan en 20-minuters genomgång. Och om du driver en byrå slipper du bygga om samma ”annonsintels-dokument” för varje ny kund.
Det här arbetsflödet hämtar annonser från Facebook Ad Library, filtrerar för kvalitet, kör AI-analys baserat på annonsformat (text, bild eller video) och skriver korrekt formaterade, sökbara rader i Google Sheets. Du får se vad det gör, varför det spelar roll och hur du anpassar det för din nisch.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Apify till Google Sheets, annonsinsikter klara
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter For Likes", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Wait1", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Download Video"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Upload Video to Drive", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Wait2", 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/>Run Ad Library Scraper"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Image Ads", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Text Ads", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Video Ads", pos: "b", h: 48 }
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/>Begin Gemini Upload Session"]
n13@{ icon: "mdi:cog", form: "rounded", label: "Redownload Video", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload Video to Gemini"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Analyze Video with Gemini"]
n16@{ icon: "mdi:robot", form: "rounded", label: "Output Video Summary", pos: "b", h: 48 }
n17@{ icon: "mdi:database", form: "rounded", label: "Add as Type = Video", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "Analyze Image", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Output Image Summary", pos: "b", h: 48 }
n20@{ icon: "mdi:database", form: "rounded", label: "Add as Type = Image", pos: "b", h: 48 }
n21@{ icon: "mdi:robot", form: "rounded", label: "Output Text Summary", pos: "b", h: 48 }
n22@{ icon: "mdi:database", form: "rounded", label: "Add as Type = Text", pos: "b", h: 48 }
n23@{ icon: "mdi:cog", form: "rounded", label: "Wait3", pos: "b", h: 48 }
n3 --> n10
n4 --> n9
n7 --> n11
n23 --> n15
n1 --> n11
n1 --> n9
n1 --> n10
n18 --> n19
n5 --> n6
n2 --> n1
n13 --> n14
n22 --> n3
n10 --> n21
n20 --> n4
n17 --> n7
n9 --> n18
n11 --> n5
n21 --> n22
n19 --> n20
n16 --> n17
n6 --> n12
n8 --> n2
n14 --> n23
n15 --> n16
n12 --> n13
n0 --> 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 n0 trigger
class n16,n18,n19,n21 ai
class n1,n2 decision
class n17,n20,n22 database
class n5,n8,n12,n14,n15 api
classDef customIcon fill:none,stroke:none
class n5,n8,n12,n14,n15 customIcon
Problemet: konkurrentanalys av annonser blir till tidsödande rutinjobb
Att kolla Facebook Ad Library är enkelt. Att göra det till något som teamet kan återanvända är den jobbiga delen. Du klickar igenom annonser en i taget, kopierar text till ett dokument, tar en länk, försöker beskriva kreativet och sedan… gör du om allt nästa vecka. Än värre: de bästa insikterna finns ofta i någons webbhistorik eller ett slumpmässigt Slack-meddelande. Kostnaden är inte bara tid, utan kvaliteten på besluten. När researchen är rörig slutar du lita på den, så du går tillbaka till att gissa.
Det växer snabbt. Här är var det fallerar i verkligheten.
- Att manuellt samla 50 annonser kan sluka cirka 2–3 timmar, och det blir ändå inte konsekvent mellan personer i teamet.
- Videoannonser är värst eftersom du inte kan ”skumma igenom” dem snabbt, så de bästa vinklarna blir ofta förbisedda.
- Utan en strukturerad databas kan du inte söka på hook, offertyp eller positionering, vilket gör att du lär dig samma läxor om och om igen.
- Team hamnar i att ”låna” konkurrenternas språk för nära eftersom det inte finns något omskrivningssteg inbyggt i processen.
Lösningen: Apify → AI-analys → Google Sheets-intelligens
Det här arbetsflödet gör Facebook Ad Library-bläddrande till ett repeterbart system för konkurrentintelligens. Det börjar med att starta en Apify-baserad scraping mot dina valda sökparametrar i Ad Library. Därefter filtrerar arbetsflödet annonser efter sidgillningar (så du inte slösar tid på annonsörer med låg signal) och skickar varje annons till rätt analysflöde: textannonser får copy- och strategianalys, bildannonser får visuella nedbrytningar och videoannonser får en djupare ”vad händer här?”-beskrivning innan de sammanfattas. Till sist blir varje annons en strukturerad post i Google Sheets med en sammanfattning, en inspirerad omskrivning och prompts för att återskapa kreativet, så att du kan söka och dela det som en riktig tillgång.
Arbetsflödet startar när du kör det i n8n. Därifrån levererar Apify den råa annonsdatan, systemet kategoriserar varje annons efter format och AI genererar ”vad betyder det här?”-insikterna. Google Sheets blir din enda sanningskälla, uppdaterad automatiskt när du gör nya konkurrentuttag.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du följer 5 konkurrenter och hämtar 20 aktiva annonser per varumärke varje vecka. Manuellt kan du lägga cirka 3 minuter per annons på att kopiera detaljer, beskriva kreativet och lägga in det i ett ark, vilket blir ungefär 5 timmar. Med det här arbetsflödet kör du scrapingen en gång, låter batchbearbetningen och AI göra analysen och granskar det färdiga Google-arket i slutet. Din manuella tid blir närmare 30 minuter för kontroll och taggning, inte en halv arbetsdag av insamling.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Apify för att scrapa resultat från Facebook Ad Library
- Google Sheets för att lagra konkurrentintelligens för annonser
- Google Drive för tillfällig videolagring under analysen
- OpenAI API-nyckel (hämta den från din OpenAI-dashboard)
- Gemini API-nyckel (hämta den från Google AI Studio)
Svårighetsnivå: Avancerad. Du är bekväm med att koppla API:er, justera prompts och felsöka enstaka fil-/behörighetsproblem.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Scrape-trigger. Du kör arbetsflödet i n8n, som skickar en HTTP-förfrågan för att starta Apifys Facebook Ad Library-scraper med dina förinställda sökparametrar.
Kvalitetsfiltrering och routing. De annonser som kommer tillbaka filtreras på sidgillningar och kategoriseras sedan automatiskt efter mediatyp (text, bild eller video) så att varje format följer rätt spår.
AI-analys för varje annonstyp. Textannonser skickas till en OpenAI-chatmodell för strategi- och omskrivningsoutput. Bildannonser analyseras med en vision-kapabel modell så att arbetsflödet kan förklara vad som finns i kreativet och varför det fungerar. Videoannonser laddas ner, lagras tillfälligt i Google Drive och skickas sedan genom Gemini för videoförståelse innan en slutlig sammanfattning genereras.
Strukturerad lagring i Google Sheets. Varje bearbetad annons läggs till som en ny rad med centrala identifierare (som annonsarkiv-ID och siddetaljer) plus AI-sammanfattningen, omskriven annonstext och prompts för att återskapa kreativet.
Du kan enkelt ändra tröskelvärdet för sidgillningar för att bredda eller skärpa kvalitetsnivån, utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar manuellt så att ni kan validera pipeline för scraping och analys innan ni automatiserar den.
- Lägg till noden Manual Start Trigger som er startpunkt.
- Lämna alla inställningar som standard eftersom den här triggern saknar parametrar.
Steg 2: anslut Google Drive och Google Sheets
Videofiler lagras i Drive och alla annonsrader läggs till i Google Sheets.
- Öppna Store Video in Drive och välj mål-Drive och mapp.
Inloggning krävs: Anslut eragoogleDriveOAuth2Api-uppgifter. - Öppna Retrieve Drive Video och bekräfta att Operation är satt till
downloadoch att File ID använder{{ $('Store Video in Drive').item.json.id }}.
Inloggning krävs: Anslut eragoogleDriveOAuth2Api-uppgifter. - Öppna Append Video Record, Append Image Record och Append Text Record och välj ert kalkylark.
Inloggning krävs: Anslut eragoogleSheetsOAuth2Api-uppgifter. - Ställ in Document till
[YOUR_ID]och Sheet Name tillgid=0i varje append-nod.
Steg 3: sätt upp scraping av ad library och routning
Den här delen hämtar annonser från Apify, filtrerar på sidans popularitet och routar efter medietyp.
- Konfigurera Launch Ad Library Scrape med URL
https://api.apify.com/v2/acts/XtaWFhbtfxyzqrFmd/run-sync-get-dataset-itemsoch MethodPOST. - Sätt JSON Body till den angivna payloaden och låt Send Body och Send Headers vara aktiverade.
- Uppdatera headern Authorization till
Bearer [CONFIGURE_YOUR_API_KEY]och behåll Accept somapplication/json. - I Filter By Page Likes, ställ in villkoret Left Value till
{{ $json.advertiser.ad_library_page_info.page_info.likes }}och Right Value till1000. - I Route By Media Type, verifiera regeluttrycken:
Video använder{{ $json.snapshot.videos[0].video_sd_url }}, Image använder{{ $json.snapshot.images[0].original_image_url }}och fallback-utgången byts namn tillText.
[CONFIGURE_YOUR_API_KEY] i Launch Ad Library Scrape, Initiate Gemini Upload, Send Video to Gemini och Gemini Video Analysis.Steg 4: sätt upp videobearbetning med Gemini och OpenAI
Videoannonser laddas ned, laddas upp till Gemini, analyseras, sammanfattas med OpenAI och sparas i Sheets.
- I Iterate Video Ads, behåll batchinställningarna som standard för att bearbeta objekt sekventiellt.
- Ställ in Fetch Video File URL till
{{ $json.snapshot.videos[0].video_sd_url }}. - I Initiate Gemini Upload, behåll URL som
https://generativelanguage.googleapis.com/upload/v1beta/filesoch bekräfta att headern X-Goog-Upload-Header-Content-Length är{{ $json.size }}. - I Send Video to Gemini, sätt URL till
{{ $json.headers['x-goog-upload-url'] }}och Input Data Field Name tilldata. - Ställ in Delay Before Analysis Amount till
15för att ge Gemini tid att bearbeta filen. - Konfigurera Gemini Video Analysis med JSON-body som använder
{{ $json.file.mimeType }}och{{ $json.file.uri }}. - Öppna Generate Video Summary och bekräfta att den använder modellen
gpt-4.1med JSON Output aktiverat.
Inloggning krävs: Anslut eraopenAiApi-uppgifter.
Steg 5: sätt upp bild- och textsammanfattningar med OpenAI
Bild- och textannonser sammanfattas med OpenAI innan de skrivs till Sheets.
- I Analyze Image Content, ställ in Image URLs till
{{ $json.snapshot.images[0].original_image_url }}och behåll Operation somanalyze.
Inloggning krävs: Anslut eraopenAiApi-uppgifter. - I Generate Image Summary, bekräfta att meddelandet refererar till
{{ $('Iterate Image Ads').item.json.toJsonString() }}och{{ $json.content }}med JSON Output aktiverat.
Inloggning krävs: Anslut eraopenAiApi-uppgifter. - I Generate Text Summary, behåll meddelandets innehåll som
{{ $json.toJsonString() }}och säkerställ att JSON Output är aktiverat.
Inloggning krävs: Anslut eraopenAiApi-uppgifter.
Steg 6: konfigurera output-rader och throttling
Varje medietyp läggs till i samma Google Sheet och stryps sedan med väntetider för att kontrollera throughput.
- I Append Video Record, mappa fält som summary till
{{ $json.message.content.summary }}och video_prompt till{{ $('Gemini Video Analysis').item.json.candidates[0].content.parts[0].text }}. - I Append Image Record, mappa image_prompt till
{{ $('Analyze Image Content').item.json.content }}och summary till{{ $json.message.content.summary }}. - I Append Text Record, mappa summary till
{{ $json.message.content.summary }}och rewritten_ad_copy till{{ $json.message.content.rewrittenAdCopy }}. - Ställ in Pause After Video Save, Pause After Image Save och Pause After Text Save Amount till
1för att strypa batchbearbetningen.
Steg 7: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera scraping, analys och output till sheet innan ni aktiverar produktion.
- Klicka på Execute Workflow på Manual Start Trigger för att köra ett test.
- Verifiera att Launch Ad Library Scrape returnerar objekt och att Filter By Page Likes släpper igenom poster med likes över
1000. - Bekräfta att video-, bild- och textobjekt når respektive append-noder och att rader dyker upp i ert sheet
Facebook Ad Library Analyzer DB. - När allt är verifierat, växla arbetsflödet till Active för produktion (eller behåll det manuellt om ni bara vill köra vid behov).
Vanliga fallgropar
- Apify-uppgifter kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först din Apify-token i n8n-credentials och loggarna för Apify-taskkörningen.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Behörigheter i Google Drive och Google Sheets ställer till det hela tiden. Säkerställ att det anslutna Google-kontot kan skriva till målarket och ladda upp till den valda Drive-mappen.
- Standardprompts i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 3–4 timmar, mest för API-setup och finjustering av prompts.
Nej. Du kopplar främst konton, klistrar in API-nycklar och redigerar prompts och filter. Om du kan följa en checklista noggrant kan du köra det.
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 Apify, OpenAI och Gemini (det här arbetsflödet ligger ofta runt 200 USD/månad för att köra i stabil volym).
Två alternativ: n8n Cloud (hanterat, enklast setup) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Mest anpassning sker i AI-promptstegen som används för text-, bild- och videosammanfattningar, plus logiken i ”Filter By Page Likes” för kvalitetskontroll. Vanliga justeringar är att lägga till ett nischspecifikt ramverk (AIDA, PAS eller ”offer breakdown”), spara fler kolumner (som hook-typ eller invändning som bemöts) och ändra Apify-sökparametrarna för att fokusera på vissa regioner eller nyckelord.
Oftast är det en utgången eller felaktig Apify API-token i dina n8n-credentials. Kontrollera Apify-körloggarna för tasken för att bekräfta att scrapern faktiskt returnerade items, och verifiera sedan att dina HTTP request-headers matchar Apifys förväntade auth-format. Om det fungerar en gång och sedan börjar fallera kan rate limits eller kvot också vara orsaken, särskilt vid större uttag.
Hundratals per körning är realistiskt, men din praktiska gräns är API-kvot och hur länge du är villig att låta det bearbeta.
För det här användningsfallet, ja, men det beror på dina förväntningar. Zapier och Make är bra för enkla ”skicka data från A till B”, men det här arbetsflödet behöver grenlogik (text vs bild vs video), batchning, väntetider, filhantering och flera AI-anrop. n8n hanterar det utan att göra din automatisering till en skör, dyr labyrint. Om ditt mål är en lättviktig logg av ett fåtal annonser kan enklare verktyg räcka. Om du vill ha ett skalbart system för konkurrentintelligens som du kan sälja eller standardisera mellan kunder är n8n ett bättre val. Prata med en automationsexpert om du är osäker på vad som passar.
När det här väl rullar slutar konkurrentresearch att vara en återkommande brandkårsutryckning. Du får ett levande Google-ark som teamet faktiskt kan använda, vecka efter vecka.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.