how it works fields models install $ github ↗
recap Point it at any URL, PDF, video, or local file.
Define the fields you want. Get clean, structured data out.
CLI HTTP API Web UI Go 1.25+ MIT License
recap — zsh — 120×36
~/research via go 1.25
how it works
[PDF]
$ recap run
  "paper.pdf"
  --template research-paper
{
  "title": "Attention Is All You Need",
  "authors": ["Vaswani et al."],
  "methodology": "transformer...",
  "key_findings": [...]
}
[VIDEO]
$ recap run
  "youtube.com/watch?v=..."
  --template youtube-video
  --format markdown
## The Intelligence Explosion
**channel:** Lex Fridman
**duration:** 187 min
**takeaways:** [3 items]
[LOCAL]
$ recap run
  ~/docs/meeting-notes.md
  --fields
    "action_items:list,
     owner:text,due:date"
{
  "action_items": [3],
  "owner": "humza",
  "due": "2025-04-01"
}
field syntax
--fields → hover each token to learn the type
title # defaults to type: text , author:text # plain string value , published:date # ISO 8601 formatted date , tags:list # returns an array of strings , rating:number # numeric value , is_opinion:boolean # true or false , summary:paragraph # longer freeform text block , sentiment:enum[positive,negative,neutral] # constrained to specific values
text plain string
list array of strings
number numeric
boolean true / false
date ISO 8601
paragraph long text
enum[...] constrained values
three interfaces · one output
CLI for scripting & automation
# pipe it, schedule it, automate it
$ recap run "$URL" \
  --template news-article \
  --format json \
  --output out.json
# pipe to jq
$ recap run "$URL" | jq '.tags'
HTTP API for integrations
# start the server, hit the endpoint
$ recap serve
→ listening on :8080

$ curl -X POST \
  localhost:8080/api/v1/extract
  -d '{"url":"...",
    "fields":[...]}'
Web UI for visual workflows
# the same thing, in a browser
$ make dev
→ go server on :8080
→ next.js ui on :3000

open http://localhost:3000
visual field builder · history · templates
# identical output. your choice of interface.
supported content types
WEB
PDF
LOCAL
VIDEO
supported models
$ recap config models configure once · use forever
PROVIDER MODEL ID
── Anthropic ──────────────────────────
Anthropic Claude Sonnet 4 default claude-sonnet-4-20250514
Claude Opus 4 claude-opus-4-20250514
Claude Haiku 4 claude-haiku-4-20250514
── OpenAI ──────────────────────────────
OpenAI GPT-4o gpt-4o
O3 o3
O4 Mini o4-mini
── Google ──────────────────────────────
Google Gemini 2.5 Pro gemini-2.5-pro
Gemini 2.5 Flash gemini-2.5-flash
get started
clone & build
$ git clone https://github.com/humzakhan/recap.git
$ cd recap && make build
# binary at ./bin/recap
configure your api key
# pick at least one provider
$ recap config set api_keys.anthropic sk-ant-... # anthropic
$ recap config set api_keys.openai sk-... # openai
$ recap config set api_keys.google AIza... # google
run your first extraction
$ ./bin/recap run "https://example.com/article" \
    --fields "title,author,summary:paragraph,tags:list"