API + integration

Recap.at as a data source.

Every recap is available in markdown, YAML, and JSON-LD. RSS feeds cover the root + every decade / country / category. AI crawlers discover the corpus through llms.txt and sitemap-index.xml. Third-party sites can embed any recap as a card via iframe.

Per-recap data formats

Every recap is reachable in three machine-readable formats at predictable URLs. Use any of them as a data source — no scraping required.

Markdown

Plain markdown with YAML frontmatter. Suitable for ingestion by LLM tooling, Pandoc pipelines, static-site importers.

URL
https://recap.at/{year}/{slug}.md
Command
curl -H "Accept: text/markdown" https://recap.at/1969/apollo-11.md
Response
---
title: "Apollo 11"
year: 1969
country: "United States"
canonical: "https://recap.at/1969/apollo-11"
---

# Apollo 11

> An eight-day round trip to a place no human had ever stood.

## Summary
...

YAML

Full recap object serialized to YAML 1.2 with block-literal strings preserving paragraph breaks. Hand-rolled stringifier — no external dependency drift.

URL
https://recap.at/{year}/{slug}.yaml
Command
curl -H "Accept: application/yaml" https://recap.at/1969/apollo-11.yaml
Response
slug: apollo-11
canonicalUrl: "https://recap.at/1969/apollo-11"
title: Apollo 11
year: 1969
summaryLong: |-
  Apollo 11 launched from Kennedy Space Center on July 16, 1969...
keyFacts:
  - label: "Launch date"
    value: "1969-07-16"

JSON-LD (Schema.org Article + Event)

Schema.org @graph with Article + Event + Place + GeoCoordinates + Citation nodes cross-referenced by @id. Eligible for Google rich results, AI Overview aggregation, knowledge-graph builders.

URL
https://recap.at/{year}/{slug}.json
Command
curl -H "Accept: application/ld+json" https://recap.at/1969/apollo-11.json
Response
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://recap.at/1969/apollo-11#article",
      "headline": "Apollo 11 (1969)",
      "about": { "@id": "https://recap.at/1969/apollo-11#event" }
    }
  ]
}

RSS feeds

RSS 2.0 across the corpus and per-lobby slices. Each item carries title, link, GUID, pubDate, description, and the country as the category field.

Root feed

RSS 2.0 of the 50 most recently promoted recaps across the entire archive.

URL
https://recap.at/feed.xml
Command
curl https://recap.at/feed.xml
Response
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Recap.at</title>
    <link>https://recap.at/</link>
    <item>...</item>
  </channel>
</rss>

Per-decade feed

Recaps within a single decade (1860s through 2020s).

URL
https://recap.at/{decade}s/feed.xml
Command
curl https://recap.at/1960s/feed.xml
Response
<channel>
  <title>Recap.at — 1960s</title>
  <link>https://recap.at/1960s</link>
</channel>

Per-country feed

Recaps tagged to a specific country.

URL
https://recap.at/country/{slug}/feed.xml
Command
curl https://recap.at/country/united-states/feed.xml
Response
<channel>
  <title>Recap.at — United States</title>
</channel>

Per-category feed

Recaps tagged to one of the 10 closed-set categories (war, election, festival, disaster, tech-launch, sports, award, launch, protest, revolution).

URL
https://recap.at/{category}/feed.xml
Command
curl https://recap.at/war/feed.xml
Response
<channel>
  <title>Recap.at — war</title>
</channel>

Discovery for AI + search

Standard discovery endpoints. AI crawlers should hit llms.txt first; search engines walk the sitemap.

Sitemap

Sitemap index that points at 7 sub-sitemaps (recaps, years, decades, countries, categories, core pages, taxonomy).

URL
https://recap.at/sitemap-index.xml
Command
curl https://recap.at/sitemap-index.xml
Response
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap><loc>https://recap.at/sitemaps/recaps.xml</loc></sitemap>
  <sitemap><loc>https://recap.at/sitemaps/countries.xml</loc></sitemap>
</sitemapindex>

llms.txt

Per the llmstxt.org spec. AI crawlers (Claude, GPT, Gemini, Perplexity) read this for a structured site overview + recap index.

URL
https://recap.at/llms.txt
Command
curl https://recap.at/llms.txt
Response
# Recap.at

> A historical archive of major events, occasions, and cultural moments — reconstructed from structured public sources.

## Featured recaps
- [Apollo 11 (1969)](https://recap.at/1969/apollo-11): The Moon landing.

robots.txt

Allows GPTBot, ClaudeBot, Google-Extended, PerplexityBot, and 11 other named AI crawlers alongside the default *. Admin paths disallowed.

URL
https://recap.at/robots.txt
Command
curl https://recap.at/robots.txt
Response
User-agent: *
Allow: /

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

Sitemap: https://recap.at/sitemap-index.xml

Embed widget

A lightweight iframe-friendly card view. Drop this snippet into a blog post, lesson plan, journalism platform, or knowledge base.

Embed widget

Iframe-friendly minimal recap card. Third-party sites embed via the snippet below. No chrome, no JS, fast, crawlable.

URL
https://recap.at/embed/{year}/{slug}
Command
<iframe src="https://recap.at/embed/1969/apollo-11" width="100%" height="400" frameborder="0" style="border-radius: 8px;"></iframe>
Response
<!-- The embedded card renders: -->
<a href="https://recap.at/1969/apollo-11">
  <img alt="Apollo 11" src="...hero..." />
  <p>1969 · United States</p>
  <h1>Apollo 11</h1>
  <p>An eight-day round trip to a place no human had stood.</p>
  <span>Read on Recap.at →</span>
</a>

Schema.org affordances

Every recap page embeds a Schema.org @graph containing Article, Event, BreadcrumbList, and Citation nodes cross-referenced by @id. Auto-discoverable alternates are advertised through <link rel="alternate"> in the page <head>: markdown, YAML, JSON-LD, RSS. No additional handshake required — viewers and crawlers find everything from one HTML page.