Weten wat concurrenten doen zonder uren research te besteden? Met Perplexity AI, n8n en Google Sheets bouw je een geautomatiseerd dashboard dat wekelijks prijzen, productwijzigingen en nieuws over je concurrenten bijhoudt. Deze handleiding laat je zien hoe je in 60 minuten een systeem opzet dat elke maandagochtend klaarstaat met een vers overzicht.
Stap 1: Lijst van concurrenten opstellen
Begin met een gestructureerde lijst van maximaal 10 directe concurrenten. Meer dan dat maakt de workflow te traag en de output te veel om te verteren. Voor elke concurrent noteer je: bedrijfsnaam, website URL, primaire productcategorie, prijsklasse (low/mid/premium), en bekende sociale kanalen.
# Concurrent data structuur (JSON) [ { "naam": "Concurrent A", "website": "https://concurrent-a.nl", "categorie": "marketing-software", "prijsklasse": "mid", "linkedin": "concurrent-a-nl", "tracking": ["prijs", "productlancering", "nieuws", "vacatures"] } ]
Bepaal per concurrent wat je wil bijhouden. Niet alles is even relevant. Prijs tracking is zinvol bij commodityproducten. Productlancering tracking bij innovatieve spelers. Vacature tracking geeft inzicht in groeistrategie: als een concurrent ineens 10 sales vacatures post, gaan ze opschalen.
Stap 2: n8n cron-trigger instellen
Maak een nieuw workflow in n8n. Voeg een Cron node toe als trigger. Stel in: elke maandag om 08:00. Dit geeft je elke werkweek een vers overzicht in je inbox voordat je dag begint. De cron expressie voor maandag 08:00 is: 0 8 * * 1.
# n8n Cron configuratie { "triggerTimes": { "item": [{ "mode": "custom", "cronExpression": "0 8 * * 1" }] } }
Voeg na de Cron trigger een Code node toe die je concurrentenlijst laadt. Je kunt de lijst hardcoden in de node of ophalen uit een Google Sheets tab. Gebruik de SplitInBatches node om elke concurrent afzonderlijk te verwerken. Zet batch size op 1 om Perplexity rate limits te vermijden.
Stap 3: Perplexity sonar-pro API query per concurrent
Voeg een HTTP Request node toe. Stel in: Method = POST, URL = https://api.perplexity.ai/chat/completions. Voeg de Authorization header toe: Bearer YOUR_PERPLEXITY_API_KEY. Gebruik het sonar-pro model voor de meest actuele webresultaten.
# Perplexity API request POST https://api.perplexity.ai/chat/completions Authorization: Bearer {{$credentials.perplexityApi.apiKey}} Content-Type: application/json { "model": "sonar-pro", "messages": [{ "role": "user", "content": "Zoek de laatste ontwikkelingen van {{$json.naam}} ({{$json.website}}) uit de afgelopen 7 dagen. Focus op: nieuwe producten of features, prijswijzigingen, campagnes, persberichten en nieuws. Geef een gestructureerd overzicht met bronnen." }], "return_citations": true, "search_recency_filter": "week" }
De 'search_recency_filter: week' parameter beperkt de resultaten tot de afgelopen 7 dagen. Dit zorgt voor relevante, actuele informatie in plaats van historische content. Return_citations geeft je de bronlinks mee -- nuttig om claims te verifiëren.
Stap 4: Response parsen en structureren
De Perplexity response is vrije tekst. Voeg een tweede HTTP Request node toe voor Claude om de tekst te structureren in JSON. Dit maakt het eenvoudig om de data in Google Sheets te zetten.
# Claude structurering prompt { "model": "claude-haiku-4-5", "max_tokens": 1000, "messages": [{ "role": "user", "content": "Structureer deze concurrentie-informatie als JSON met velden: nieuws_samenvatting (max 100 woorden), prijswijzigingen (array, leeg als geen), nieuwe_producten (array, leeg als geen), campagnes (array, leeg als geen), urgentie_score (1-5: 1=niets relevants, 5=acuut actie vereist), aanbeveling (max 50 woorden). Input: {{$json.choices[0].message.content}}" }] }
Claude Haiku is hier de juiste keuze: snel, goedkoop, en structureren is geen complexe redeneerstaak. Haiku kost circa 0.0008 dollar per structurering. Voor 10 concurrenten per week zijn dat kosten van minder dan 0.01 dollar per week.
Stap 5: Claude vergelijkingsanalyse
Na het verwerken van alle concurrenten voeg je een Aggregate node toe om alle resultaten samen te voegen. Stuur de gecombineerde data naar Claude voor een vergelijkende analyse.
# Claude vergelijkingsanalyse prompt { "model": "claude-opus-4-5", "max_tokens": 2000, "messages": [{ "role": "user", "content": "Analyseer de ontwikkelingen van deze concurrenten uit de afgelopen week: {{allCompetitorData}}. Geef een strategische analyse met: (1) Wie is het meest actief geweest en waarom, (2) Welke trend zie je over meerdere concurrenten, (3) Wat zijn de top 3 kansen voor ons op basis van wat concurrenten NIET doen, (4) Urgente aandachtspunten die deze week aandacht verdienen. Schrijf in heldere zakelijke taal, maximaal 400 woorden." }] }
Deze stap onderscheidt je dashboard van een simpele nieuwsfeed. Claude koppelt de losse informatie aan strategische inzichten. Een prijsverlaging van concurrent A gecombineerd met een productstop bij concurrent B kan een marktgap signaleren die jij kunt pakken.
Stap 6: Google Sheets updaten
Gebruik de Google Sheets node in n8n om de resultaten op te slaan. Maak twee tabbladen: 'Wekelijks Overzicht' (met datum, concurrent, samenvatting, urgentiescore) en 'Strategie' (met de Claude vergelijkingsanalyse per week).
# Google Sheets update configuratie n8n { "operation": "appendOrUpdate", "sheetName": "Wekelijks Overzicht", "columns": { "value": { "Datum": "={{$now.format('YYYY-MM-DD')}}", "Concurrent": "={{$json.naam}}", "Samenvatting": "={{$json.nieuws_samenvatting}}", "Nieuwe Producten": "={{$json.nieuwe_producten.join(', ')}}", "Prijswijzigingen": "={{$json.prijswijzigingen.join(', ')}}", "Urgentie (1-5)": "={{$json.urgentie_score}}", "Aanbeveling": "={{$json.aanbeveling}}" } } }
Voeg conditionele opmaak toe in Google Sheets: rijen met urgentiescore 4 of 5 worden automatisch rood gemarkeerd. Zo zie je in een oogopslag welke concurrenten deze week extra aandacht verdienen.
Stap 7: Wekelijks overzicht emailen via SendGrid
Voeg na de Sheets update een SendGrid node toe. Maak een HTML e-mail template die de Claude vergelijkingsanalyse combineert met de topitems per concurrent. Stuur deze elke maandag naar de relevante teamleden.
# SendGrid email template structuur { "to": ["team@jouwbedrijf.nl"], "from": "dashboard@jouwbedrijf.nl", "subject": "Concurrentieoverzicht week {{weekNumber}} - {{urgentCases}} urgente punten", "html": "
Concurrentieoverzicht
\n{{strategicAnalysis}}
\nPer Concurrent
\n{{competitorSummaries}}\n" }Voeg de link naar het Google Sheets dashboard toe in de email. Zo hebben ontvangers direct toegang tot de volledige details als de samenvatting hun interesse wekt. Houd de email zelf beknopt: maximaal 300 woorden plus de concurrentenlijst.
Stap 8: Alert bij grote veranderingen
Niet alle wijzigingen zijn even urgent. Maar een prijsverlaging van meer dan 10 procent of de lancering van een direct concurrerend product vereist snelle actie. Voeg een IF node toe die controleert op urgentiescores van 4 of 5.
# n8n IF node voor urgente alerts { "conditions": { "options": { "caseSensitive": false, "leftValue": "={{$json.urgentie_score}}", "operation": "largerEqual", "rightValue": 4 } } }
Als de conditie waar is, stuur dan een directe Slack notificatie naar het relevante kanaal. Formuleer de melding concreet: 'Concurrent A heeft hun prijs met 15% verlaagd voor het Enterprise pakket. Onze prijs ligt nu 23% hoger. Actie vereist?' Dit geeft de ontvanger meteen de context om een beslissing te nemen.
Troubleshooting
Perplexity geeft geen recente resultaten: Controleer of search_recency_filter correct is ingesteld op 'week'. Perplexity's zoekcoverage varieert per branche. Voor niche B2B markten zijn de resultaten soms beperkter. Combineer met een directe Google Alert setup als aanvulling.
n8n workflow mislukt halverwege: Voeg Error Trigger nodes toe op kritieke punten. Als een concurrent query faalt, moet de workflow doorgaan met de volgende concurrent in plaats van volledig te stoppen. Gebruik de 'Continue on Fail' optie in n8n nodes.
Google Sheets raakt vol: Na een jaar wekelijkse updates heb je 520+ rijen. Voeg een automatische archivering toe: rijen ouder dan 3 maanden worden naar een archief-tab verplaatst. Dit houdt het actieve dashboard overzichtelijk.
Claude analyseert niet op de gewenste manier: Verfijn je prompts iteratief. Voeg voorbeelden toe van een goede analyse (few-shot prompting). Als Claude consistent te algemeen is, maak de instructies dan specifieker: noem de naam van je eigen bedrijf zodat Claude concurrentieanalyse vanuit jouw perspectief doet.
Uitbreidingen
Social media monitoring: Voeg een tweede workflow toe die Twitter/LinkedIn posts van concurrenten volgt. Gebruik de Twitter/X API of een tool als Brandwatch. Koppel de resultaten aan hetzelfde Google Sheets dashboard voor een compleet beeld.
Review tracking: Monitor Google Reviews, Trustpilot en G2 voor je concurrenten. Sentimentanalyse door Claude op de nieuwste reviews geeft inzicht in waar concurrenten klanten verliezen -- kansen voor jou. Stel n8n in om wekelijks de laatste 10 reviews per concurrent op te halen en te analyseren.
Prijshistorie grafiek: Google Sheets heeft ingebouwde sparkline grafieken. Maak een kolom 'Prijshistorie' aan als array van historische prijzen. De formule =SPARKLINE(SPLIT(B2;",")) toont een minitrendlijn in de cel. Zo zie je in een oogopslag of een concurrent structureel goedkoper wordt of juist premium positioneert.