Add ourdigital-seo-audit skill with: - Full site audit orchestrator (full_audit.py) - Google Search Console and PageSpeed API clients - Schema.org JSON-LD validation and generation - XML sitemap and robots.txt validation - Notion database integration for findings export - Core Web Vitals measurement and analysis - 7 schema templates (article, faq, product, etc.) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
9.8 KiB
OurDigital SEO Audit - Claude Desktop Project Knowledge
Overview
This project knowledge file enables Claude Desktop to perform comprehensive SEO audits using MCP tools. It provides workflows for technical SEO analysis, schema validation, sitemap checking, and Core Web Vitals assessment.
Available MCP Tools
Primary Tools
| Tool | Purpose |
|---|---|
firecrawl |
Website crawling, scraping, structured data extraction |
perplexity |
AI-powered research, competitive analysis |
notion |
Store audit findings in database |
fetch |
Fetch web pages and resources |
sequential-thinking |
Complex multi-step analysis |
Tool Usage Patterns
Firecrawl - Web Scraping
firecrawl_scrape: Scrape single page content
firecrawl_crawl: Crawl entire website
firecrawl_extract: Extract structured data
firecrawl_map: Get site structure
Notion - Output Storage
API-post-search: Find existing databases
API-post-database-query: Query database
API-post-page: Create finding pages
API-patch-page: Update findings
SEO Audit Workflows
1. Full Site Audit
User prompt: "Perform SEO audit for https://example.com"
Workflow:
- Use
firecrawl_scrapeto get homepage content - Use
firecrawl_mapto discover site structure - Check robots.txt at /robots.txt
- Check sitemap at /sitemap.xml
- Extract and validate schema markup
- Use
perplexityfor competitive insights - Store findings in Notion database
2. Schema Markup Validation
User prompt: "Validate schema on https://example.com"
Workflow:
- Use
firecrawl_scrapewith extractSchema option - Look for JSON-LD in
<script type="application/ld+json"> - Check for Microdata (
itemscope,itemtype,itemprop) - Validate against schema.org requirements
- Check Rich Results eligibility
Schema Types to Check:
- Organization / LocalBusiness
- Product / Offer
- Article / BlogPosting
- FAQPage / HowTo
- BreadcrumbList
- WebSite / WebPage
Required Properties by Type:
| Type | Required | Recommended |
|---|---|---|
| Organization | name, url | logo, sameAs, contactPoint |
| LocalBusiness | name, address | telephone, openingHours, geo |
| Product | name | image, description, offers, brand |
| Article | headline, author, datePublished | image, dateModified, publisher |
| FAQPage | mainEntity (Question + Answer) | - |
3. Robots.txt Analysis
User prompt: "Check robots.txt for example.com"
Workflow:
- Fetch https://example.com/robots.txt
- Parse directives:
- User-agent rules
- Disallow patterns
- Allow patterns
- Crawl-delay
- Sitemap declarations
- Check for issues:
- Blocking CSS/JS resources
- Missing sitemap reference
- Overly restrictive rules
Sample Analysis Output:
Robots.txt Analysis
==================
User-agents: 3 defined (*, Googlebot, Bingbot)
Directives:
- Disallow: /admin/, /private/, /tmp/
- Allow: /public/, /blog/
- Sitemap: https://example.com/sitemap.xml
Issues Found:
- WARNING: CSS/JS files may be blocked (/assets/)
- OK: Sitemap is declared
- INFO: Crawl-delay set to 10s
4. Sitemap Validation
User prompt: "Validate sitemap at https://example.com/sitemap.xml"
Workflow:
- Fetch sitemap XML
- Parse and validate structure
- Check:
- XML syntax validity
- URL count (max 50,000)
- Lastmod date formats
- URL accessibility (sample)
- For sitemap index, check child sitemaps
Validation Criteria:
- Valid XML syntax
<urlset>or<sitemapindex>root element- Each
<url>has<loc>element <lastmod>in W3C datetime format- File size under 50MB uncompressed
5. Core Web Vitals Check
User prompt: "Check Core Web Vitals for https://example.com"
Workflow:
- Use PageSpeed Insights (if API available)
- Or analyze page with firecrawl for common issues
- Check for:
- Large images without optimization
- Render-blocking resources
- Layout shift causes
- JavaScript execution time
Metrics & Thresholds:
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP | < 2.5s | 2.5s - 4.0s | > 4.0s |
| CLS | < 0.1 | 0.1 - 0.25 | > 0.25 |
| FID/INP | < 100ms/200ms | 100-300ms/200-500ms | > 300ms/500ms |
6. Technical SEO Check
User prompt: "Check technical SEO for https://example.com"
Workflow:
- Check HTTPS implementation
- Verify canonical tags
- Check meta robots tags
- Analyze heading structure (H1-H6)
- Check image alt attributes
- Verify Open Graph / Twitter Cards
- Check mobile-friendliness indicators
Checklist:
- HTTPS enabled
- Single canonical URL per page
- Proper robots meta tags
- One H1 per page
- All images have alt text
- OG tags present (og:title, og:description, og:image)
- Twitter Card tags present
- Viewport meta tag for mobile
7. Local SEO Audit
User prompt: "Local SEO audit for [Business Name] in [Location]"
Workflow:
- Search for business citations with
perplexity - Check for LocalBusiness schema
- Verify NAP (Name, Address, Phone) consistency
- Look for review signals
- Check Google Business Profile (manual)
Notion Database Integration
Default Database
- Database ID:
2c8581e5-8a1e-8035-880b-e38cefc2f3ef - Name: OurDigital SEO Audit Log
Database Properties
| Property | Type | Values |
|---|---|---|
| Issue | Title | Finding title |
| Site | URL | Audited site URL |
| Category | Select | Technical SEO, On-page SEO, Content, Local SEO, Performance, Schema/Structured Data, Sitemap, Robots.txt |
| Priority | Select | Critical, High, Medium, Low |
| Status | Status | Not started, In progress, Done |
| URL | URL | Specific page with issue |
| Found Date | Date | Discovery date |
| Audit ID | Rich Text | Groups findings from same audit |
Page Content Template
Each finding page should contain:
## Description
[Detailed explanation of the issue]
## Impact
[Business/ranking impact with warning callout]
## Recommendation
[Actionable solution with lightbulb callout]
Creating Findings
Use Notion MCP to create pages:
- Query database to check for existing entries
- Create new page with properties
- Add content blocks (Description, Impact, Recommendation)
Schema Markup Templates
Organization Schema
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "[Company Name]",
"url": "[Website URL]",
"logo": "[Logo URL]",
"sameAs": [
"[Social Media URLs]"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "[Phone]",
"contactType": "customer service"
}
}
LocalBusiness Schema
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "[Business Name]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[Street]",
"addressLocality": "[City]",
"addressCountry": "[Country Code]"
},
"telephone": "[Phone]",
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}]
}
Article Schema
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "[Article Title]",
"author": {
"@type": "Person",
"name": "[Author Name]"
},
"datePublished": "[ISO Date]",
"dateModified": "[ISO Date]",
"publisher": {
"@type": "Organization",
"name": "[Publisher Name]",
"logo": {
"@type": "ImageObject",
"url": "[Logo URL]"
}
}
}
FAQPage Schema
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "[Question Text]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer Text]"
}
}]
}
BreadcrumbList Schema
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "[Homepage URL]"
}, {
"@type": "ListItem",
"position": 2,
"name": "[Category]",
"item": "[Category URL]"
}]
}
Common SEO Issues Reference
Critical Priority
- Site not accessible (5xx errors)
- Robots.txt blocking entire site
- No HTTPS implementation
- Duplicate content across domain
- Sitemap returning errors
High Priority
- Missing or duplicate title tags
- No meta descriptions
- Schema markup errors
- Broken internal links
- Missing canonical tags
- Core Web Vitals failing
Medium Priority
- Missing alt text on images
- Thin content pages
- Missing Open Graph tags
- Suboptimal heading structure
- Missing breadcrumb schema
Low Priority
- Missing Twitter Card tags
- Suboptimal URL structure
- Missing FAQ schema
- Review schema not implemented
Quick Commands Reference
| Task | Prompt |
|---|---|
| Full audit | "Perform SEO audit for [URL]" |
| Schema check | "Validate schema on [URL]" |
| Sitemap check | "Validate sitemap at [URL]" |
| Robots.txt | "Analyze robots.txt for [domain]" |
| Performance | "Check Core Web Vitals for [URL]" |
| Generate schema | "Generate [type] schema for [details]" |
| Export to Notion | "Export findings to Notion" |
| Local SEO | "Local SEO audit for [business] in [location]" |
| Competitive | "Compare SEO of [URL1] vs [URL2]" |
Tips for Best Results
- Be specific - Provide full URLs including https://
- One site at a time - Audit one domain per session for clarity
- Check Notion - Review existing findings before creating duplicates
- Prioritize fixes - Focus on Critical/High issues first
- Validate changes - Re-audit after implementing fixes
Limitations
- No direct Python script execution (use MCP tools instead)
- PageSpeed API requires separate configuration
- Google Search Console data requires authenticated access
- GA4 data requires service account setup
- Large sites may require multiple sessions