NanoSkill
Skill indienen

SEO-auditagentvaardigheid

doorJeffLi1993382GitHub-sterrenGitHub

Een lichtgewicht SEO-auditagentvaardigheid voor Claude Code, OpenClaw en Codex. Voer snelle SEO-audits van afzonderlijke pagina's uit, controleer kernproblemen op de pagina en op siteniveau en genereer een gestructureerd SEO-rapport met uitvoerbare oplossingen.

seo-auditseoon-page-seosite-auditBeveiligingsscan geslaagd
Resultaatpreview

Volledige demo

Bekijk een echt SEO-auditresultaat gegenereerd door deze agentvaardigheid.

Aan de slag

Voer je eerste taak uit

  1. seo-audit-step-1
    01

    Stap 1: Installeren

    Voeg de vaardigheid toe aan je agent

  2. seo-audit-step-2
    02

    Stap 2: Audittaak

    Gebruik één URL en vraag om een geprioriteerde audit.

  3. seo-audit-step-3
    03

    Stap 3: Resultaat bekijken

    Krijg geprioriteerde SEO-oplossingen waar je direct actie op kunt ondernemen.

Installatiecommando

$ npx skills add JeffLi1993/seo-audit-skill

Overzicht

SEO-audit is een lichtgewicht SEO-auditagentvaardigheid voor AI-codeeragenten zoals Claude Code, OpenClaw en Codex. Hiermee kan een agent een enkele URL inspecteren, kern-SEO-problemen controleren en een gestructureerd auditrapport genereren met bewijsmateriaal, impact en aanbevolen oplossingen.

De vaardigheid richt zich op eerste-passage SEO-controles, inclusief title-tags, meta-omschrijvingen, H1-tags, canonical-tags, alt-tekst voor afbeeldingen, trefwoordplaatsing, robots.txt, sitemap.xml, 404-afhandeling, URL-canonicalisatie, E-E-A-T-vertrouwenspagina's en JSON-LD-schemavalidatie.

Gebruik het wanneer je een snelle SEO-gezondheidscontrole nodig hebt voordat je een pagina publiceert, een landingspagina beoordeelt, basisrangschikkingsproblemen diagnosticeert of bepaalt of een diepgaandere technische SEO-audit nodig is.

Belangrijkste functies

Wat maakt dit krachtig

  • Snelle SEO-audit van één pagina

    Voer een snelle SEO-audit uit voor elke URL en krijg een eerste indruk van de SEO-gezondheid van de pagina zonder een volledige crawler of analytics-workflow in te stellen.

  • Kern On-Page SEO-controles

    Controleer title-tags, meta descriptions, H1-tags, canonical-tags, alt-tekst van afbeeldingen, headingstructuur, trefwoordplaatsing, interne links en het aantal woorden.

  • Basisprincipes van SEO op siteniveau

    Beoordeel fundamentele SEO-signalen zoals robots.txt, sitemap.xml, 404-afhandeling, URL-canonicalisatie, i18n / hreflang en E-E-A-T-vertrouwenspagina's.

  • JSON-LD Schemavalidatie

    Detecteer of de pagina de juiste gestructureerde gegevens heeft, valideer veelvoorkomende schematypen en markeer ontbrekende of onvolledige JSON-LD-velden.

  • Gestructureerd SEO-auditrapport

    Genereer een duidelijk SEO-auditrapport met de statussen geslaagd, waarschuwing en mislukt, plus bewijsmateriaal, impact en specifieke oplossingen voor elk belangrijk probleem.

Use cases

Wanneer je dit gebruikt

  • Audit een landingspagina vóór publicatie

    Gebruik deze vaardigheid voordat u een homepage, productpagina, toolpagina of SEO-landingspagina lanceert om basis-SEO-problemen vroegtijdig op te sporen.

  • Voer een snelle SEO-gezondheidscontrole uit

    Controleer of een pagina de juiste titel, meta description, H1, canonical-tag, schema, interne links en andere basis-SEO-signalen heeft.

  • Bestaande pagina's met rangschikkingsproblemen beoordelen

    Gebruik het wanneer een pagina is geïndexeerd maar niet goed scoort, of wanneer u snel duidelijke on-page- en siteniveauproblemen wilt identificeren.

