SEO-lärdomar från när vi fixade vår egen webbplats
Vi lade några dagar på att läsa vår egen webbplats på samma sätt som en sökmotor gör, och hittade sex saker värda att fixa. Varje sida deklarerade två FAQ-block, Google använde en dekorativ bakgrundsglöd som vår miniatyrbild, en grupp mallsidor rankade på sökningar de inte besvarade, och en ny del av sajten blockerades av vår egen edge på staging. Inget av det var dramatiskt. Allt av det kostade oss synlighet i tysthet.
Webbplatsen i ett stycke
mythex.ai är en single-page-app som vi prerenderar vid bygget: ett skript går igenom varje route, skriver en statisk HTML-fil för den och lägger in sidans titel, beskrivning och strukturerad data (JSON-LD-blocket som talar om för sökmotorer vad en sida är – se vad strukturerad data är). Det mesta av det som följer finns i det steget, eftersom det är HTML:en som en crawler faktiskt läser.
1. Varje sida påstod sig vara FAQ-sidan
Symptom. Vår HTML-mall bar ett FAQPage-block för hela sajten i sin strukturerade data, med en URL som pekade på /faq. Prerenderingen lade sedan till varje sidas egen FAQPage ovanpå. Så varje sida på sajten skickade två – och vår integritetspolicy sa till Google att den var FAQ-sidan.
Varför det spelar roll. Google förväntar sig högst en FAQPage per sida. En andra som pekar någon annanstans är den sortens sak som gör att sidans markering får lägre värde, inte bara ignoreras.
Åtgärd. Det globala blocket är borta. Varje sidas FAQ-markering kommer nu från ett enda ställe, inklusive /faq självt, som bygger den från hela listan med frågor. Sidor utan FAQ deklarerar nu ingen, vilket är det ärliga svaret. Och prerenderingen misslyckas om någon sida igen bär mer än en FAQPage. En regel som bara lever i någons minne bryts; en regel som bygget tvingar fram gör inte det.
2. Google använde fel bild för oss
Symptom. I sökresultaten var Mythex-miniatyren den mjukt pulserande glöden bakom vår startsidas hero – en dekorativ bakgrundsbild – i stället för vårt delningskort.
Varför det hände. Vi har aldrig sagt åt Google vilken bild som representerar en sida, så den valde en den hittade.
Åtgärd. Två sidor av samma problem:
- Säg vilken bild som är sidans. Startsidan har nu en
WebPage-nod med enprimaryImageOfPagesom pekar på delningskortet, och varje prerenderad sidas strukturerade data bär sin egen bild (sidans delningsbild, eller standardbilden). - Dölj dekorationen. Bakgrundsbilderna är nu förbjudna i
robots.txtoch serveras med ennoindex, noimageindex-header, så de hålls utanför bildsökningen och miniatyrerna.
3. Sökmotorerna kände bara till vår logotyp
Vår Organization-markering hade ett namn, en logotyp och några sociala länkar – varumärkesinformation, inget annat. Sökmotorer bygger ett företags kunskapspanel av registerliknande fakta, så vi lade till de som finns i vår näringslicens: juridiskt namn, grundandedatum, grundare och registrerad adress. Telefonnumret utelämnade vi med avsikt.
4. Mallsidorna besvarade fel fråga
Symptom. Search Console visade att tre mallsidor fick visningar men inga klick. En rankade på "content strategist portfolio" och varianter, en på "best italian restaurant website design", en på ett kluster kring "agile board" – och hälften av de sökningarna innehöll ordet "free". Positionerna låg mellan mitten av 20-talet och 50-talet.
Varför. Varje sida besvarade en annan fråga än den som ställdes. Någon som ville se hur bra italiensk restaurangdesign ser ut hamnade på en sida som sålde en byggare.
Åtgärd. Var och en av de tre har nu ett avsnitt skrivet för sökningen snarare än för produkten, en titel och beskrivning med de ord folk faktiskt skriver, och FAQ som är värda den markering de redan skickade.
Samma commit fixade ett tystare problem. Blocket "relaterade mallar" tog de första fyra mallarna i en kategori, så alla portfoliomallar pekade på samma fyra portfolios, och resten av kategorin hade inga interna länkar alls. Vi ersatte det med en ring ordnad efter underkategori: varje mallsida får nu exakt fyra länkar in och fyra ut. Den prerenderade HTML:en skriver nu också ut de länkarna – tidigare fanns de bara efter att JavaScript körts, vilket en crawler kanske aldrig gör.
5. Att berätta för Bing om nya sidor direkt när de driftsätts
Google ignorerar IndexNow, ett protokoll för att pinga sökmotorer när en URL ändras. Bing, Yandex och Seznam använder det – och Bings index är det ChatGPT-sökningen läser. En AI-appbyggare som AI-assistenter inte kan hitta är en särskild sorts misslyckande.
Det uppenbara sättet, att skicka hela sitemapen vid varje driftsättning, är hur en nyckel blir strypt, och de flesta driftsättningar ändrar inget som en sökmotor bryr sig om. Så ett skript jämför sitemapen som sajten serverar just nu med den som precis byggts och skickar bara skillnaden.
Två detaljer fick det att fungera:
- Ta en ögonblicksbild före driftsättningen. Utgångsläget måste fångas innan det nya bygget går live. Efteråt är den "levande" sitemapen redan den nya, och varje diff blir tom.
- Bara nya sidor, för nu. Vår sitemap har inga
lastmod-datum, så skriptet meddelar nya sidor men inte omskrivningar. Att stämpla varje URL med byggdatumet skulle markera hela sajten som ändrad vid varje driftsättning – precis den spam vi ville undvika.
Det körs bara vid produktionsdriftsättningar och får aldrig få bygget att misslyckas: när det körs är sajten redan live, och en pingning till sökmotorn är inte värd en röd driftsättning.
6. Vår egen edge sa "not found"
När vi lanserade /ai-sidorna (mer om dem i en landningssida för varje typ av företag) visade staging "Not found" för alla, medan den statiska hosten serverade dem bra.
Tjänsten framför våra marknadsföringsvärdar vidarebefordrar bara en lista med tillåtna sökvägar; allt annat får ett hårt 404. /ai var nytt och fanns inte på listan. Vi lade till /ai och /ai/*, med ett test som kontrollerar att de går igenom. En liten bugg, men precis den sorten som gör en ny sektion osynlig för crawlers utan att någon märker det.
Det vi tog med oss
- Läs HTML:en som en crawler läser. De flesta av dessa var osynliga i en webbläsare och uppenbara i den prerenderade filen.
- Gör SEO-regler till byggkontroller. "En FAQPage per sida" tvingas nu fram, i stället för att komma ihåg.
- Säg till sökmotorer vad du menar. Om du inte anger vilken bild eller vilka fakta som representerar dig, kommer de att gissa.
- Search Console berättar vilken fråga folk ställde. Visningar utan klick betyder oftast att sidan besvarade en annan fråga.
- Skicka skillnader, inte allt. Att pinga bara det som ändrats håller dig på rätt sida om hastighetsgränserna.
Om du gör detsamma för en webbplats du byggt täcker våra guider om SEO för AI-byggda webbplatser och hur du konfigurerar Google Search Console grunderna.