Project
AnimeRecap
Status: Live · animerecap.zzin.dev
What it is
AnimeRecap is a content site that publishes season-level recaps of anime worth talking about. Each recap covers the full story arc of a single season — major plot beats with spoiler-tagged reveals, character development, editorial commentary, and a numeric rating — written to help readers catch up before a new season drops, decide whether a show is worth their time, or revisit a favorite.
The site currently covers over a hundred seasons across shows like Attack on Titan, Bocchi the Rock, Chainsaw Man, Dandadan, Frieren: Beyond Journey's End, and many more. New recaps are added as the pipeline works through a prioritized queue of current and back-catalog shows.
Why it exists
I wanted a place where season recaps were actually readable — not plot-wiki regurgitation, not forum threads, not YouTube essays 40 minutes long when you just want the shape of the story. Most existing recap sites optimize for fan discussion or exhaustive episode-by-episode coverage, which is great for superfans but terrible if you're trying to remember what happened in a season you watched two years ago.
AnimeRecap is season-level because that's the right granularity for most people. Episode-by-episode coverage gets noisy; a season-level recap gives you the shape of the story without the padding.
How it works
The site runs a three-agent content pipeline on GitHub Actions, with Pull Request gates between stages so nothing merges without human review:
- Discovery pulls season metadata from the AniList GraphQL API and the Jikan (MyAnimeList) API. It filters for adult content, deduplicates by franchise, and sorts by editorial priority.
- Research fetches plot summaries, character lists, studio credits, and trailer URLs. It downloads trailer videos and runs FFmpeg scene detection to pull key frames as scroll-linked animation sources.
- Writer uses Anthropic's Claude language model to draft the full recap — TL;DR, per-arc summary, character development, highlights, spoiler-tagged reveals, and a rating. Output is markdown with frontmatter matching the site's content schema.
Every draft opens a Pull Request. A human (me) reviews it — fact-checks plot details, verifies character and studio names, places spoiler tags correctly, and tunes prose for clarity and tone. Only then does it merge and deploy. Nothing ships unreviewed.
Technical choices
The front-end is Astro 5 static site generation with Tailwind for styling and Pagefind for client-side full-text search. Output is a few hundred static HTML pages deployed to Firebase Hosting. No client-side framework, no JavaScript runtime cost on page load beyond a small search bundle.
Scroll-linked scene animations use a custom component that pre-renders extracted JPEG frames and steps through them based on scroll position. A single 1–3 second scene becomes a 5–15 frame sequence that plays as the reader scrolls past the section — motion on demand, not autoplay.
Deploy is via GitHub Actions and Firebase Hosting, authenticated with Workload
Identity Federation (no long-lived keys). Every push to main runs a
pre-deploy validation step that cross-checks AniList IDs, so a poisoned research
output can't slip into production silently.
Editorial standards
Because the first drafts are AI-generated, the editorial process is the product. Recaps are disclosed as AI-assisted and human-edited on every site page, in structured metadata, and on the dedicated Editorial Standards page. Every recap carries a byline (Edited by Hong-Bin Yoon) and a "Suggest an edit" link that opens a pre-filled email to the editorial inbox.
Factual corrections are addressed within one business day when possible. "Last reviewed" dates on posts reflect when the content was actually re-examined by a human.
Links