84 lines
2.8 KiB
Markdown
84 lines
2.8 KiB
Markdown
# 25. Sitemap, Robots.txt & Open Graph
|
|
|
|
meta:
|
|
id: web-production-25
|
|
feature: web-production
|
|
priority: P2
|
|
depends_on: []
|
|
tags: [seo, marketing, production]
|
|
|
|
objective:
|
|
- Implement SEO fundamentals including sitemap, robots.txt, and Open Graph meta tags for all pages
|
|
|
|
deliverables:
|
|
- Dynamic sitemap.xml generation
|
|
- robots.txt configuration
|
|
- Open Graph meta tags on all pages
|
|
- Twitter Card meta tags
|
|
- Canonical URLs
|
|
|
|
steps:
|
|
1. Create dynamic sitemap:
|
|
- Route: /sitemap.xml
|
|
- Include all public pages: /, /about, /features, /pricing, /blog/*
|
|
- Include auth pages: /login, /signup
|
|
- Exclude admin pages and user-specific pages
|
|
- Set priorities and change frequencies
|
|
- Auto-update when blog posts published
|
|
2. Create robots.txt:
|
|
- Allow: all public pages
|
|
- Disallow: /(admin)/*, /api/*, /billing/*, /auth/*
|
|
- Sitemap reference
|
|
- Crawl-delay for respectful crawling
|
|
3. Add Open Graph tags to all pages:
|
|
- og:title matching page title
|
|
- og:description from meta description
|
|
- og:image with branded preview image (1200x630)
|
|
- og:url with canonical URL
|
|
- og:type (website, article for blog)
|
|
- og:site_name: Kordant
|
|
4. Add Twitter Card tags:
|
|
- twitter:card: summary_large_image
|
|
- twitter:title, twitter:description, twitter:image
|
|
5. Add canonical URLs:
|
|
- Prevent duplicate content issues
|
|
- Use absolute URLs with https
|
|
- Handle query parameters correctly
|
|
6. Create branded OG image:
|
|
- Design 1200x630px image with Kordant branding
|
|
- Include logo, tagline, and shield icon
|
|
- Generate dynamically for blog posts (optional)
|
|
7. Add structured data:
|
|
- Organization schema on homepage
|
|
- WebSite schema with SearchAction
|
|
- Article schema for blog posts
|
|
- SoftwareApplication schema for app
|
|
|
|
tests:
|
|
- Unit: Test sitemap XML generation
|
|
- Integration: Verify meta tags on all pages
|
|
- SEO: Test with Facebook Sharing Debugger and Twitter Card Validator
|
|
|
|
acceptance_criteria:
|
|
- Sitemap accessible at /sitemap.xml with all public pages
|
|
- robots.txt accessible at /robots.txt with correct directives
|
|
- Open Graph tags present on all public pages
|
|
- Twitter Card tags present on all public pages
|
|
- Canonical URL on every page
|
|
- Branded OG image displaying correctly in social shares
|
|
- Structured data valid per schema.org (test with Google Rich Results)
|
|
- Blog posts have Article schema
|
|
|
|
validation:
|
|
- `curl /sitemap.xml` → valid XML with all routes
|
|
- `curl /robots.txt` → correct allow/disallow directives
|
|
- Facebook Sharing Debugger → OG image and title display correctly
|
|
- Google Rich Results Test → structured data valid
|
|
- View page source → all meta tags present
|
|
|
|
notes:
|
|
- SolidJS MetaProvider already in use — extend with OG tags
|
|
- Use @solidjs/meta for dynamic meta tags per route
|
|
- Consider using @vercel/og or similar for dynamic OG images
|
|
- Blog sitemap should update automatically on publish
|