Decision. Treat tracking as a 3-layer pipeline, not a single app. Books: Hardcover (GraphQL API [9]) for the catalog, Readwise [15] for highlights → Obsidian Book Search plugin [2] ⭐ 685 for note creation. Film/TV: Simkl (auto-scrobble, unlimited free [4]) as the hub, CrossWatch [7] ⭐ 568 to bridge Plex/Jellyfin → trackers, Letterboxd RSS sync [8] ⭐ 18 to mirror your film diary into the vault. All-in-one shortcut: if you’d rather skip external services, use the Media DB plugin [1] ⭐ 448 — one Obsidian plugin, one search command, ten APIs.
The three layers
| Layer | Job | Don’t conflate with |
|---|---|---|
| Hub | Source of truth for “what I’ve consumed/want to consume” | Your Obsidian vault — vault is a mirror, not the master |
| Capture | Auto-detects activity (scrobble, highlight, finish) and pushes to the hub | Manual logging — if you have to type it, automation has failed |
| Obsidian | Renders metadata + your prose notes for search, linking, and Dataview dashboards [27] | The hub — Obsidian is bad at lists of 1000+ books/films |
Picking these in the wrong order is the most common failure mode: people build a beautiful Obsidian Dataview dashboard, then realise nothing flows in automatically.
Layer 1 — Tracking hubs
Books
| Hub | Free tier | API | Goodreads import | Best for |
|---|---|---|---|---|
| Hardcover | Free, ad-free [14] | ✓ Free GraphQL [9] [10] | ✓ Strong [26] | Building your own pipeline; “Letterboxd for books” community |
| StoryGraph | Free | ✗ No public API in 2026 [11]; CSV export only [12]; unofficial scraper [13] | ✓ | Mood-based recs, deep stats — but a dead-end for automation |
| Goodreads | Free | ⚠ API closed for new keys since 2020 | n/a | Skip in 2026 [26] |
| Readwise (highlights, not catalog) | $9.99/mo Full plan [17] | ✓ Official | n/a | Kindle/Apple Books/PDF highlights → Obsidian [15] |
→ The 2026 split: if you want programmatic sync, Hardcover [10] is the only free hub with a real API. StoryGraph is a better reader but a worse source — its solo developer has explicitly said API is not a priority [11].
Film & TV
| Hub | Free limits | Auto-scrobble | API | 2026 catch |
|---|---|---|---|---|
| Simkl | Unlimited watchlist [4] | ✓ Browser ext + Plex/Jellyfin [24] | ✓ Free REST | Best anime support via AniDB [4] |
| Trakt | ⚠ 100 watchlist+collection items [4] | Plex webhook is VIP-only [23] | ✓ Stable, biggest 3rd-party ecosystem | 2026 cap turned a lot of free users into Simkl users [4] |
| Letterboxd | Free | ✗ Manual logging | ✗ No public API; RSS only [8] | Best film community + reviews [5] |
| Serializd | Free | ✗ Manual | ✗ | “Letterboxd for TV” [5] [30] |
| TV Time | Free | ✗ Manual | ✗ Closed | Social/discovery; vendor-locked [5] |
→ Pick Simkl as the automation backbone. Trakt’s free 100-item cap [4] is the headline 2026 change — if you’ve got a multi-year history, that’s an instant disqualification. Keep Letterboxd alongside it for film opinions (reviews, lists), since Simkl’s social side is thin [5].
Layer 2 — Auto-capture pipelines
This is the layer most people skip and then complain that “tracking is too much work.”
| Source | Sink | Tool | Notes |
|---|---|---|---|
| Plex / Jellyfin / Emby | Simkl + Trakt + AniList | CrossWatch [6] [7] ⭐ 568 | Self-hosted Docker (ghcr.io/cenodude/crosswatch:latest); v0.9.18 (Apr 2026); deprecated webhooks → “Watcher” sync engine |
| Jellyfin | Simkl | Simkl Jellyfin add-on [24] | Native; pings API at e.g. 70% watched |
| Plex | Trakt | Trakt’s own Plex webhook [23] | Requires Trakt VIP + Plex Pass |
| Plex | Trakt (legacy) | gazpachoking/trex [29] ⭐ 14 | ⚠ Unmaintained since Jan 2019 — avoid |
| Netflix / Hulu / Crunchyroll (browser) | Simkl | Simkl browser extension [4] | More reliable than Trakt’s Universal Scrobbler equivalent |
| Mobile (iOS/Android) | Trakt and Simkl | wako [25] | Only mobile app supporting dual sync |
| Kindle / Apple Books / Pocket | Readwise → Obsidian | Readwise plugin [15] [16] ⭐ 335 | Auto-sync on app open or 1/12/24h schedule |
→ The 2026 standard for self-hosters: CrossWatch [6]. Its Watcher feature replaced webhook scripts (the project explicitly deprecated the old setup [7]) — one Docker container runs Plex/Jellyfin/Emby ↔ Simkl/Trakt/AniList/MDBList in any combination.
Layer 3 — Pulling into Obsidian
| Plugin | What it does | API surface | Activity |
|---|---|---|---|
| Media DB [1] ⭐ 448 | Single search command across movies/series/anime/manga/books/comics/games/music/wiki | TMDB, OMDb, Open Library, Jikan, MusicBrainz, Steam, VNDB, Wikipedia + more [18] | Active (Apr 2026 push) |
| Book Search [2] ⭐ 685 | Books-only, Templater-friendly, downloads covers locally [3] | Google Books + Naver | Last release Oct 2024 — slowing |
| Letterboxd RSS Sync [8] ⭐ 18 | Mirrors last 50 diary entries into one Letterboxd Diary.md |
Letterboxd public RSS | Active (Nov 2025) |
| Obsidian-TV-Tracker [19] ⭐ 27 | Grid view of films/shows backed by YAML markdown files | TMDB | Active |
| Calibre plugin [22] ⭐ 190 | Browse a Calibre Content Server inside Obsidian | Calibre OPDS | ⚠ Unpushed since Sep 2023 |
| Readwise official [16] ⭐ 335 | Highlights + book metadata from Kindle/Apple Books/etc. | Readwise | Active (Apr 2026) |
| QuickAdd [20] ⭐ 2.2k | Macro engine — chain Book Search/Media DB/user scripts behind one hotkey [21] | n/a | Active |
Choosing between Media DB and Book Search. Media DB [1] wins on coverage (10 APIs, one workflow [18]) and recency. Book Search [2] wins on book-specific polish (cover-image download, mature template variables [3]). If you’re books-only, Book Search; if you want everything-in-one, Media DB.
The render layer (independent of plugin choice). All of the above write YAML frontmatter. Layer Dataview + Templater + QuickAdd over them [27] [20] and your vault becomes a queryable dashboard. christt105/media-tracker-obsidian-template [28] ⭐ 1 is a working starter vault wiring Movie Search + Templater + QuickAdd together — useful as a reference even if you don’t fork it.
Anti-patterns to avoid in 2026
- Treating Goodreads as a hub. Their API has been closed to new keys since 2020 and 2026 reading-app reviews unanimously recommend leaving [26].
- Picking Trakt for a fresh free account. The 100-item watchlist+collection cap [4] breaks a multi-year backlog on day one. Existing Trakt users with paid VIP are fine; new free users should default to Simkl.
- Manual logging of films you watched on Plex/Jellyfin. CrossWatch [6] takes ~30 minutes to set up and never asks you to type a film title again.
- Storing the master list in Obsidian. Obsidian is excellent for note-taking, mediocre for “give me my last 200 watched films sorted by rating across 5 services” — let the hub do that and let Obsidian mirror.
- Relying on unmaintained scrobblers. trex’s last commit was Jan 2019 [29]; Trakt VIP webhook or CrossWatch Watcher [7] are the live paths.
- Building over the StoryGraph “API.” There isn’t one [11]; the unofficial scraper [13] can break with any UI change.
Three concrete 2026 stacks
Minimalist (Obsidian-only, no external services). Media DB plugin [1] ⭐ 448 + QuickAdd [20] ⭐ 2.2k macro per medium + Dataview dashboards [27]. One free TMDB key + one free OMDb key [18]. No subscription, no auto-scrobble.
Hybrid (recommended for most).
- Books: Hardcover hub [9] + Readwise highlights [15] → Book Search plugin [2] for vault notes + a custom GraphQL puller from Hardcover for completed-list mirror.
- Film/TV: Simkl hub [4] + Simkl browser extension + Letterboxd for film opinions → Letterboxd RSS Sync plugin [8] for diary mirror; Media DB plugin for per-title metadata notes.
- Cost: $9.99/mo Readwise [17]; rest free.
Power-user (self-hosted media server).
- Plex/Jellyfin running locally + CrossWatch Docker [6] [7] ⭐ 568 syncing to Simkl + Trakt + AniList simultaneously.
- wako [25] on mobile for off-server scrobbles, Hardcover for books, Readwise for highlights.
- Obsidian: Media DB + Letterboxd RSS Sync + Obsidian-TV-Tracker [19] for the in-vault grid view.