[claude] SEO foundation — meta tags, sitemap, robots.txt, JSON-LD (#813) #1335

Merged
claude merged 1 commits from claude/issue-813 into main 2026-03-24 02:33:17 +00:00
Collaborator

Fixes #813

What this does

Implements the full SEO foundation for alexanderwhitestone.com:

Config

  • New site_url setting (default https://alexanderwhitestone.com, override with SITE_URL env var)
  • site_url injected as a Jinja2 global in templating.py — zero boilerplate in routes

base.html

  • Updated <title> to "Timmy AI Workshop | Lightning-Powered AI Jobs — Pay Per Task with Bitcoin" (per-page override via {% block title %})
  • {% block meta_description %} — Lightning/sats-focused copy, per-page overrideable
  • {% block meta_robots %} — defaults to index, follow
  • {% block canonical_url %} — canonical link tag pointing to site_url
  • Open Graph tags: og:title, og:description, og:url, og:image
  • Twitter/X Card (summary_large_image)
  • JSON-LD structured data:
    • SoftwareApplication
    • Service with paymentAccepted: Bitcoin Lightning
    • Organization (Alexander Whitestone)
    • FAQPage (3 Q&As about Lightning payments, no subscription, instant results)

New routes (/robots.txt, /sitemap.xml)

  • GET /robots.txt — allows all crawlers, points to sitemap
  • GET /sitemap.xml — 14 crawlable pages with changefreq + priority, today's lastmod date

Testing

  • 717 unit tests pass (1 pre-existing syntax-error skip in test_llm_triage.py, unrelated)
  • Import check confirms SEO router loads cleanly
  • templates.env.globals['site_url'] verified as https://alexanderwhitestone.com
Fixes #813 ## What this does Implements the full SEO foundation for alexanderwhitestone.com: ### Config - New `site_url` setting (default `https://alexanderwhitestone.com`, override with `SITE_URL` env var) - `site_url` injected as a Jinja2 global in `templating.py` — zero boilerplate in routes ### base.html - Updated `<title>` to "Timmy AI Workshop | Lightning-Powered AI Jobs — Pay Per Task with Bitcoin" (per-page override via `{% block title %}`) - `{% block meta_description %}` — Lightning/sats-focused copy, per-page overrideable - `{% block meta_robots %}` — defaults to `index, follow` - `{% block canonical_url %}` — canonical link tag pointing to `site_url` - Open Graph tags: og:title, og:description, og:url, og:image - Twitter/X Card (`summary_large_image`) - JSON-LD structured data: - `SoftwareApplication` - `Service` with `paymentAccepted: Bitcoin Lightning` - `Organization` (Alexander Whitestone) - `FAQPage` (3 Q&As about Lightning payments, no subscription, instant results) ### New routes (`/robots.txt`, `/sitemap.xml`) - `GET /robots.txt` — allows all crawlers, points to sitemap - `GET /sitemap.xml` — 14 crawlable pages with changefreq + priority, today's lastmod date ### Testing - 717 unit tests pass (1 pre-existing syntax-error skip in `test_llm_triage.py`, unrelated) - Import check confirms SEO router loads cleanly - `templates.env.globals['site_url']` verified as `https://alexanderwhitestone.com`
claude added 1 commit 2026-03-24 02:33:00 +00:00
feat: add SEO foundation — meta tags, sitemap, robots.txt, JSON-LD (#813)
Some checks failed
Tests / lint (pull_request) Failing after 28s
Tests / test (pull_request) Has been skipped
6483300e1c
- Add `site_url` setting to config (default: https://alexanderwhitestone.com,
  override with SITE_URL env var)
- Inject `site_url` as a Jinja2 global in templating.py so all templates
  can reference it without per-route boilerplate
- Update base.html <title> to "Timmy AI Workshop | Lightning-Powered AI
  Jobs — Pay Per Task with Bitcoin" with per-page override block
- Add SEO meta blocks to base.html:
  - `{% block meta_description %}` with Lightning/sats copy
  - `{% block meta_robots %}` defaulting to "index, follow"
  - `{% block canonical_url %}` link tag pointing to site_url
  - Open Graph tags (og:title, og:description, og:url, og:image)
  - Twitter/X Card summary_large_image tags
  - JSON-LD structured data: SoftwareApplication, Service
    (paymentAccepted: Bitcoin Lightning), Organization, FAQPage
- Add src/dashboard/routes/seo.py with GET /robots.txt and
  GET /sitemap.xml (lists 14 crawlable pages with changefreq + priority)
- Register seo_router before all other routers in app.py

Fixes #813

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
claude merged commit 298b585689 into main 2026-03-24 02:33:17 +00:00
claude deleted branch claude/issue-813 2026-03-24 02:33:17 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#1335