Surround Sound SEO-strategie: Hoe we een SERP-dominantiesysteem bouwden met echte data
Een diepgaande analyse van het bouwen van een complete Surround Sound-strategie — de systeemarchitectuur, tooling, databaseontwerp en echte zichtbaarheidsdata van het volgen van 2.800+ zoekwoorden in 6 talen.
In 2019 waren Alex Birkett en Irina Nica bij HubSpot pioniers in iets dat onze manier van denken over SEO veranderde. In plaats van te obsesseren over een enkele #1-ranking, vroegen ze: wat als jouw merk op elke pagina in de top 10 resultaten zou verschijnen?
Ze noemden het de Surround Sound Strategy — en binnen 6 maanden van het volgen van 600+ zoekwoorden bereikten ze 50% door het programma beïnvloede vermeldingen. Wij namen hun framework over, bouwden er een full-stack automatiseringssysteem omheen en pasten het toe op ons eigen merk over 2.800+ zoekwoorden in 6 talen.
Dit artikel is een complete technische analyse van de architectuur, tooling, databaseontwerp en de echte data die we zien. Hieronder vind je interactieve 3D-visualisaties gebouwd met Three.js die onze werkelijke zichtbaarheidsscores, zoekwoordlandschap en outreach-pipeline tonen.
Het kerninzicht: Overal aanwezig zijn, niet alleen #1
Denk na over hoe je daadwerkelijk producten ontdekt. Je zoekt “beste e-mail marketing software” en ziet 10 resultaten. Je klikt op 3-4 ervan. Als één merk verschijnt in elk artikel dat je leest, wint dat merk — zelfs als het nooit zelf #1 was.
“Hoe vaker iemand over jouw product hoort uit meerdere bronnen, hoe waarschijnlijker het is dat ze jouw product kopen.”
Dit is het surround sound-effect. Als een cocktailparty waar iedereen hetzelfde boek aanbeveelt.
De wiskunde erachter
Visibility Score — de eenvoudigste metriek:
Visibility Score % = (mentions in top 20 ÷ 20) × 100Als jouw merk verschijnt op 8 van de top 20 resultaten voor “beste CRM-software”, is je zichtbaarheidsscore 40%.
Positiegewogen zichtbaarheid — omdat positie 1 meer uitmaakt dan positie 20:
Weighted Score = Σ(Position Weight where mentioned) / Σ(All Position Weights) × 100
Position Weights: #1 = 10pts, #2 = 9pts, ... #10 = 1ptOpportunity Score — waar je je inspanning op moet richten:
Opportunity = (100% - Visibility Score) × Monthly Search VolumeEen zoekwoord met 35.000 maandelijkse zoekopdrachten en 5% zichtbaarheid = opportunity score van 33.250. Daar pitch je eerst.
Systeemarchitectuur
Hier is de volledige stack die we bouwden om de surround sound-workflow te automatiseren:
Technologie-stack
| Laag | Technologie | Doel |
|---|---|---|
| Database | PostgreSQL | 13 tabellen, 19.000+ records |
| Scripts | Python 3.12 | 4 kern-automatiseringsscripts (~2.000 LOC) |
| SERP-data | Ahrefs API + BrightData | Zoekwoord-metrieken + live SERP-scraping |
| Content-scraping | BrightData MCP | Pagina-inhoud extractie voor vermeldingsdetectie |
| Zichtbaarheidsengine | Custom Python | 3 scoringsmethoden met positieweging |
| Orkestratie | Claude Code + MCP | AI-ondersteunde analyse en uitvoering |
De pipeline
┌─────────────────┐ ┌──────────────────┐ ┌───────────────────┐│ Keyword │────▶│ SERP Analyzer │────▶│ Mention Checker ││ Research │ │ (Top 20 per KW) │ │ (Scrape + Match) ││ keyword_ │ │ serp_ │ │ mention_ ││ research.py │ │ analyzer.py │ │ checker.py │└─────────────────┘ └──────────────────┘ └───────────────────┘ │ ▼┌─────────────────┐ ┌──────────────────┐ ┌───────────────────┐│ Outreach │◀────│ Opportunity │◀────│ Visibility ││ Pipeline │ │ Scoring │ │ Calculator ││ (7,322 targets) │ │ (Gap Analysis) │ │ visibility_ ││ │ │ │ │ calculator.py │└─────────────────┘ └──────────────────┘ └───────────────────┘Databaseontwerp
Onze PostgreSQL-database heeft 13 tabellen die alles volgen, van ruwe zoekwoorden tot de status van outreach-prospects. Hier zijn de data waarmee we werken:
Kerntabellen
| Tabel | Records | Doel |
|---|---|---|
keywords | 2.804 | Doelzoekwoorden met volume, moeilijkheid, silo |
serp_results | 6.900 | SERP-posities en ranking-URLs |
brand_mentions | 739 | Merkvermelding-tracking per URL |
visibility_scores | 684 | Berekende zichtbaarheid over tijd |
outreach_prospects | 7.322 | Link building-mogelijkheden |
seo_content_plan | 535 | Contentplanning met status |
google_ads_keywords | 1.593 | Geïmporteerde Google Ads-data |
keyword_volume_history | 238 | Volumetrend-tracking |
Schema-hoogtepunten
De keywords-tabel ondersteunt multi-land, multi-taal tracking:
CREATE TABLE keywords ( id SERIAL PRIMARY KEY, keyword VARCHAR(500) NOT NULL, silo VARCHAR(100), -- Content silo grouping volume_ahrefs INTEGER, -- Monthly search volume difficulty INTEGER, -- Keyword difficulty (0-100) cpc NUMERIC(10,2), -- Cost per click search_intent VARCHAR(50), -- informational, commercial, transactional country VARCHAR(5), -- us, de, fr, etc. language VARCHAR(5), -- en, de, fr, etc. UNIQUE(keyword, country, language));De visibility_scores-tabel volgt de merkzichtbaarheid per zoekwoord over tijd:
CREATE TABLE visibility_scores ( id SERIAL PRIMARY KEY, keyword_id INTEGER REFERENCES keywords(id), brand_name VARCHAR(100), visibility_score NUMERIC(5,2), -- 0-100% mention_count INTEGER, pages_with_mentions INTEGER, total_pages_checked INTEGER, calculated_at TIMESTAMP DEFAULT NOW());Zoekwoordlandschap: 7,4M maandelijkse zoekopdrachten
We volgen 2.804 zoekwoorden over 58 content-silo’s, die meer dan 7,4 miljoen maandelijkse zoekopdrachten vertegenwoordigen. Hier is de verdeling:
Top silo’s op zoekvolume
| Silo | Zoekwoorden | Gem. volume | Totaal volume |
|---|---|---|---|
| Email Marketing | 498 | 2.400 | 1.160K |
| CRM | 395 | 2.370 | 1.100K |
| Business Strategy | 4 | 168.750 | 675K |
| Marketing Strategy | 12 | 36.275 | 435K |
| Customer Engagement | 162 | 2.329 | 377K |
| 8 | 30.375 | 243K | |
| Automation | 55 | 3.025 | 166K |
| Messaging | 105 | 1.410 | 148K |
| Analytics | 10 | 14.090 | 141K |
| SMS Marketing | 103 | 1.070 | 110K |
Gemiddelde zoekwoordmoeilijkheid: 38,7/100
De meeste van onze doelzoekwoorden zitten in het gemiddelde moeilijkheidsbereik — haalbaar met kwaliteitscontent en strategische vermeldingen door derden. De sweet spot voor surround sound zijn zoekwoorden met moeilijkheid 20-50 en volume boven 1.000.
Echte zichtbaarheidsdata
Hier wordt de strategie echt. Onze huidige totale zichtbaarheidsscore is 0,1% — we zijn vroeg in de uitvoering. Maar kijk naar de zoekwoorden waar we al tractie hebben:
Waar we al zichtbaar zijn
| Zoekwoord | Volume | Zichtbaarheid | Gevonden op pagina’s |
|---|---|---|---|
| best email marketing software | 1.900 | 100% | 2 van 2 gecontroleerd |
| email campaign | 2.800 | 100% | 1 van 1 gecontroleerd |
| flash sale | 6.800 | 100% | 1 van 1 gecontroleerd |
| software for small business | 1.700 | 100% | 1 van 1 gecontroleerd |
| shopify community | 1.300 | 100% | 1 van 1 gecontroleerd |
| welcome email | 1.400 | 100% | 1 van 1 gecontroleerd |
| smtp service | 400 | 98,2% | 9 van 10 gecontroleerd |
| top email marketing | 60 | 100% | 9 van 9 gecontroleerd |
Waar de grootste kansen liggen
Deze zoekwoorden met hoog volume hebben nul zichtbaarheid — enorme kans:
| Zoekwoord | Maandelijks volume | Huidige zichtbaarheid | Opportunity Score |
|---|---|---|---|
| CRM | 44.000 | 0% | 44.000 |
| newsletter | 42.000 | 0% | 42.000 |
| email marketing | 35.000 | 0% | 35.000 |
| live chat | 34.000 | 0% | 34.000 |
| SMTP | 30.000 | 0% | 30.000 |
| landing page | 23.000 | 0% | 23.000 |
| marketing plan | 20.000 | 0% | 20.000 |
| wordpress plugins | 20.000 | 0% | 20.000 |
Detectie van merkvermeldingen
Onze mention checker heeft tot nu toe 739 pagina’s gescand en 17.285 merkvermeldingen gevonden op 590 pagina’s (79,8% vermeldingspercentage). Slechts 37 pagina’s bevatten een daadwerkelijke backlink.
De mention checker werkt door:
- Pagina-inhoud ophalen via BrightData’s scraping-API (handelt botdetectie en CAPTCHA’s af)
- Regex-matching voor merknamen en aliassen (case-insensitive, met contextextractie)
- Linkdetectie om te bepalen of vermeldingen backlinks bevatten
- Contextextractie om de zin rond elke vermelding vast te leggen
# Simplified mention detection logicdef find_brand_mentions(content, brand_names): mentions = [] for brand in brand_names: pattern = re.compile( rf'\b{re.escape(brand)}\b', re.IGNORECASE ) for match in pattern.finditer(content): # Extract surrounding context (200 chars) start = max(0, match.start() - 100) end = min(len(content), match.end() + 100) context = content[start:end] mentions.append({ 'brand': brand, 'position': match.start(), 'context': context, 'has_link': check_for_link(content, match) }) return mentionsOutreach-pipeline: 7.322 prospects
Het outreach-systeem identificeert pagina’s die ranken voor onze doelzoekwoorden en ons nog niet vermelden. Elk wordt een prospect.
Pipeline-overzicht
| Status | Aantal | % |
|---|---|---|
| Go (gekwalificeerd, klaar voor pitch) | 2.363 | 32,3% |
| Pending (kwalificatie nodig) | 3.632 | 49,6% |
| No-Go (niet geschikt) | 1.327 | 18,1% |
Prospect-typen (Gekwalificeerde “Go”-prospects)
| Type | Aantal | Strategie |
|---|---|---|
| Andere SaaS-bedrijven | 288 | Cross-promotie, gastberichten |
| Marketing-blogs | 209 | Contentbijdrage, expertcitaten |
| Grote uitgevers | 14 | PR-pitches, datastudies |
| Reviewsites | 19 | Productvermelding, reviewverzoeken |
| Niet-gecategoriseerd (triage nodig) | 1.833 | Bulkkwalificatie nodig |
Contentplan-status
| Status | Aantal |
|---|---|
| Onvolledig | 512 |
| Voltooid | 23 |
We hebben 535 contentstukken gepland. 23 zijn klaar. 512 zijn in verschillende productiestadia — dit is de contentmachine die de surround sound-strategie aandrijft.
De tooling: MCP-aangedreven automatisering
Het hele systeem wordt georkestreerd via Model Context Protocol (MCP)-servers, waarmee AI-ondersteunde uitvoering van elke workflowstap mogelijk is.
Ahrefs MCP-integratie
keywords-explorer-overview → Keyword metrics (volume, difficulty, CPC)keywords-explorer-matching → Related keyword discoveryserp-overview → SERP position data for any keywordsite-explorer-organic-keywords → Competitor keyword analysisbatch-analysis → Bulk domain metricsBrightData MCP-integratie
search_engine → Live SERP scraping (Google, Bing, Yandex)search_engine_batch → Batch SERP scrapingscrape_as_markdown → Full page content extractionscrape_batch → Batch content scrapingWorkflow: Van zoekwoord naar outreach
Hier is een echte workflow die we regelmatig uitvoeren:
Stap 1: Zoekwoordonderzoek
python3 keyword_research.py --stats# Returns: 2,804 keywords, 58 silos, 7.4M total volumeStap 2: SERP-analyse
python3 serp_analyzer.py --keyword-id 1 --summary# Returns: top 15 results, avg DR 90.2, 13 unique domainsStap 3: Vermeldingscontrole
python3 mention_checker.py --stats# Returns: 739 pages checked, 590 with mentions, 17,285 totalStap 4: Zichtbaarheidsberekening
python3 visibility_calculator.py --overall --report# Returns: 0.1% overall visibility, silo breakdown, opportunitiesGeleerde lessen (tot nu toe)
1. Begin met concurrentzoekwoorden
Het “Competitor”-silo heeft de hoogste gemiddelde zichtbaarheid (11%) omdat concurrentvergelijkingspagina’s natuurlijk meerdere merken vermelden. Zoekwoorden als “Mailchimp-alternatieven” of “HubSpot vs Brevo” zijn laaghangend fruit.
2. Reviewsites zijn goud
Sites als G2, Capterra en PCMag ranken voor bijna alles en vermelden je als je aan hun criteria voldoet. Onze SERP-data tonen een gemiddelde DR van 90,2 voor topresultaten — je kunt ze niet overtreffen in ranking, maar je kunt op ze staan.
3. Volume ≠ Kans
“CRM” heeft 44.000 maandelijkse zoekopdrachten maar rankende pagina’s worden gedomineerd door enterprise-merken. “ecommerce email marketing” met 500 zoekopdrachten heeft meer uitvoerbare outreach-doelen. Gebruik de opportunity score-formule, niet het ruwe volume.
4. Vermelding ≠ Link
Van 590 pagina’s die ons vermelden, bevatten slechts 37 een link. Dat is een linkpercentage van 6,3%. Elke vermelding zonder link is een gemakkelijke outreach-winst — je kunt beleefd om een link vragen aangezien ze je al aanbevelen.
5. Meertaligheid vermenigvuldigt alles
Het volgen in 6 talen (EN, FR, DE, IT, PT, ES) vermenigvuldigt je kansoppervlak. Een zoekwoord met 1.000 zoekopdrachten in het Engels heeft misschien 500 in het Frans en 300 in het Duits — dat zijn 1.800 van één concept.
Wat volgt: 90-dagen doelen
| Metriek | Huidig | Doel |
|---|---|---|
| Zoekwoorden met volledige audit | ~50 | 200+ |
| Totale zichtbaarheid | 0,1% | 20%+ |
| Actieve outreach-contacten | 0 | 50+ |
| Nieuwe vermeldingen door derden | 0 | 12+ |
| Gepubliceerde contentstukken | 23 | 50+ |
| Backlinks van vermeldingen | 37 | 100+ |
Probeer het zelf
De surround sound-methodologie werkt voor elk merk. Zo begin je:
- Kies 20 zoekwoorden — focus op “beste X”, “X-alternatieven”, “X vs Y”-formats
- Audit de SERP’s — controleer voor elk zoekwoord wie rankt op posities 1-20
- Controleer op vermeldingen — verschijnt jouw merk op die pagina’s?
- Bereken de zichtbaarheid — gebruik de bovenstaande formules
- Prioriteer op kans — (100% - zichtbaarheid) × volume = waar je je op moet richten
- Pitch de gaten — neem contact op met pagina’s die ranken maar je niet vermelden
Het mooie van surround sound is dat het zich opbouwt. Elke nieuwe vermelding verbetert je zichtbaarheidsscore, en elke zichtbaarheidsverbetering maakt de volgende vermelding makkelijker te verkrijgen.
Dit artikel is gegenereerd uit live database-query’s tegen ons productie surround sound-trackingsysteem. De Three.js-visualisaties hieronder renderen echte data van 2.804 zoekwoorden, 6.900 SERP-resultaten en 7.322 outreach-prospects.