SKILL.md

seo-audit — Basis SEO-audit

Een lichtgewicht SEO-agentvaardigheid ontworpen voor snelle, standaard SEO-audits van één pagina. Mogelijk gemaakt door OpenClaw. Geschikt voor eerste pagina-inspecties of wanneer een snelle beoordeling nodig is zonder volledige technische diepgang.


Wanneer deze vaardigheid te gebruiken

Gebruik seo-audit wanneer:

  • De gebruiker zegt: "audit deze pagina", "controleer SEO", "analyseer mijn URL", "snelle SEO-controle", "wat is er mis met mijn pagina"
  • Er is geen specifieke diepgang gevraagd — dit is het standaard startpunt
  • De gebruiker heeft een snel, leesbaar overzicht nodig in plaats van een uitgebreide technische analyse

Als de gebruiker meer diepgang wil, upgrade naar seo-audit-full:

Tip: Gebruik voor diepgaande technische audits, geavanceerde on-page SEO of volledige rapportages de vaardigheid seo-audit-full.


Verwachte invoer

InvoerVereistOpmerkingen
Pagina-URLJaDe te auditen pagina
Ruwe HTML of paginainhoudOptioneelMaakt nauwkeurigere on-page analyse mogelijk
GSC / analytics-gegevensOptioneelNiet vereist voor basisaudit

Als alleen een URL wordt verstrekt en er geen broncode of crawlergegevens beschikbaar zijn, vermeld dan duidelijk:

Beperking: Deze audit is alleen gebaseerd op zichtbare paginainhoud en openbaar beschikbare signalen. Broncode, GSC-gegevens, crawl-logs en prestatiegegevens zijn niet beschikbaar voor deze audit.


Uitvoer

Maak een Basis SEO-auditrapport door de sjabloon in te vullen op assets/report-template.html, en sla het op in een bestand — print nooit ruwe HTML naar de terminal.

Bestandsnaam: reports/<hostname>-<slug>-audit.html

https://example.com/blog/best-tools → reports/example-com-blog-best-tools-audit.html
https://example.com/                → reports/example-com-audit.html

Zeg na het opslaan tegen de gebruiker:

✅ Rapport opgeslagen → reports/example-com-audit.html
   Wilt u het nu openen? (ja / nee)

Zo ja → voer uit: open reports/example-com-audit.html


Sjabloon-placeholders — vul elk onafhankelijk in:

PlaceholderInhoud
{{summary_verdict}}Eén zin: totaal aantal uitgevoerde controles, hoeveel gefaald/gewaarschuwd/geslaagd
{{summary_critical_html}}<li> per kritiek (fout) item, of <li class="summary-empty">Geen</li>
{{summary_warnings_html}}<li> per waarschuwingsitem, of <li class="summary-empty">Geen</li>
{{summary_passing_html}}<li> per geslaagde controle, of <li class="summary-empty">Geen</li>

Scripts

Voer deze scripts uit voordat u bevindingen schrijft. Ze produceren gestructureerde JSON — gebruik de JSON direct als bewijs; haal dezelfde URL's niet handmatig opnieuw op.

Afhankelijkheden: pip install requests (html-parsing gebruikt Python stdlib)

# Step 1: site-level checks (robots.txt + sitemap.xml)
python scripts/check-site.py https://example.com

# Step 2: page-level checks (H1, title, meta description, canonical)
python scripts/check-page.py https://example.com
# With primary keyword (recommended — enables H1 keyword presence check)
python scripts/check-page.py https://example.com --keyword "running shoes"

