#!/usr/bin/env python3
"""
generate_sitemap.py
Generates sitemap.xml for SEO.
Usage:
python scripts/generate_sitemap.py --domain https://yourdomain.com
"""
import argparse
from datetime import datetime
TOOLS = [
'/tools/pdf-to-word',
'/tools/word-to-pdf',
'/tools/compress-pdf',
'/tools/merge-pdf',
'/tools/split-pdf',
'/tools/rotate-pdf',
'/tools/pdf-to-images',
'/tools/images-to-pdf',
'/tools/watermark-pdf',
'/tools/protect-pdf',
'/tools/unlock-pdf',
'/tools/page-numbers',
'/tools/image-converter',
'/tools/video-to-gif',
'/tools/word-counter',
'/tools/text-cleaner',
]
PAGES = [
'/',
'/about',
'/privacy',
]
def generate_sitemap(domain: str) -> str:
today = datetime.now().strftime('%Y-%m-%d')
urls = []
# Home page — highest priority
urls.append(f'''
{domain}/
{today}
weekly
1.0
''')
# Tool pages — high priority
for tool in TOOLS:
urls.append(f'''
{domain}{tool}
{today}
monthly
0.9
''')
# Static pages — lower priority
for page in PAGES[1:]:
urls.append(f'''
{domain}{page}
{today}
monthly
0.5
''')
sitemap = f'''
{chr(10).join(urls)}
'''
return sitemap
def main():
parser = argparse.ArgumentParser(description='Generate sitemap.xml')
parser.add_argument('--domain', type=str, required=True, help='Site domain (e.g. https://yourdomain.com)')
parser.add_argument('--output', type=str, default='frontend/public/sitemap.xml', help='Output file path')
args = parser.parse_args()
domain = args.domain.rstrip('/')
sitemap = generate_sitemap(domain)
with open(args.output, 'w', encoding='utf-8') as f:
f.write(sitemap)
print(f"Sitemap generated: {args.output}")
print(f"URLs: {len(TOOLS) + len(PAGES)}")
if __name__ == '__main__':
main()