Files
Clintchiz d402256547
Deploy to Production / Build & Verify (push) Failing after 5m56s
Ping Search Engines / Notify Search Engines (push) Successful in 2s
Deploy to Production / Pre-Deploy Tests (push) Has been skipped
Deploy to Production / Deploy to Railway (push) Has been skipped
Deploy to Production / Deploy to Render (push) Has been skipped
Deploy to Production / Deploy to VPS (PM2) (push) Has been skipped
Deploy to Production / Deploy to Fly.io (push) Has been skipped
Deploy to Production / Post-Deploy Verification (push) Has been skipped
Deploy to Production / Notify on Failure (push) Successful in 2s
E2E Test Suite / Critical User Journeys (push) Has been skipped
E2E Test Suite / API Integration Tests (push) Has been skipped
E2E Test Suite / Smoke Tests (P0) (push) Failing after 11m26s
E2E Test Suite / Form Interaction Tests (push) Failing after 11m42s
E2E Test Suite / Destructive & Chaos Tests (push) Failing after 12m2s
E2E Test Suite / Cross-Browser Regression (chromium) (push) Failing after 16m14s
E2E Test Suite / Cross-Browser Regression (webkit) (push) Failing after 17m45s
E2E Test Suite / Cross-Browser Regression (firefox) (push) Failing after 25m23s
E2E Test Suite / Security Header Tests (push) Failing after 7m55s
E2E Test Suite / Test Report Summary (push) Failing after 20s
E2E Test Suite / Mobile Device Tests (push) Failing after 2h49m9s
Uptime Monitor / Health & Response Time (push) Failing after 2s
Uptime Monitor / SSL Certificate (push) Successful in 2s
Uptime Monitor / Send Alerts (push) Failing after 3s
Uptime Monitor / Record Uptime Success (push) Has been skipped
First Init
2026-03-21 16:46:46 +05:30

9.3 KiB

Sitemap & Robots.txt Setup Guide

SEO Foundation: Automated sitemap generation and search engine crawl directives for WorkRoot IT Solutions


Overview

File Purpose Location
sitemap.xml Dynamic XML sitemap src/pages/sitemap.xml.ts
sitemap-index.xml Sitemap index (scalability) src/pages/sitemap-index.xml.ts
robots.txt Crawl directives public/robots.txt

Site URL: https://workroot.in


Sitemap Implementation

Current Coverage

Content Type Included Priority Change Frequency
Homepage 1.0 Weekly
Services 0.9 Monthly
Portfolio Index 0.8 Weekly
About 0.8 Monthly
Blog Index 0.8 Weekly
Blog Posts 0.7 Monthly
Portfolio Items 0.7 Monthly
Contact 0.7 Monthly
Legal Pages 0.3 Yearly

Features

  • Dynamic generation - Automatically includes all published blog posts
  • Draft filtering - Excludes draft content from sitemap
  • Portfolio support - Ready for portfolio content collection
  • Last modified dates - Uses updatedDate or pubDate from frontmatter
  • Proper namespaces - Includes news, image, video schemas for future use
  • Caching headers - 1-hour cache for performance
  • XML formatting - Valid sitemap protocol

Robots.txt Configuration

Key Directives

User-agent: *
Allow: /

# Block private areas
Disallow: /admin/
Disallow: /private/
Disallow: /_astro/

# Sitemap location
Sitemap: https://workroot.in/sitemap.xml

AI Crawler Support (GEO)

The robots.txt explicitly allows AI search engines for Generative Engine Optimization:

Bot Purpose Allowed
GPTBot ChatGPT training/search
ChatGPT-User ChatGPT browsing
anthropic-ai Claude AI training
Claude-Web Claude search
PerplexityBot Perplexity AI
Google-Extended Gemini/Bard
CCBot Common Crawl (many AIs)
FacebookBot Meta AI

Why? AI search engines can cite your content in responses, increasing brand visibility.


Search Engine Submission

1. Google Search Console

URL: https://search.google.com/search-console

Steps:

  1. Verify ownership:

    • Add google-site-verification meta tag to <head>
    • Or upload HTML file to public/
    • Or use DNS TXT record
  2. Submit sitemap:

    Property: https://workroot.in
    Sitemaps → Add new sitemap
    URL: https://workroot.in/sitemap.xml
    
  3. Monitor:

    • Coverage report (indexed pages)
    • Enhancement reports (Core Web Vitals)
    • Performance (search analytics)

Verification Tag

Add to src/components/SEO.astro:

<meta name="google-site-verification" content="YOUR_CODE_HERE" />

2. Bing Webmaster Tools

URL: https://www.bing.com/webmasters

Steps:

  1. Import from Google (easiest):

    • Use same Google Search Console account
    • One-click import
  2. Or verify manually:

    • Add <meta name="msvalidate.01" content="..." />
    • Or upload XML file
  3. Submit sitemap:

    Sitemaps → Submit sitemap
    URL: https://workroot.in/sitemap.xml
    

3. Yandex Webmaster

URL: https://webmaster.yandex.com

Steps:

  1. Add site: https://workroot.in
  2. Verify: Upload HTML file or add meta tag
  3. Submit sitemap:
    Indexing → Sitemap files
    https://workroot.in/sitemap.xml
    

4. IndexNow (Instant Indexing)