# Optional: fetch raw page HTML for further inspection
python scripts/fetch-page.py https://example.com --output page.html

# Step 3: JSON-LD schema validation
python scripts/check-schema.py https://example.com
# Or from previously fetched HTML (avoids redundant fetch):
python scripts/check-schema.py --file page.html

Elk script eindigt met code 0 (alle geslaagd/waarschuwing) of 1 (eventuele fout).

STRIKTE SCOPE — voeg geen controle toe die niet hieronder vermeld staat. Geen uitzonderingen.

Toegestane site-niveau controles (in {{site_checks_html}}):

  • robots.txt · sitemap.xml · 404-afhandeling · URL-canonicalisatie · i18n / hreflang

Toegestane E-E-A-T-controles (in {{eeat_checks_html}}):

  • Over ons · Contact · Privacybeleid · Servicevoorwaarden · Media/Partners (alleen indien aanwezig)

Toegestane pagina-niveau controles (in {{page_checks_html}}), uitvoer in deze exacte volgorde: URL-slug · Title-tag · Meta-beschrijving · H1-tag · Canonical-tag · Afbeelding Alt-tekst · Aantal woorden · Trefwoordplaatsing · Koppenstructuur · Interne links · Schema (JSON-LD)

Logica voor afbeelding Alt-tekst:

  • Parseer <img>-tags uit statische HTML
  • Geslaagd: alle afbeeldingen hebben een niet-lege alt (decoratieve afbeeldingen met alt="" zijn OK)
  • Waarschuwing: elke inhoudsafbeelding mist het alt-attribuut
  • Niet geverifieerd (status-info): 0 afbeeldingen gevonden in statische HTML → waarschijnlijk door JS weergegeven, kan niet verifiëren

⛔ STARRE REGEL — Voer ALLEEN de controlerijen uit die gedefinieerd zijn in report-template.html. Als een controle niet in de toegestane lijsten hierboven staat, voer deze dan NIET uit — zelfs niet als u problemen vindt. Geen uitzonderingen. Geen "bonus"-controles. Geen improvisatie. De sjabloon is de enige bron van waarheid. Behandel het als een strikte whitelist.

Nog steeds VERBODEN (horen bij seo-audit-full): OG-tags · Twitter Card · Sociale tags · Paginagewicht · Core Web Vitals · Robots Meta

Hoe de JSON-uitvoer te gebruiken:

  • Wijs elke veld statuspass / warn / fail / error direct toe aan de rapportcontroletabel
  • Gebruik de detail tekenreeks van elk veld als startpunt voor de Bewijsregel in bevindingen
  • Spreek de scriptuitvoer niet tegen tenzij u aanvullend waarneembaar bewijs heeft
  • Scheid controlegroepen met <div class="subsection-label">Label</div> binnen {{site_checks_html}}: Crawlbaarheid · URL-canonicalisatie · i18n / hreflang · Schema (JSON-LD) en <div class="subsection-label">E-E-A-T Vertrouwenspagina's</div> vóór {{eeat_checks_html}}

LLM-beoordeling — verplicht wanneer llm_review_required: true:

Het script markeert velden die een semantische of kwaliteitsoordeel vereisen dat het niet kan uitvoeren. Laat llm_review_required: true nooit onopgelost — maak altijd een expliciete beoordelingsoproep.

H1 — geactiveerd wanneer keyword_match == "partial":

h1_text : (from h1.values[0])
keyword : (the --keyword passed to the script)

Beoordeel: Dekt deze H1 semantisch de zoekintentie van het trefwoord?
  - Overweeg synoniemen, natuurlijke varianten, onderwerpdekking
  - ja → degradeer naar "pass", noteer de variant
  - nee → behoud "warn" of upgrade naar "fail", leg de lacune uit

Title — geactiveerd wanneer keyword_match == "partial" OF keyword_position != "start":

title   : (from title.value)
keyword : (the --keyword passed)

