nfrecap is a CLI tool that generates recap reports from Netflix viewing history CSV files.
- Written in Go
- Distributed as a single binary
- Offline-first by default
- External API access is explicitly opt-in
- Reads Netflix viewing history CSV (
Title,Date) - Normalizes titles (movie / TV, work title, season, episode)
- Optionally fetches external metadata and caches it locally
- Builds a normalized intermediate JSON artifact
- Generates a Markdown recap with viewing statistics
# 1. Build normalized data using cache only (no network access)
nfrecap build --in NetflixViewingHistory.csv --out NetflixViewingHistory.json
# 1. Build while fetching metadata from external APIs
TMDB_BEARER_TOKEN=<your token> nfrecap build --in NetflixViewingHistory.csv --out NetflixViewingHistory.json --fetch
# 2. Generate a recap from the built JSON
nfrecap recap --in NetflixViewingHistory.json --year 2025 --out Netflix-2025.mdThis tool expects the CSV file downloaded directly from Netflix.
Example:
Title,Date
"駒田蒸留所へようこそ","6/7/25"- Required columns:
Title,Date - Date format:
M/D/YY(e.g.12/13/25)
Builds a normalized JSON dataset from Netflix viewing history.
nfrecap build --in NetflixViewingHistory.csv --out NetflixViewingHistory.json| Option | Description |
|---|---|
--fetch |
Fetch metadata from external APIs and update the cache |
--cache-dir |
Metadata cache directory (default: OS cache directory) |
--out |
Output JSON file (default: NetflixViewingHistory.json) |
--verbose |
Enable verbose logging |
-
Default (without
--fetch)- No network access
- Uses cached metadata only
- Items missing metadata are marked as unresolved
-
With
--fetch- Fetches metadata from external APIs
- Saves results to the local cache
- Future runs can reuse the cache without
--fetch
Generates a Markdown recap from a previously built JSON file.
nfrecap recap --in NetflixViewingHistory.json --year 2025 --out Netflix-2025.md- Total number of views
- Views by month
- Views by weekday
- Longest viewing streak
- Number of consecutive days with at least one view
- Start and end dates of the streak
{
"generated_at": "2025-12-22T14:39:53+09:00",
"items": [
{
"date": "2025-06-07",
"normalized": {
"raw_title": "駒田蒸留所へようこそ",
"work_title": "駒田蒸留所へようこそ",
"type": "movie"
},
"metadata": {
"provider": "tmdb",
"id": "movie:1119211",
"title": "Komada – A Whisky Family",
"genres": [
"Animation",
"Drama",
"Family"
],
"runtime_min": 91
}
},
]
}- One file per
buildexecution - Used as the input for
recap
- Multi-year recaps
- Support for multiple languages (Currently supports only Japanese)
These features are not part of the current specification and may change.
This nfrecap uses TMDB and the TMDB APIs but is not endorsed, certified, or otherwise approved by TMDB.
MIT