What: Real-time indexing API for Bing, Yandex, and others

URL: https://www.indexnow.org

Implementation:

# Generate API key
openssl rand -hex 32 > public/[KEY].txt

# Submit URLs on publish/update
curl -X POST "https://api.indexnow.org/indexnow" \
  -H "Content-Type: application/json" \
  -d '{
    "host": "workroot.in",
    "key": "YOUR_API_KEY",
    "urlList": [
      "https://workroot.in/blog/new-post/"
    ]
  }'

When to use: After publishing new blog posts or major updates


Sitemap Automation

Build-Time Generation

Sitemap is automatically generated on every build:

npm run build
# Sitemap available at: dist/client/sitemap.xml

Post-Publish Hook (Recommended)

Create .github/workflows/sitemap-ping.yml:

name: Ping Search Engines

on:
  push:
    branches: [main]
    paths:
      - 'src/content/blog/**'
      - 'src/pages/**'

jobs:
  ping:
    runs-on: ubuntu-latest
    steps:
      - name: Ping Google
        run: |
          curl "https://www.google.com/ping?sitemap=https://workroot.in/sitemap.xml"

      - name: Ping Bing
        run: |
          curl "https://www.bing.com/ping?sitemap=https://workroot.in/sitemap.xml"

Testing & Validation

1. XML Validation

Test locally:

# Check XML is valid
curl http://localhost:10000/sitemap.xml | xmllint --noout -

# View in browser
open http://localhost:10000/sitemap.xml

Online validators:

2. Google Sitemap Tester

Google Search Console → Sitemaps → Test sitemap

3. Check Coverage

Verify all important pages are included:

curl https://workroot.in/sitemap.xml | grep -o '<loc>[^<]*</loc>'

Expected count:

  • Static pages: 9
  • Blog posts: 3+ (grows with content)
  • Portfolio items: 0+ (when added)

Troubleshooting

Issue Solution
Sitemap returns 404 Check src/pages/sitemap.xml.ts exists, rebuild
Empty sitemap Check blog posts aren't all draft: true
Search Console errors Use Sitemap Tester, check XML validity
Pages not indexed Check robots.txt doesn't block, verify HTTPS
Slow indexing Submit via IndexNow, ping search engines

Maintenance Checklist

  • Monthly: Check Search Console coverage report
  • When publishing: Ping search engines (manual or automated)
  • Quarterly: Validate sitemap XML structure
  • When adding collections: Update sitemap.xml.ts to include new content types
  • Annually: Review robots.txt directives, update AI bot list

Adding New Content Types

Example: Portfolio Collection

  1. Create collection (src/content/config.ts):
const portfolio = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    date: z.coerce.date(),
    updatedDate: z.coerce.date().optional(),
    // ... other fields
  }),
});

export const collections = { blog, portfolio };
  1. Sitemap auto-includes (already implemented in sitemap.xml.ts):
// Already done! ✅
let portfolioItems: any[] = [];
try {
  portfolioItems = await getCollection('portfolio');
} catch (e) {
  // Collection doesn't exist yet
}

const portfolioPages: SitemapEntry[] = portfolioItems.map((item) => ({
  url: `/portfolio/${item.slug}/`,
  lastmod: item.data.updatedDate?.toISOString().split('T')[0],
  changefreq: 'monthly',
  priority: 0.7,
}));
  1. Rebuild & verify:
npm run build
curl https://workroot.in/sitemap.xml | grep portfolio

Performance Optimizations

Current Implementation

Optimization Status
Cache-Control header 1 hour
Gzip compression Via Nginx/CDN
XML minification No whitespace waste
Conditional inclusion Drafts excluded
X-Robots-Tag Sitemap not indexed

Advanced: Sitemap Index

When sitemap exceeds 50,000 URLs:

Use sitemap-index.xml.ts to split into multiple sitemaps:

  • sitemap-blog.xml - Blog posts
  • sitemap-portfolio.xml - Portfolio
  • sitemap-static.xml - Static pages

Currently not needed (< 100 URLs), but implementation ready.


AI Search Visibility (GEO)

Why Allow AI Crawlers?

Benefit Impact
Brand mentions Cited in AI responses
Authority Recognized as source
Traffic Users click through from AI
Future-proof AI search is growing

Monitoring AI Citations

Track manually:

  • Search "[your topic]" in ChatGPT, Claude, Perplexity
  • Check if workroot.in is cited

Tools (emerging):


Resources

Resource URL
Sitemap Protocol https://www.sitemaps.org/protocol.html
Google Sitemap Guide https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview
Robots.txt Spec https://www.robotstxt.org/
IndexNow Docs https://www.indexnow.org/documentation
AI Crawler List https://darkvisitors.com/

Summary

Automated sitemap - Dynamically includes all blog posts Portfolio-ready - Supports future portfolio collection AI-friendly robots.txt - Allows all major AI crawlers SEO best practices - Proper priorities, change frequencies Scalable architecture - Sitemap index ready for growth

Next steps:

  1. Submit sitemap to Google Search Console
  2. Submit sitemap to Bing Webmaster Tools
  3. Set up IndexNow for instant indexing
  4. Monitor coverage reports monthly

Generated: 2026-03-21 Domain: workroot.in Agent: seo-specialist