Beoordeel:
  1. Dekt de titel semantisch de zoekintentie van het trefwoord?
  2. Is de titel grammaticaal correct en natuurlijk leesbaar?
  3. Trefwoordpositie — pas verschillende normen toe per paginatype:
     - Startpagina   : Merk + kerntrefwoord is correct (bijv. "Acme | AI Workflow Automation")
                    Markeer merk-eerst NIET als een probleem.
     - Binnenpagina's: Kerntrefwoord moet voorop staan (bijv. "AI Workflow Automation voor Teams — Acme")
                    Markeer als trefwoord zonder goede reden midden in de titel begraven is.

BELANGRIJK — markeer deze NIET als negatief:
  - Jaren (bijv. "2026") → signaal van actualiteit, verhoogt CTR — behandel als positief tenzij
    de pagina expliciet tijdloze inhoud is waar datering de levensduur zou schaden.
  - Getallen (bijv. "5 beste", "Top 10", "3 stappen") → scheppen duidelijke verwachtingen,
    presteren consistent beter dan niet-numerieke titels in CTR — behandel altijd als een pluspunt.
  - Specifieke kwalificaties ("Open-Source", "Self-Hosted", "Gratis") → verkleinen de intentie
    en trekken klikken van hogere kwaliteit aan — bestraf niet.

URL-slug — geactiveerd wanneer keyword_match != "full" of is_homepage == false:

slug    : (from url_slug.slug)
keyword : (the --keyword passed)

Beoordeel:
  1. Bevat de slug het primaire trefwoord of een natuurlijke variant?
  2. Is de padhiërarchie logisch? (/categorie/trefwoord is ideaal)
  3. Is het beknopt en menselijk leesbaar?
  Startpagina (is_homepage: true): overslaan — geen beoordeling nodig.

Meta-beschrijving — altijd geactiveerd wanneer inhoud aanwezig is:

meta_description : (from meta_description.value)
keyword          : (the --keyword passed)

Beoordeel alle vier:
  1. Volledige zin(nen)? (1-2 zinnen, geen fragmenten)
  2. Noemt een concreet resultaat — geen vage prietpraat?
     Goed: "Verkort ontwerptijd met 60% met AI-aangedreven sjablonen"
     Slecht:  "De beste tool voor al uw ontwerpbehoeften"
  3. Trefwoord of natuurlijk synoniem één keer gebruikt — niet opgevuld?
  4. Specifieker dan wat een typische concurrent zou schrijven?

BELANGRIJK — markeer deze NIET als negatief:
  - Jaren (bijv. "2026") → signaal van actualiteit, verbeteren CTR voor tijdgevoelige zoekopdrachten.
    Noteer het jaartal alleen als de pagina expliciet tijdloze inhoud is waar datering schaadt.
  - Getallen (bijv. "5 beste", "3 stappen") → concrete specificiteit, sterk CTR-signaal.
  - Afsluitend "en meer." → hooguit een kleine stijlopmerking, nooit een Waarschuwing of Fout.

Aanbevolen werkwijze

