Surround Sound SEO-strategi: Hvordan vi byggede et SERP-dominanssystem med rigtige data
Et dybt dyk ned i opbygningen af en komplet Surround Sound-strategi — systemarkitekturen, værktøjerne, databasedesignet og rigtige synlighedsdata fra sporing af 2.800+ søgeord på tværs af 6 sprog.
I 2019 var Alex Birkett og Irina Nica hos HubSpot pionerer inden for noget, der ændrede vores måde at tænke SEO på. I stedet for at være besat af en enkelt #1-placering spurgte de: hvad nu hvis dit brand dukkede op på hver eneste side i top 10-resultaterne?
De kaldte det Surround Sound Strategy — og inden for 6 måneder med sporing af 600+ søgeord opnåede de 50% program-påvirkede omtaler. Vi tog deres rammeværk, byggede et komplet automatiseringssystem omkring det og anvendte det på vores eget brand på tværs af 2.800+ søgeord på 6 sprog.
Dette indlæg er en komplet teknisk gennemgang af arkitekturen, værktøjerne, databasedesignet og de rigtige data, vi ser. Nedenfor finder du interaktive 3D-visualiseringer bygget med Three.js, der viser vores faktiske synlighedsscorer, søgeordslandskab og outreach-pipeline.
Kerneindsisgten: Vær overalt, ikke kun #1
Tænk over, hvordan du faktisk opdager produkter. Du søger “bedste e-mail marketing software,” og du ser 10 resultater. Du klikker på 3-4 af dem. Hvis ét brand optræder i hver eneste artikel, du læser, vinder det brand — selvom det aldrig selv rangerede som #1.
“Jo oftere nogen hører om dit produkt fra flere kilder, jo mere sandsynligt er det, at de køber dit produkt.”
Dette er surround sound-effekten. Som et cocktailparty, hvor alle anbefaler den samme bog.
Matematikken bag det
Visibility Score — den simpleste metrik:
Visibility Score % = (mentions in top 20 ÷ 20) × 100Hvis dit brand optræder på 8 af de top 20 resultater for “bedste CRM-software,” er din synlighedsscore 40%.
Position-Weighted Visibility — fordi position 1 betyder mere end position 20:
Weighted Score = Σ(Position Weight where mentioned) / Σ(All Position Weights) × 100
Position Weights: #1 = 10pts, #2 = 9pts, ... #10 = 1ptOpportunity Score — hvor du skal fokusere din indsats:
Opportunity = (100% - Visibility Score) × Monthly Search VolumeEt søgeord med 35.000 månedlige søgninger og 5% synlighed = opportunity score på 33.250. Det er der, du pitcher først.
Systemarkitektur
Her er den fulde teknologistak, vi byggede til at automatisere surround sound-arbejdsgangen:
Teknologistak
| Lag | Teknologi | Formål |
|---|---|---|
| Database | PostgreSQL | 13 tabeller, 19.000+ poster |
| Scripts | Python 3.12 | 4 kerneautomatiseringsscripts (~2.000 LOC) |
| SERP-data | Ahrefs API + BrightData | Søgeordsmetrikker + live SERP-scraping |
| Indholdsscraping | BrightData MCP | Sideindholdsekstraktion til omtaledetektion |
| Synlighedsmotor | Brugerdefineret Python | 3 scoringsmetoder med positionsvægtning |
| Orkestrering | Claude Code + MCP | AI-assisteret analyse og eksekvering |
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 │└─────────────────┘ └──────────────────┘ └───────────────────┘Databasedesign
Vores PostgreSQL-database har 13 tabeller, der sporer alt fra rå søgeord til outreach-prospektstatus. Her er de data, vi arbejder med:
Kernetabeller
| Tabel | Poster | Formål |
|---|---|---|
keywords | 2.804 | Målsøgeord med volumen, sværhedsgrad, silo |
serp_results | 6.900 | SERP-positioner og rangerende URL’er |
brand_mentions | 739 | Sporing af brandsomtaler pr. URL |
visibility_scores | 684 | Beregnede synlighedsscorer over tid |
outreach_prospects | 7.322 | Linkbuilding-muligheder |
seo_content_plan | 535 | Indholdsplanlægning med status |
google_ads_keywords | 1.593 | Importerede Google Ads-data |
keyword_volume_history | 238 | Sporing af volumentrends |
Skemahøjdepunkter
keywords-tabellen understøtter multi-land, multi-sprogssporing:
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));visibility_scores-tabellen sporer brandsynlighed pr. søgeord over tid:
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());Søgeordslandskab: 7,4 mio. månedlige søgninger
Vi sporer 2.804 søgeord på tværs af 58 indholdssiloer, der repræsenterer over 7,4 millioner månedlige søgninger. Her er fordelingen:
Topsiloer efter søgevolumen
| Silo | Søgeord | Gns. volumen | Samlet volumen |
|---|---|---|---|
| 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 |
Gennemsnitlig søgeordssværhedsgrad: 38,7/100
De fleste af vores målsøgeord ligger i det mellemsvære område — opnåeligt med kvalitetsindhold og strategiske tredjepartsomtaler. Det ideelle punkt for surround sound er søgeord med sværhedsgrad 20-50 og volumen over 1.000.
Rigtige synlighedsdata
Her bliver strategien konkret. Vores nuværende samlede synlighedsscore er 0,1% — vi er tidligt i udførelsen. Men se de søgeord, hvor vi allerede har fremdrift:
Hvor vi allerede er synlige
| Søgeord | Volumen | Synlighed | Sider fundet på |
|---|---|---|---|
| best email marketing software | 1.900 | 100% | 2 af 2 kontrolleret |
| email campaign | 2.800 | 100% | 1 af 1 kontrolleret |
| flash sale | 6.800 | 100% | 1 af 1 kontrolleret |
| software for small business | 1.700 | 100% | 1 af 1 kontrolleret |
| shopify community | 1.300 | 100% | 1 af 1 kontrolleret |
| welcome email | 1.400 | 100% | 1 af 1 kontrolleret |
| smtp service | 400 | 98,2% | 9 af 10 kontrolleret |
| top email marketing | 60 | 100% | 9 af 9 kontrolleret |
Hvor de største muligheder er
Disse søgeord med højt volumen har nul synlighed — en enorm mulighed:
| Søgeord | Månedligt volumen | Nuværende synlighed | 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 |
Detektion af brandsomtaler
Vores omtalechecker har scannet 739 sider indtil videre og fundet 17.285 brandsomtaler på tværs af 590 sider (79,8% omtalerate). Kun 37 sider inkluderer et faktisk backlink.
Omtalecheckeren fungerer ved at:
- Hente sideindhold via BrightDatas scraping-API (håndterer botdetektion og CAPTCHAs)
- Regex-matching for brandnavne og aliasser (ufølsom over for store/små bogstaver, med kontekstekstraktion)
- Linkdetektion for at afgøre, om omtaler inkluderer backlinks
- Kontekstekstraktion for at fange sætningen omkring hver omtale
# 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 prospekter
Outreach-systemet identificerer sider, der rangerer for vores målsøgeord, som endnu ikke nævner os. Hver bliver et prospekt.
Pipeline-opdeling
| Status | Antal | % |
|---|---|---|
| Go (kvalificeret, klar til pitch) | 2.363 | 32,3% |
| Pending (kræver kvalificering) | 3.632 | 49,6% |
| No-Go (ikke et match) | 1.327 | 18,1% |
Prospekttyper (kvalificerede “Go”-prospekter)
| Type | Antal | Strategi |
|---|---|---|
| Andre SaaS-virksomheder | 288 | Krydsreklame, gæsteindlæg |
| Marketingblogs | 209 | Indholdsbidrag, ekspertcitater |
| Store udgivere | 14 | PR-pitches, datastudier |
| Anmeldelsessider | 19 | Produktlisting, anmeldelsesforespørgsler |
| Ikke-typede (kræver triagering) | 1.833 | Massekvalificering nødvendig |
Indholdsplanstatus
| Status | Antal |
|---|---|
| Ufuldstændig | 512 |
| Fuldstændig | 23 |
Vi har 535 indholdsstykker planlagt. 23 er fuldstændige. 512 er i forskellige produktionsstadier — dette er indholdsmotoren, der driver surround sound-maskinen.
Værktøjerne: MCP-drevet automatisering
Hele systemet orkestreres via Model Context Protocol (MCP)-servere, der muliggør AI-assisteret udførelse af hvert trin i arbejdsgangen.
Ahrefs MCP-integration
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-integration
search_engine → Live SERP scraping (Google, Bing, Yandex)search_engine_batch → Batch SERP scrapingscrape_as_markdown → Full page content extractionscrape_batch → Batch content scrapingArbejdsgang: Fra søgeord til outreach
Her er en rigtig arbejdsgang, vi kører regelmæssigt:
Trin 1: Søgeordsresearch
python3 keyword_research.py --stats# Returns: 2,804 keywords, 58 silos, 7.4M total volumeTrin 2: SERP-analyse
python3 serp_analyzer.py --keyword-id 1 --summary# Returns: top 15 results, avg DR 90.2, 13 unique domainsTrin 3: Omtaletjek
python3 mention_checker.py --stats# Returns: 739 pages checked, 590 with mentions, 17,285 totalTrin 4: Synlighedsberegning
python3 visibility_calculator.py --overall --report# Returns: 0.1% overall visibility, silo breakdown, opportunitiesErfaringer (indtil videre)
1. Start med konkurrentsøgeord
“Competitor”-siloen har den højeste gennemsnitlige synlighed (11%), fordi konkurrentsammenligningssider naturligt nævner flere brands. Søgeord som “mailchimp alternatives” eller “hubspot vs brevo” er lavthængende frugter.
2. Anmeldelsessider er guld
Sider som G2, Capterra og PCMag rangerer for næsten alt og vil liste dig, hvis du opfylder deres kriterier. Vores SERP-data viser gns. DR 90,2 for topresultater — du kan ikke udrangere dem, men du kan være på dem.
3. Volumen er ikke lig med mulighed
“CRM” har 44.000 månedlige søgninger, men rangerende sider domineres af enterprise-brands. “ecommerce email marketing” med 500 søgninger har mere handlingsrettede outreach-mål. Brug opportunity score-formlen, ikke rå volumen.
4. Omtale er ikke lig med link
Af 590 sider, der nævner os, inkluderer kun 37 et link. Det er en linkrate på 6,3%. Hver omtale uden link er en nem outreach-gevinst — du kan høfligt bede om et link, da de allerede anbefaler dig.
5. Flere sprog multiplicerer alt
Sporing på tværs af 6 sprog (EN, FR, DE, IT, PT, ES) multiplicerer din mulighedsoverflade. Et søgeord med 1.000 søgninger på engelsk kan have 500 på fransk og 300 på tysk — det er 1.800 fra ét koncept.
Hvad er det næste: 90-dages mål
| Metrik | Nuværende | Mål |
|---|---|---|
| Søgeord med fuld audit | ~50 | 200+ |
| Samlet synlighed | 0,1% | 20%+ |
| Aktive outreach-kontakter | 0 | 50+ |
| Nye tredjepartsomtaler | 0 | 12+ |
| Publicerede indholdsstykker | 23 | 50+ |
| Backlinks fra omtaler | 37 | 100+ |
Prøv det selv
Surround sound-metoden virker for ethvert brand. Sådan kommer du i gang:
- Vælg 20 søgeord — fokusér på formater som “bedste X”, “X alternativer”, “X vs Y”
- Auditér SERP’erne — for hvert søgeord, tjek hvem der rangerer i position 1-20
- Tjek for omtaler — optræder dit brand på de sider?
- Beregn synlighed — brug formlerne ovenfor
- Prioritér efter mulighed — (100% - synlighed) x volumen = hvor du skal fokusere
- Pitch hullerne — kontakt sider, der rangerer men ikke nævner dig
Det smukke ved surround sound er, at det akkumulerer. Hver ny omtale forbedrer din synlighedsscore, og hver synlighedsforbedring gør den næste omtale nemmere at opnå.
Dette indlæg blev genereret ud fra live databaseforespørgsler mod vores produktions surround sound-sporingssystem. Three.js-visualiseringerne nedenfor gengiver rigtige data fra 2.804 søgeord, 6.900 SERP-resultater og 7.322 outreach-prospekter.