Volg deze stappen in volgorde:

  1. Bevestig de scope — bevestig dat dit een basisaudit is; noteer eventuele ontbrekende gegevens

  2. Leid het primaire trefwoord af — haal de pagina op met fetch-page.py en bepaal vervolgens het primaire trefwoord:

    • Als de gebruiker expliciet een trefwoord heeft opgegeven → gebruik deze direct
    • Zo niet → lees de H1, titel en eerste alinea van de pagina en leid de meest waarschijnlijke doelzoekwoordcombinatie af (wat zou een zoeker typen om deze pagina te vinden?)
    • Geef het afgeleide trefwoord expliciet aan voordat u controles uitvoert:

      "Afgeleid primair trefwoord: open source claude alternatieven"

  3. Voer check-site.py uit — parseer de JSON-uitvoer voor robots, sitemap, 404-afhandeling en URL-canonicalisatie

    404-controle: haal <origin>/this-page-definitely-does-not-exist-seo-audit-check op

    • Retourneert 404 → Geslaagd · Retourneert 200 (zachte 404) → Fout · Retourneert 301 naar startpagina → Waarschuwing

    URL-canonicalisatiecontroles (elk is een afzonderlijke subcontrole):

    • HTTP→HTTPS: haal http://<host> op — moet 301 doorverwijzen naar https://. Retourneert 200 → Fout.
    • www-consistentie: haal zowel https://www.<host> als https://<host> op — één moet 301 doorverwijzen naar de andere. Beide retourneren 200 → Waarschuwing.
    • Sluitende slash: vergelijk de daadwerkelijk geserveerde URL met de canonical tag op de pagina. Komt niet overeen → Waarschuwing.
    • Canonical-overeenkomst: de href van de canonical tag moet exact overeenkomen met de uiteindelijke URL na alle omleidingen. Komt niet overeen → Waarschuwing.
  4. E-E-A-T-infrastructuurcontrole — controleer voor elke onderstaande vertrouwenspagina twee lagen:

    • Laag 1 — Bestaat: haal de URL op, controleer HTTP-status (200 = bestaat, 404/omleiding = ontbreekt)
    • Laag 2 — Bereikbaar: haal de HTML van de startpagina op, controleer of de footer of navigatie een link naar deze pagina bevat
    PaginaVereist
    Over onsJa
    ContactJa
    PrivacybeleidJa
    ServicevoorwaardenJa
    Media / PartnersNee — alleen opnemen indien aanwezig

    Statusregels:

    • Pagina ontbreekt (niet-200) → Fout
    • Pagina bestaat maar niet gelinkt in footer/nav → Waarschuwing
    • Pagina bestaat en gelinkt in footer/nav → Geslaagd
    • Optionele pagina ontbreekt → overslaan, rij niet opnemen
  5. Voer check-page.py --keyword "<afgeleid_trefwoord>" uit — parseer de JSON-uitvoer voor H1, titel, meta-beschrijving, canonical en URL-slug

  6. i18n / hreflang-controle — alleen uitvoeren als de pagina hreflang-tags bevat of <html lang> meertaligheid suggereert:

    • Volledig overslaan (N.v.t.) als er geen hreflang-tags zijn gevonden en de site eentalig lijkt
    • Als hreflang-tags aanwezig zijn, controleer:
      • Wederkerige symmetrie: elke gerefereerde URL moet teruglinken naar alle andere varianten — elke verbroken link = Fout
      • Taalcodes: moeten geldige BCP 47 zijn (bijv. zh-CN niet zh, en-US niet en-us) — verkeerde code = Waarschuwing
      • x-default: zou aanwezig moeten zijn voor taalkeuze- of fallback-pagina's — ontbreekt = Waarschuwing
      • html[lang] attribuut: moet overeenkomen met de primaire hreflang van de pagina — komt niet overeen = Waarschuwing
      • URL-structuur: aanbevolen patroon — standaardtaal (meestal en) in de root zonder voorvoegsel, andere talen onder subpaden (/zh/, /es/).
        • /page (en) + /zh/page + /es/page → Geslaagd
        • /en/page + /zh/page → Waarschuwing (en-voorvoegsel is overbodig, verspilt crawldiepte)
        • Alleen markeren als het patroon duidelijk inconsistent is of en onnodig is voorgevoegd
  7. Voer check-schema.py uit — parseer de JSON-uitvoer voor schematypen en veldvalidatie

    python scripts/check-schema.py https://example.com
    # Or from previously fetched HTML:
    python scripts/check-schema.py --file page.html
    

    Het script extraheert JSON-LD-blokken, valideert @type en vereiste velden volgens de Schema.org-specificatie. llm_review_required: true is altijd ingesteld — bevestig dat inferred_page_type overeenkomt met de daadwerkelijke paginainhoud.

    Paginatype → verwachte @type-referentie:

    PaginatypeVerwachte @typeMin. vereiste velden
    StartpaginaWebSite + Organizationname, url, logo
    Blog / ArtikelArticle of BlogPostingheadline, datePublished, author, image
    ProductProductname, image, offers (price, priceCurrency)
    FAQFAQPagemainEntity[].name, acceptedAnswer.text
    How-toHowToname, step[].text
    Lokaal bedrijfLocalBusinessname, address, telephone
    Generieke landingspaginaN.v.t. — overslaan, geen breed ondersteund type
    • Geslaagd: correct @type aanwezig, alle vereiste velden geldig, geen conflicten
    • Waarschuwing: @type aanwezig maar aanbevolen velden ontbreken
    • Fout: verwachte @type ontbreekt volledig
    • N.v.t.: generieke landingspagina — bestraf niet
  8. Vat bevindingen samen — elke bevinding moet het format Bewijs / Impact / Oplossing volgen

  9. Prioritaire acties — vermeld de top 3 oplossingen met de hoogste impact

  10. Render rapport — sla op in reports/<hostname>-<slug>-audit.html en vraag de gebruiker om te openen

  11. Upgrade-aansporing — als problemen buiten de basisscope worden gevonden, stel seo-audit-full voor


Regels voor het schrijven van rapportdetails

De Detail-cel in controletabellen moet deze regels volgen — geen uitzonderingen:

Geslaagd → één korte zin. Geen lijsten, geen uitweiding.

Goed: "Geldige XML urlset · 104 URL's · vermeld in robots.txt."
Slecht:  "Geldige XML urlset met 104 URL's. Correct vermeld in robots.txt.
       Blogposts worden waarschijnlijk geïndexeerd via deze sitemap."

Waarschuwing → één <div class="detail-issue"> met ≤2 opsommingstekens. Eén <div class="detail-fix"> met de oplossing.

Goed:
  <div class="detail-issue">· Titel 48 tekens — 2 onder minimum. · Jaar "2026" zal de pagina dateren.</div>
  <div class="detail-fix">Uitbreiden naar 50–60 tekens; verwijder jaar indien tijdloos.</div>

Slecht: proza van drie zinnen dat uitlegt wat een title-tag is en waarom lengte ertoe doet.

Fout → hetzelfde als Waarschuwing. Begin met de exacte fout. Geen achtergrond uitleg.

Leg NIET uit wat een controle is, herhaal GEEN informatie die al zichtbaar is in de statusbadge, behandel de lezer NIET als onbekend met de basisprincipes van SEO.


Verplicht bevindingsformaat

Elke belangrijke bevinding moet deze structuur volgen:

**Bevinding: [Bevindingstitel]**

- **Bewijs:** [Wat is waargenomen — direct citaat, screenshotverwijzing of meetbare gegevens]
- **Impact:** [Waarom dit belangrijk is voor SEO of UX]
- **Oplossing:** [Specifieke, uitvoerbare aanbeveling]

Schrijf geen vage conclusies. Als bewijs onvoldoende is, vermeld aannames dan expliciet.


Upgrade-aansporing

Voeg dit toe aan het einde van elk basisauditrapport:

Wilt u een diepere analyse? Dit was een basis SEO-audit die site-niveau signalen en kern on-page controles dekte. Gebruik voor geavanceerde technische SEO, scoring van inhoudskwaliteit, gestructureerde data-analyse en volledige crawl-gebaseerde bevindingen de vaardigheid seo-audit-full.


Referentiebestanden

  • Gedetailleerde audit-scope en velddefinities: references/REFERENCE.md
  • Definitieve HTML-rapportsjabloon: assets/report-template.html
  • Site-niveau controlescript: scripts/check-site.py
  • Pagina-niveau controlescript: scripts/check-page.py
  • Ruwe pagina-ophaler: scripts/fetch-page.py
  • Schema-validatiescript: scripts/check-schema.py

FAQ