# Film + Anime-Manga Tracker Add films, TV series, anime, manga, music, games and books to your Obsidian vault as notes with metadata and a poster. Search for a film, pick it from the list, and Film + Anime-Manga Tracker creates a note containing exactly two things: a frontmatter block with the film's metadata, and the poster. Nothing else. No rating, no review section, no template. What you write in the note is up to you. TV series work the same way, also from TMDB: one note per show, with its seasons kept in the note itself and a SEASONS panel to tick them off as you watch. See [TV series](#tv-series). Albums, artists and songs work the same way too, from MusicBrainz, with no key to set up. See [Music](#music). Games come from IGDB, with where you are with each one — in your backlog, playing, completed — kept in the note. See [Games](#games). Books and their authors come from Open Library, with no key either, and with where you are with each book kept in its note. See [Books](#books). Everything you finish, whatever it is, comes together in a diary: a book of the year, with a page for each month, that you turn like a real one. See [Diary](#diary). And everything you track, finished or not, stands together in a library: a shelf of covers to browse, filter and search. See [Library](#library). Anime and manga follow the same philosophy, sourced from MyAnimeList. The two even share a single note when they're the same series: search for either half and Film + Anime-Manga Tracker creates or merges into one **Series note**, with a separate panel below the properties for the manga side. See [Anime and manga](#anime-and-manga) for details. ## Design philosophy This plugin is not meant to turn your vault into a Wikipedia. It's a personal tracker, not a database. It automates the parts that are just busywork — metadata, posters, connecting a film to its director or a manga to its author — so you don't have to type them in by hand or go hunting for a poster image every time. It has no interest in being a complete encyclopedia of everything you've ever watched or read. The goal is narrower than that: keep a record of what you've seen, link the people and works behind it, and leave the rest of the note empty. Metadata is scaffolding, not content — it's there to support your own thoughts, not replace them. The note's body is where those actually live, and the plugin never touches it. ## Installing Film + Anime-Manga Tracker is available in the Obsidian Community Plugins. 1. Open **Settings → Community plugins**. 2. Click **Browse** and search for **Film + Anime-Manga Tracker**. 3. Click **Install**. 4. Enable **Film + Anime-Manga Tracker** under Community plugins. ### Updating Obsidian will notify you when a new version is available. ## Setup 1. Create a free TMDB account and open [your API settings](https://www.themoviedb.org/settings/api). 2. Copy the **API Key (v3 auth)** value — the short one, not the long read access token. 3. Paste it into **Settings → Film + Anime-Manga Tracker → TMDB API key**. Every user needs their own key — it's free and takes a minute. For anime and manga, register a free app in your [MyAnimeList API config](https://myanimelist.net/apiconfig) and paste its **Client ID** into **Settings → Film + Anime-Manga Tracker → MyAnimeList client ID**. No OAuth, no redirect URI to configure — search and metadata only need the client ID. For games, register a free app in the [Twitch developer console](https://dev.twitch.tv/console/apps) — IGDB is run by Twitch — and paste its **Client ID** and **Client Secret** into **IGDB client ID** and **IGDB client secret**. See [Games](#games) for the steps. Music and books need no key. On Obsidian 1.11.4 or later, the keys go into Obsidian's keychain instead of the plugin's settings file: next to **TMDB API key** and **MyAnimeList client ID**, add a new secret and paste the value into it, or pick one you already have. The keychain keeps them out of the vault — and out of anything that syncs or backs it up — but it's kept per device, so on a second device you add them there once too. Keys typed into an earlier version move to the keychain on their own the first time the plugin loads. On older versions of Obsidian, the keys are typed in and saved with the other settings, as before. ## Tips for a smooth start A handful of mistakes account for most of the confusion new users hit: - **Everyone needs their own TMDB API key.** It isn't bundled with the plugin and can't be shared — each person pastes their own free key into settings (see [Setup](#setup)). Without it, the TMDB commands (Add film, Add director, Refresh metadata from TMDB, Import from Letterboxd) don't run — each shows a notice pointing you to settings instead. - **Set `watch_date` to a Date property once.** Fresh out of the box it's plain text, so sorting by date won't work until you do the one-time [type change](#make-watch_date-a-date-property) on any note. Obsidian remembers it vault-wide after that. - **Folders only decide where new notes go.** Film + Anime-Manga Tracker recognizes a note by its properties, not by its folder, so moving notes around, changing a folder setting later, or leaving a folder empty (the vault root) is safe — duplicates are still caught, and a director is never mistaken for a film. - **Turning on Add cast / Add composers later doesn't back-fill old notes.** Those settings only apply going forward. Run **Refresh metadata from TMDB** on a note to pull in fields you enabled after creating it. - **Never delete or hand-edit `tmdb_id`.** It's the only thing Film + Anime-Manga Tracker uses to recognize "this note already exists" and to know what to refresh — renaming the file itself is safe, but losing `tmdb_id` isn't. - **Picking from search:** when a title has several versions (remakes, franchises), check the year shown next to each result before choosing — titles alone are often ambiguous. - **Letterboxd import runs once per file.** Films already in your vault (matched by `tmdb_id`) are skipped rather than duplicated, so re-running the same export after adding more notes by hand is safe — it only fills gaps: a missing `watch_date`, and `watched` if you choose to mark the films as watched. - **A blank poster/photo isn't necessarily a bug.** Some TMDB entries genuinely have no image; the note is still created with full metadata either way. - **Anime and manga only merge into one note when you open the right note first.** There's no automatic matching — if you want a Series note with both, add one half, keep that note open in the editor, run the other **Add** command and confirm **Link to this note** (see [Anime and manga](#anime-and-manga)). - **Never delete or hand-edit `mal_id`, or the `manga` block's `mal_id`.** Same rule as `tmdb_id`: they're what Film + Anime-Manga Tracker uses to recognize a note and know what to refresh. The same goes for a game's `igdb_id`, a book's or an author's `openlibrary_id`, and the MusicBrainz ids of music notes. - **Imports are safe to run again.** The Letterboxd, MyAnimeList and Goodreads imports recognize what is already in your vault by its id, wherever the note lives, and never write it twice: a second run only fills in what is still empty. - **Games need IGDB's client ID and secret**, from a free Twitch app — a few minutes, once (see [Setting up IGDB](#setting-up-igdb)). Without them **Add game** points you to settings. ## Usage Run **Add film** from the command palette, or click the film icon in the ribbon and pick **Add film**. Type at least two characters, pick the right film, and the note is created and opened. Search works in any language: typing `Amelie`, `Amélie`, or `Le Fabuleux Destin d'Amélie Poulain` all find the same film. TV series work the same way: run **Add TV series**, search, and pick the show. The note holds the whole series — every season that has aired, with its own episode count — so there is nothing to pick twice and nothing to keep in step by hand. See [TV series](#tv-series). Directors work the same way: run **Add director**, or click the ribbon icon and pick **Add director**. The note gets the director's name, birthday, place of birth and a photo — nothing else, same philosophy as a film note. Anime and manga work the same way too: run **Add anime** or **Add manga**, search MyAnimeList, pick a result. Each result shows its type and year next to the title (TV, Movie, Manga, Light novel…), since MyAnimeList often has several entries sharing one title. See [Anime and manga](#anime-and-manga) for how the two combine into one Series note. Music works the same way, with no key: run **Add album** or **Add artist**, search MusicBrainz, and pick. See [Music](#music). Games work the same way too: run **Add game**, search IGDB and pick. A remake, a remaster or a port says what it is beside the year. See [Games](#games). Books work the same way, with no key: run **Add book** or **Add author**, search Open Library and pick. See [Books](#books). To look back over your year, click the ribbon icon and pick **Open diary**, or run **Open diary**. See [Diary](#diary). To see everything at once, click the ribbon icon and pick **Open the library**, or run **Open the library**. See [Library](#library). Mangaka work a little differently: open the manga or Series note whose author you want to add, then run **Add mangaka** — it reads that note's own manga metadata to find the author on MyAnimeList directly, rather than opening a search box. One credited author adds straight away; more than one shows a quick pick list. See [Anime and manga](#anime-and-manga) for the MANGAGRAPHY panel it unlocks. ### Commands | Command | What it does | | --- | --- | | **Add film** | Search TMDB and create the note. | | **Add TV series** | Search TMDB and create the note, with a line for each season that has aired. See [TV series](#tv-series). | | **Add director** | Search TMDB for a person and create a director note: name, birthday, place of birth and a photo. | | **Add album** | Search MusicBrainz and create the album's note, with its tracks and cover. The first row of the search browses an artist's own albums instead. See [Music](#music). | | **Add game** | Search IGDB and create the game's note, with its cover. Needs the IGDB client ID and secret. See [Games](#games). | | **Start playing** / **Mark as completed today** | Set the game you have open playing, or complete it: the date the first time, one more in `completed_count` every time. Only appear on game notes; also on the note's right-click menu, and the second as a button under the cover. | | **Refresh metadata from IGDB** | Re-fetch the game and rewrite only what IGDB knows. Only appears on game notes. | | **Add book** | Search Open Library and create the book's note, with its cover. See [Books](#books). | | **Add author** | Search Open Library and create the author's note, with a credited photo. Creates none of their books. | | **Start reading** / **Mark book as finished today** | Set the book you have open as being read, or finish it: the date the first time, one more in `read_count` every time. Only appear on book notes; also buttons under the cover and on the note's right-click menu. | | **Refresh book metadata from Open Library** | Re-fetch the book or author and rewrite only what Open Library and Wikidata know. Only appears on book and author notes. | | **Choose edition** | Pick the edition you own of the book you have open — from Open Library's list, or by its ISBN — for its publisher, year, ISBN, translators, page count and cover. Only appears on book notes; also a button under the cover and on the note's right-click menu. See [Your edition](#your-edition). | | **Add artist** | Search MusicBrainz and create the artist's note, with a credited photo. Creates none of their albums. | | **Move album into its folder** | Moves the album note you have open — one from before album folder notes — into a folder of its own name, beside the songs added from it. Every link to it follows. Only appears on an album note that isn't in its own folder yet. | | **Find soundtrack** | Lists the albums that may be the soundtrack of the film, TV series, anime or game you have open — Wikidata's first, then MusicBrainz's soundtracks under each of its titles — and links the one you pick. Only appears on film, TV, anime and game notes. Also a **Find soundtrack…** button on the SOUNDTRACK panel, and an entry on the note's right-click menu. See [Soundtracks](#soundtracks). | | **Link album to a film, series or game** | Links the album you have open to one of the films, TV series, anime and games in your vault, as its soundtrack. Only appears on album notes. Also **Link to a film, series or game** on the note's right-click menu. | | **Add song from this album** | Pick one of the tracks of the album you have open and create that song's note. Only appears on album notes, and only lists tracks without a note yet. Also a **+** beside each track on the TRACKLIST panel, and **Add song** on the note's right-click menu. | | **Change artist photo** | Shows every photo on offer for the artist you have open — Deezer's, and those Wikimedia Commons files under the artist — side by side, with a picture from your vault or from a web address as two more ways. The one you pick becomes the note's. The old photo is only deleted if you say so, and only offered when no other note uses it. Only appears on artist notes. Also a **Change photo** button under the photo, and an entry on the note's right-click menu. | | **Add anime** | Search MyAnimeList and create a Series note — or, after asking, link into the manga-only note open in the editor. | | **Add manga** | Search MyAnimeList and create a Series note — or, after asking, link into the note open in the editor, whether that is an anime note with no manga or a TV series note. | | **Add mangaka** | Reads the active manga/Series note's credited author(s) from MyAnimeList and creates (or updates) their note. Requires a manga or Series note to be open — see [Anime and manga](#anime-and-manga). | | **Refresh metadata from TMDB** | Re-fetch the film, TV series or director and rewrite only the fields the plugin owns. On a TV series it brings in seasons that have started since, and new episodes of the season you are on, without touching what you have watched. Your `watch_date`, your body text, any property you added, any alias you added, any link already in a list (a director, a genre) and any comment above the first property are left exactly as they were. Only appears on film or director notes. | | **Refresh anime/manga metadata from MAL** | On a TV series note, refreshes its manga side. Otherwise re-fetches whichever side(s) the note has and rewrites only the fields the plugin owns. `watched`, `read`, your body text, any property you added, any link already in a list (a genre, a studio, a mangaka) and any comment above the first property are left exactly as they were. On a mangaka note, refreshes their name, birthday and photo instead. Only appears on anime, manga or mangaka notes. | | **Refresh music metadata from MusicBrainz** | Re-fetch the album, artist or song and rewrite only the fields the plugin owns. `listened`, `listen_date`, `listen_count`, the cover or photo already there, a key you added to a track, your own properties and the body stay as they are. Only appears on album, artist and song notes. | | **Mark as listened today** | Ticks `listened` on the album you have open, writes today into `listen_date` the first time, and counts one more in `listen_count` every time. Only appears on album notes. Also a **Listened today** button under the cover, and an entry on the note's right-click menu. | | **Mark as watched today** | Ticks `watched` on the film, TV or anime note you have open and writes today into `watch_date`. A date already there is kept — the day you first saw it. On a TV series it also fills in every season that has aired. Only appears on film, TV and anime notes. Also a **Watched today** button under the poster, and an entry on the note's right-click menu. | | **Mark manga as read today** | The manga side of the same thing: `read`, `read_date` and the full chapter count, on every note carrying that manga. Only appears on notes with a manga side. | | **Watch one more episode** | `episodes_watched` up by one. On a TV series it counts into the earliest season with something left, and the SEASONS panel has a **+1** for each season on its own. The last episode also ticks `watched` and dates it — on a TV series only once the show has ended. Only appears on TV and anime notes. Also a **+1 episode** button under the poster. | | **Read one more chapter** | `chapters_read` up by one, on every note carrying that manga. The last chapter also ticks `read`. Only appears on notes with a manga side. Also a **+1 chapter** button on the MANGA panel. | | **Remove anime** | Takes the anime off a Series note: its own properties and nothing else. The manga side, every property you added and the whole body stay as they are, and a poster no other note uses can be deleted along with it. Only appears on notes with an anime. Also on the note's right-click menu. | | **Relink directors and genres** | Turn plain names into `[[wikilinks]]` wherever a note by that name now exists, on film and TV series notes — a show's creators follow the **Link directors** setting. No network calls, so it runs in a second. | | **Import from Letterboxd** | Bulk-create notes from a Letterboxd export. See below. | | **Import from MyAnimeList** | Bulk-create notes from a public MyAnimeList list, marking what you have completed. See below. | | **Import from Goodreads** | Bulk-create book notes from a Goodreads library export, with your shelves, read dates and editions. See below. | | **Open diary** | Opens the diary in a tab of its own: everything you finished this year, month by month. Also the first entry of the ribbon icon's menu. See [Diary](#diary). | | **Open the library** | Opens the library in a tab of its own: every film, series, anime, manga, book, game and album in your vault as a shelf of covers. Also in the ribbon icon's menu, under **Open diary**. See [Library](#library). | ## Importing from Letterboxd 1. On Letterboxd, go to **Settings → Import & Export → Export your data**, and unzip the download. 2. Drag `diary.csv` into your vault (or `watched.csv` if you only want the list of films without watch dates). 3. Run **Import from Letterboxd** from the command palette, or use the button in settings, and pick that file. 4. Choose whether to **mark these films as watched**. It starts on for `diary.csv`, `watched.csv`, `ratings.csv` and `reviews.csv`, which only list films you've seen, and off for anything else — `watchlist.csv` has exactly the same columns as `watched.csv`, so its name is the only way to tell them apart. 5. Film + Anime-Manga Tracker searches TMDB for each entry and creates a note for anything not already in your vault — the same note, with the same two things, as adding a film by hand. From `diary.csv`, the **Watched Date** column fills in `watch_date` on notes it creates. Nothing else from the export is imported: **Rating**, **Tags** and **Rewatch** are your own commentary, not the plugin's, so they are never read. A film already in your vault (matched by `tmdb_id`) is skipped rather than duplicated; if it has no `watch_date` yet, the import fills that in from the diary entry, and with **mark these films as watched** on it ticks `watched` (it never unticks it). Letterboxd and TMDB sometimes put a film a year apart, so a result within a year of the export's year still counts. When a title in the CSV has no TMDB match that close, it is left out rather than guessed and listed, with the reason, in a **Film + Anime-Manga Tracker Import Report** note created at the end. Closing the progress window, with Esc or its close button, stops the import the same way **Cancel** does; what was imported by then stays. Only one import runs at a time: starting a second while one is running just tells you so. ## Importing from MyAnimeList 1. Run **Import from MyAnimeList**, or use the button in settings. 2. Type the MyAnimeList username whose list to read — your own, usually. 3. Choose the anime list, the manga list, or both, and which shelves to take: **Completed** and **Watching or reading** to start with, and **On hold**, **Dropped** and **Plan to watch or read** if you want them too. 4. Film + Anime-Manga Tracker reads the list a hundred entries at a time and writes a note for each one, with its poster. What you have **completed** arrives ticked: an anime as `watched`, a manga as `read` — and `read` is set on every note carrying that manga, the way the Read checkbox does. Anything already in your vault is recognized by its MyAnimeList id, wherever its note lives, and is never written a second time; a completed entry whose note isn't ticked yet gets ticked, and nothing is ever unticked. Nothing is matched by title, so there is no guessing. What can still go wrong is a name: when a note of your own already has the name an entry would take, that entry is left out and listed in the **Film + Anime-Manga Tracker Import Report** note written at the end. Closing the progress window stops the import, the same as **Cancel**, and only one import runs at a time. The list has to be public. That's a MyAnimeList setting (**Account settings → My List → List visibility**), not something the plugin can change: MyAnimeList only shares a private list with the account that owns it, which would need signing in. ## Importing from Goodreads Goodreads exports your library only from its website on a computer, not from its app. 1. On [goodreads.com](https://www.goodreads.com), open **My Books**. In the left column, under **Tools**, click **Import and export**. 2. Click **Export Library**. Goodreads prepares the file — refresh the page after a minute if no link appears — then click **Your export from …** to download `goodreads_library_export.csv`. It is a plain CSV file, not a zip. 3. Drag `goodreads_library_export.csv` into your vault. Any folder works, the vault root included. Obsidian's file explorer doesn't list `.csv` files unless **Settings → Files and links → Detect all file extensions** is on, but the import finds the file either way. Don't open and save it in a spreadsheet first: a spreadsheet rewrites the ISBNs. 4. Run **Import from Goodreads** from the command palette, or click **Import…** on the **📚 Books** settings page, and pick that file. 5. The window shows how many books are on each shelf. Pick the shelves to import — **Read**, **Currently reading**, **Want to read** and **Your own exclusive shelves** — and click **Import**. Each book is looked up on Open Library by its title and author, and gets the same note **Add book** writes, with these filled in from Goodreads: | Goodreads | Note | | --- | --- | | Read | `read_status: read`, `finished` from **Date Read**, and `read_count` from **Read Count** (at least 1) | | Currently reading | `read_status: reading` | | Want to read | `read_status: to read` | | A shelf of your own for books you gave up on — `dnf`, `did-not-finish`, `abandoned` and the like | `read_status: dropped`, even beside **Read**, the way many people shelve a book they stopped | | Any other exclusive shelf of your own, `owned` say | `read` when Goodreads has a read date or count for it, else `to read` | | Your own shelves | `shelves`, every one of them, and the folder the note goes in | | ISBN | the note's [edition](#your-edition) | `started` stays empty: Goodreads' export has no start date. Your rating, review and private notes are never read — they are your own words, not the plugin's to copy. **Folders.** A book on a shelf of your own goes in a folder named after its first shelf, inside the book folder: `Books/favorites/`, `Books/did-not-finish/`. A book on none of your own shelves goes in the book folder itself. A book on several of your shelves goes in the first one's folder, and `shelves` lists them all — search `[shelves:classics]` in Obsidian to see every book on a shelf, whatever its folder. ```yaml read_status: read started: finished: 2024-03-02 read_count: 2 shelves: - favorites - american ``` **Books already in your vault** are recognized by their `openlibrary_id`, wherever they live, and are never moved or written twice. They are only filled in where they are empty: the status moves on from `to read` but never back, the read date and the shelves are written where there are none, the read count where it is 0, and the edition where you haven't chosen one — the page count and the cover they have stay. Running the same export again changes nothing. **What can't be found.** A book Open Library has no match for, by its title and author or by its ISBN, is left out and listed, with the reason, in a **Film + Anime-Manga Tracker Import Report** note written at the end. **Translations.** Open Library keeps many translations as records of their own. A book you shelved under its translated title — *Suç ve Ceza* rather than *Crime and Punishment* — may arrive as that translation's record, with few editions and sometimes the translation's year, rather than the book itself. To move such a note to the book's own record, find the book on [openlibrary.org](https://openlibrary.org), copy the `OL…W` from its address — `openlibrary.org/works/OL166894W/…` — into the note's `openlibrary_id`, and run **Refresh book metadata from Open Library**. Open Library answers one request a second, and a book takes about three, so a library of 300 books takes about 15 minutes. The window shows how far along it is. Closing it stops the import, the same as **Cancel**; what was imported by then stays. Once the import is done, you can delete the CSV file from your vault. ## What gets written ```yaml --- title: Amélie original_title: Le Fabuleux Destin d'Amélie Poulain aliases: - Amélie - Le Fabuleux Destin d'Amélie Poulain year: 2001 directors: - Jean-Pierre Jeunet genres: - Comedy - Romance runtime: 122 poster: "[[Attachments/Amélie (2001).jpg]]" tmdb_id: 194 watch_date: watched: false --- ``` `cast` and `composers` are optional and off by default — turn them on in settings to have them written too. That is the whole file. The body is left empty: the poster is rendered from the `poster` property, beside the properties, so everything below the top of the note is yours. - `title` is the English title. When TMDB has no English translation for a film, it falls back to the original title. - `original_title` is always the title in the film's own language. - `aliases` holds the title and the original title, so either one finds the note in search and link suggestions. Add your own aliases freely: a refresh only replaces the ones it wrote. - `watch_date` is left empty on purpose. Film + Anime-Manga Tracker never fills it in — it is yours to complete when you have seen the film. - `watched` is a plain checkbox, separate from `watch_date`, for exactly the "I know I've seen it but don't remember when" case. Film + Anime-Manga Tracker never touches it after creation — tick or untick freely, it's yours. The one exception is the [Letterboxd import](#importing-from-letterboxd), which can tick it (never untick it) for films your export says you've seen. ### Director notes ```yaml --- name: Andrei Tarkovsky original_name: Андрей Арсеньевич Тарковский aliases: - Andrei Tarkovsky - Андрей Арсеньевич Тарковский birthday: 1932-04-04 deathday: 1986-12-29 place_of_birth: Zavrazhye, USSR poster: "[[Directors/Andrei Tarkovsky.jpg]]" tmdb_id: 8452 --- ``` Same philosophy as a film note: structured data and a photo, nothing else. The photo is written to the `poster` property on purpose — Film + Anime-Manga Tracker's layout renders any note carrying `tmdb_id` and `poster` beside its properties, so a director note gets the exact same two-column layout as a film note for free. `original_name` is a best-effort guess: TMDB doesn't tag alternate names by language, so Film + Anime-Manga Tracker infers the director's native writing system from `place_of_birth` (Russia → Cyrillic, Japan → Japanese, China → Chinese, and similarly for Korean, Arabic, Hebrew, Greek and Thai) and picks the first alternate name written in it. `aliases` then holds just `name` and `original_name` — not TMDB's full, noisy list of transliterations — plus any alias you add yourself, which a refresh keeps. For a director from a Latin-script country (France, Poland, Germany, …), or when nothing matches, `original_name` is left empty for you to fill in by hand, the same way `watch_date` is. ### Anime notes ```yaml --- title: Hunter x Hunter english_title: Hunter x Hunter japanese_title: ハンター×ハンター media_type: tv episodes: 148 episodes_watched: 148 genres: - Action - Adventure studios: - Madhouse status: finished_airing year: 2011 end_year: 2014 poster: "[[Attachments/Hunter x Hunter.jpg]]" mal_id: 11061 watch_start: watch_date: 2026-04-02 watched: true --- ``` Same philosophy as a film note: structured metadata and a poster, nothing else. `watched` is a plain checkbox Film + Anime-Manga Tracker sets once and never touches again — same role as a film's `watched`. `episodes_watched` and `watch_date` are yours: **Watch one more episode** counts up, **Mark as watched today** fills both in, and a refresh from MyAnimeList never touches either. `watch_start` — the day you started — is yours alone: the plugin makes room for it and never writes it, since only you know when you began. The poster carries a small bar showing how far through the episodes you are, with **+1 episode** and **Watched today** under it; both disappear once there is nothing left to mark. All four commands are on the note's own menus too — right-click in the editor, the tab's menu, or the file explorer. `year` and `end_year` are the years it started and finished, as MyAnimeList has them. Something still running has no `end_year`, and neither has anything MyAnimeList never gave an end date. Both are years rather than full dates: MyAnimeList often knows only the year for older works. When the same note also has a manga side, its metadata lives in a single nested `manga` property instead of being mixed into the fields above — see [Anime and manga](#anime-and-manga) for why, and for the panel that actually shows it. ### Mangaka notes ```yaml --- name: Yoshihiro Togashi birthday: 1966-04-27 poster: "[[Mangaka/Yoshihiro Togashi.jpg]]" mal_id: 1893 --- ``` Same philosophy as a director note, with a smaller field set: MyAnimeList's person data only ever gives a name, a birthday and a photo — there's no equivalent of a director's `original_name`, `aliases`, `deathday` or `place_of_birth` to carry. See [Anime and manga](#anime-and-manga) for how this note gets created and the MANGAGRAPHY panel it comes with. ### Make `watch_date` a date property The first time you add a film, open the note's properties, click the type icon next to `watch_date` and choose **Date**. Obsidian remembers the type for that property across your whole vault, so you only do this once. ## Settings The settings are on seven pages — 🔑 API keys, 🎬 Films, 📺 TV series, 🌸 Anime & manga, 🎵 Music, 🎮 Games and 📚 Books — each opened from the plugin's settings tab. The API keys entry says which keys are set without being opened. To find a setting without knowing its page, type in the search box above Obsidian's settings: it looks through every page. On Obsidian before 1.13, the same pages follow one another on a single page. | Setting | Default | What it does | | --- | --- | --- | | TMDB API key | empty | Your personal key. Required. On Obsidian 1.11.4 or later, kept in Obsidian's keychain on each device (see [Setup](#setup)). | | Film folder | `Films` | Where notes are created. Empty means the vault root. | | Poster folder | empty | Where posters are saved. Empty follows your normal attachment folder setting. | | Director folder | `Directors` | Where director notes are created. Empty means the vault root. | | Director photo folder | empty | Where director photos are saved. Empty follows your normal attachment folder setting. | | Link directors | on | Write directors as wikilinks when a note by that name exists. | | Link genres | off | The same for genres. Off by default: genre notes turn into very busy hubs. | | Add cast | off | Write a `cast` property with the film's top-billed actors. | | Cast count | 5 | How many top-billed actors to include. Only used when Add cast is on. | | Link cast | off | The same wikilink behaviour, for cast. | | Add composers | off | Write a `composers` property with the film's original score composer. | | Link composers | off | The same wikilink behaviour, for composers. | | Link creators | on | Write a series' creators as wikilinks when a note by that name exists. A series' own setting, apart from **Link directors**. | | Link genres (TV series) | off | The same for a series' genres. | | Add cast (TV series) | off | Write a `cast` property with the series' top-billed actors, across every season. | | Cast count (TV series) | 5 | How many of them. Only used when its **Add cast** is on. | | Link cast (TV series) | off | The same wikilink behaviour, for a series' cast. | | Show connections | on | Below a film's or TV series' properties, list other films and series in your vault that share a director, creator, composer or cast member. | | Show filmography | on | Below a person's properties, list their films in your vault, linked directly. | | Show seasons | on | Below a TV series' properties, list its seasons with a checkbox and a bar for each. | | Show TV series | on | Below a person's properties, list the series they created, under the filmography. | | TV series folder | `TV` | Where TV series notes are created. Empty means the vault root. | | TV series poster folder | empty | Where TV series posters are saved. Empty follows your normal attachment folder setting. | | MyAnimeList client ID | empty | Your personal client ID. Required for Add anime / Add manga. On Obsidian 1.11.4 or later, kept in Obsidian's keychain like the TMDB key. | | Anime/manga folder | `Anime` | Where notes are created. Shared by both, since a Series note can hold either or both. Empty means the vault root. | | Anime/manga poster folder | empty | Where anime and manga posters are saved (as two separate files). Empty follows your normal attachment folder setting. | | Mangaka folder | `Mangaka` | Where mangaka notes are created. Kept separate from the anime/manga folder, the same way directors have their own folder apart from films. Empty means the vault root. | | Mangaka photo folder | empty | Where mangaka photos are saved. Empty follows your normal attachment folder setting. | | Artist folder | `Music/Artists` | Where artist notes are created. Empty means the vault root. | | Album folder | `Music/Albums` | Where album notes are created. Empty means the vault root. | | Album notes as folder notes | on | Give each new album a folder of its own, with its note inside under the same name, and put the songs added from it in that folder. Works on its own; with the Folder Notes plugin, clicking an album's folder opens its note. | | Song folder | `Music/Songs` | Where song notes are created when album notes aren't folder notes. Empty means the vault root. | | Album cover folder | `Music/Pics/Covers` | Where album covers are saved. Empty follows your normal attachment folder setting. | | Artist photo folder | `Music/Pics/Artists` | Where artist photos are saved. Empty follows your normal attachment folder setting. | | Link artists | on | Write an album's or a song's artists as wikilinks when a note by that name exists. | | Link genres (music) | off | The same for an album's genres. | | Show tracklist | on | Below an album's properties, list its tracks, each linking its song's note or with a **+** to create one. | | Show discography | on | Below an artist's properties, list their albums in your vault, with a button to add another. | | Show lyrics | on | Below a song's properties, show its lyrics from LRCLIB. Off, nothing is ever sent to LRCLIB. | | Show scores | on | Below an artist's discography, list the films, TV series, anime and games in your vault they scored. Only shown when there is one. | | Game folder | `Games` | Where new game notes are created. | | Game cover folder | *(empty)* | Where game covers are saved. Empty follows your attachment folder setting. | | Link developers | off | Write a game's developers and publishers as links when a note by that name exists. | | Platforms to list | 10 | How many of a game's platforms its note lists. 0 leaves `platforms` out. | | Short platform names | on | PS4 and Switch rather than PlayStation 4 and Nintendo Switch. | | Show DLCs | on | Below a game's properties, list the DLCs added to it, with a button to add another. | | Only my platforms | off | List only the platforms you play on — **My platforms**, separated by commas — in your order. | | Book folder | `Books` | Where new book notes are created. | | Book cover folder | *(empty)* | Where book covers are saved. Empty follows your attachment folder setting. | | Author folder | `Authors` | Where new author notes are created. | | Author photo folder | *(empty)* | Where author photos are saved. Empty follows your attachment folder setting. | | Link authors | on | Write a book's authors as wikilinks when a note by that name exists. | | Link genres (books) | off | The same for a book's genres. | | Show bibliography | on | Below an author's properties, list their books in your vault, with a button to add another. | | Show soundtracks | on | Below a film's, a TV series', an anime's or a game's properties, list the albums linked as its soundtrack, with a button to find another. | On Obsidian 1.13 or later these settings appear in Obsidian's own settings search, and each folder setting suggests the folders in your vault as you type. On earlier versions the plugin draws the same settings itself, with the same folder suggestions. ## Behaviour worth knowing - **Duplicates.** If a film or director with the same `tmdb_id` already exists anywhere in your vault, Film + Anime-Manga Tracker opens it instead of creating a second one. It never overwrites a note you have written in. Games are matched the same way by `igdb_id`, books and authors by `openlibrary_id`, albums, artists and songs by their MusicBrainz ids. - **How notes are recognized.** By their properties, never by their folder. A film's and a director's TMDB ids can be the same number, so they're told apart by what each note holds: a director note has `name`, a film has `directors`. That's what keeps a refresh from ever writing a film's data into a director note (or an anime's into a mangaka note), whatever your folder settings are. - **Missing posters.** If TMDB has no poster or photo, or the download fails, the note is still created with its metadata. The image is never worth losing the note over. - **File names.** Film notes are named `English Title (Year).md`; director notes are named after the person. Characters that are illegal in file names or that break wikilinks are removed, so `Face/Off` becomes `Face Off (1997)`. A title that already ends in its year — MyAnimeList writes remakes as `Hunter x Hunter (2011)` — keeps it once. - **Same-named works.** When another of the plugin's notes already has the name a new note would get (two films with one title and year, a light novel and its manga), the new note takes the next free name: a manga-only note tries its title with the year added, and past that a number is added (`Home (2015) 2.md`). A note of your own under that name is never written beside — the plugin opens it and leaves both alone. - **Layout.** In a note the plugin wrote — a film, a series, an anime, an album, a game… — that has a poster, the title and properties sit in a left column with the poster beside them, in both live preview and reading view. The poster is drawn from the `poster` property rather than embedded in the body, so the body stays empty and entirely yours. Narrow windows and mobile stack it vertically. To change the poster size, override `--film-tracker-poster-width` in a CSS snippet. - **Poster links.** Posters and photos are always linked as `[[wikilinks]]`, even with Obsidian's **Use [[Wikilinks]]** setting turned off, since that's the link a property understands. Posters an earlier version wrote as Markdown links still show. - **Anime duplicates.** Same rule as film duplicates, matched by `mal_id` anywhere in your vault. - **Manga duplicates.** Matched by the manga side's own MAL id, wherever it's currently stored (a fresh note, or nested inside an existing Series note next to an anime side). This only stops a second *note of its own*: the same manga — or the same anime — can be linked into as many Series notes as it has adaptations (see [Adaptations](#adaptations)). - **Mangaka duplicates.** Same rule as film duplicates, matched by `mal_id` anywhere in your vault. An anime's id and a mangaka's id (different MyAnimeList id spaces) can be the same number, so a mangaka note is told apart by its properties — `name`, and none of an anime's fields — never by its folder. - **Anime and manga never merge automatically.** MyAnimeList's own anime↔manga relation data turned out to be unreliable via the official API (empty even for very well-known pairs), so merging is manual: open the note that already has one side, run **Add anime** or **Add manga** for the other, and confirm — see [Anime and manga](#anime-and-manga). ## Films as part of your vault The point of keeping films as notes rather than rows in an app is that they can connect to everything else you write. With **Link directors** on, a film's `directors` are written as links: ```yaml directors: - "[[Damien Chazelle]]" ``` Open `Damien Chazelle` and every one of their films is waiting in the backlinks pane — no query, no configuration. The graph grows director clusters on its own. Links are only written when a note by that name already exists, so your vault never fills up with links to notes you did not want. When you *do* write a note about a director later, run **Relink directors and genres** and the films you added earlier catch up (this also relinks cast and composers, when those settings are on). A refresh never takes a link away. A name that's already linked in a note stays linked, written exactly as it was — even with its **Link** setting off, and even before its note exists — so a link you added by hand is safe. Turn on **Add cast** and **Link cast** and the same thing happens for actors — open an actor's note and every film of theirs in your vault is in the backlinks pane. **Add composers**/**Link composers** does the same for the score composer. ### Connections Below a film's or a TV series' properties (and poster, if it has one), Film + Anime-Manga Tracker shows other films and series in your vault that share a director, a creator, a composer or a cast member — with the shared name next to each one. A film and a series count as connected when the same person directed one and created the other. This works whether or not **Link cast**/**Link directors**/**Link composers** are on: it compares the names directly, not the links. Genres are deliberately left out — two films both being "Drama" is not a connection. This panel is rendered, not written to the note — it appears and disappears as your vault changes, and never touches the file. ### Filmography A person note gets the same panel, labeled **Filmography** instead: every film in your vault whose `directors` credits that person — matched against `name` and `aliases` (so both the English and native-language spelling work), oldest first, linked directly. Like Connections, it is rendered rather than written to the note. Under it, **TV series** lists the series in your vault whose `creators` credits them, in a box of its own. Two lists rather than one, because a percentage over both would say nothing: a five-season series and a film are not the same unit. Each heading shows what share of that list has `watched` ticked, e.g. "FILMOGRAPHY · 90% watched" — computed from what is already in your vault, not TMDB's full catalog for that person, and equally rendered-only: nothing is written to the note. Every one of these panels can be turned off on its own in settings: **Show connections**, **Show filmography**, **Show TV series** and **Show seasons**. ### Queries worth keeping Films you have not watched yet: ````markdown ```dataview TABLE year, directors FROM "Films" WHERE !watch_date SORT year DESC ``` ```` Everything by one director, ordered by year: ````markdown ```dataview TABLE year, runtime FROM "Films" WHERE contains(directors, this.file.link) SORT year ASC ``` ```` Put that second one in the director's own note and it fills itself in. What you watched, most recent first: ````markdown ```dataview TABLE watch_date, year FROM "Films" WHERE watch_date SORT watch_date DESC ``` ```` If you use **Bases** (Obsidian 1.9+), point a new base at the `Films` folder and set the card image to the `poster` property to get a poster wall. ## TV series One note per show. The seasons live in the note, as a line each, and they are the only record of what you have watched: the counts above them are written from the seasons, never the other way round. ```yaml --- title: Breaking Bad original_title: Breaking Bad aliases: - Breaking Bad year: 2008 end_year: 2013 creators: - Vince Gilligan genres: - Drama - Crime networks: - AMC status: Ended episodes: 62 episodes_watched: 20 poster: "[[Breaking Bad (2008).jpg]]" tmdb_tv_id: 1396 watch_start: watch_date: watched: false seasons: - { season: 1, year: 2008, episodes: 7, watched: 7, watch_date: 2026-09-01 } - { season: 2, year: 2009, episodes: 13, watched: 13, watch_date: 2026-09-10 } - { season: 3, year: 2010, episodes: 13, watched: 0 } - { season: 4, year: 2011, episodes: 13, watched: 0 } - { season: 5, year: 2012, episodes: 16, watched: 0 } --- ``` - `episodes` counts what has **aired**, not what has been announced: a season listed with episodes still to come only counts the ones that are out. - `episodes_watched` is the sum of the seasons, rewritten on every change. Edit the seasons, not this. - `seasons` holds one line per season that has at least one episode out. Specials (TMDB's "season 0") are left out. A season name that says more than its number is kept ("Night Country"). - `watch_start` is left empty and never written to: a series is watched over weeks, and the day you started is yours to fill in. `watch_date` is the day you finished, written when the last episode of a show that has ended goes in — or when you say **Mark as watched today**. - `creators`, `genres` and `cast` follow the **TV series** settings, not the film ones: a cast list that is right for a film is often not what you want on a series that ran for years. - `tmdb_tv_id` is TMDB's id for the **show**. It is deliberately not `tmdb_id`: TMDB numbers films and shows separately, and the same number is usually both. - `watched` is ticked for you only when a show that has **ended** is fully watched. A show still running never ticks itself off, however much of it you have seen — being caught up is not the same as being finished. **Mark as watched today** ticks it whenever you say so. ### The SEASONS panel Below the properties, each season gets a row: a checkbox that ticks the whole season off (and dates it), a bar showing how far into it you are, and **+1** for one more episode. Unticking a season sets it back to nothing and takes the show's own tick off with it. Under the poster, the bar reads where you are the way a viewer counts: "S3E6 · 25 / 62 episodes", with **+1 episode** and **Watched today** beside it. **+1 episode** goes into the earliest season with something left, so a show watched in order needs nothing else. Obsidian has no widget for a list like `seasons`, so the raw property row is hidden on TV notes and the panel is the view of it. The data is untouched, and the note is still an ordinary Markdown file. A TV note shows **Connections** as well, in its own box under the seasons: other films and series sharing a creator, a composer or a cast member. A show's creators are the same people, on the same notes, as a film's directors — **Add director** writes them, and they show up in that person's [Filmography](#filmography) under **TV series**. ### The manga a series adapts A TV series note can hold a manga, the same block a Series note holds: open the series, run **Add manga**, and answer **Link to this note**. The manga side keeps everything it has elsewhere — the MANGA panel, the Read checkbox, **+1 chapter**, **Add mangaka**, and a refresh from MyAnimeList — while the episodes go on coming from TMDB, season by season. That is what makes a long-running anime work well here: TMDB has its seasons in one place, MyAnimeList has its manga, and the note holds both. A note like that shows three boxes under its properties: **SEASONS**, **MANGA**, then **CONNECTIONS**. **Refresh metadata from TMDB** rewrites the series; **Refresh anime/manga metadata from MAL** rewrites the manga. Neither touches the other's half. ### Anime on TMDB TMDB lists anime among its TV shows, where a show is every season at once with its cast and crew; MyAnimeList has each season as an entry of its own, with the manga beside it. Every search result says which catalogue it came from, so the choice is between what the two give rather than between two names — and either way the manga can sit on the note (see above). If you add one anyway, and the work is already in your vault as an anime note, you are asked first — and the same question comes up the other way round, adding an anime the vault already has as a TV series. Neither is refused: the two are simply counted separately, from two catalogues that share no ids. ## Music Albums, artists and songs, from [MusicBrainz](https://musicbrainz.org) — the open music encyclopedia. No key and no account: it works as soon as the plugin is installed. Each note is its own: **Add album** writes the album and nothing else, **Add artist** writes the artist and nothing else, and a song's note is only ever written when you ask for that song. An album names its artists — as links, once their notes exist — but never creates one or any of its songs, and an artist note never creates their albums. ### Album notes ```yaml --- title: OK Computer artists: - "[[Radiohead]]" year: 1997 album_type: Album genres: - alternative rock - art rock runtime: 53 tracks_count: 12 poster: "[[OK Computer (1997).jpg]]" mb_album_id: b1392450-e666-3926-a536-22c65f834433 listened: true listen_date: 2026-09-24 listen_count: 3 tracks: - { n: 1, title: Airbag, length: "4:44" } - { n: 2, title: Paranoid Android, length: "6:27" } --- ``` - An album is the work, not one pressing of it: OK Computer has 39 releases on MusicBrainz. The track list is read from one that came out on the album's first day — the standard edition, not a deluxe one released alongside it. - `album_type` says what it is: Album, EP, Single, Soundtrack, Live, Compilation. - `listened`, `listen_date` and `listen_count` are yours. **Listened today** ticks the album, writes the date the first time, and counts one more listen every time — an album is meant to be played again. A refresh never touches them. - `tracks` holds one line per track, with `disc` on an album of more than one. Under the properties, the TRACKLIST panel is the readable view of it. A key you add to a track's line is kept. - The cover comes from the album's own page on Deezer, found through the links MusicBrainz keeps — the edition with the album's own number of tracks, not a deluxe one. An album Deezer doesn't have (many soundtracks, older records) gets its cover from the [Cover Art Archive](https://coverartarchive.org) instead, and failing that from Deezer's search, but only for an album whose title and artist match exactly. No cover is better than the wrong one. ### Titles in other scripts An album titled in another script — 千と千尋の神隠し サウンドトラック — also gets its title in Latin letters when MusicBrainz has one, at no extra cost: romaji first ("Sen to Chihiro no Kamikakushi"), then English ("Spirited Away Soundtrack"). Every form of it goes in the new note's `aliases`, so a search in any of them finds it, and each track's line gets its own as `latin`, when a release in Latin letters has the same tracks. - **Show titles in Latin letters** (Music → Titles in other scripts) shows those titles on the TRACKLIST, DISCOGRAPHY and SOUNDTRACK panels and in **Add song**. The notes stay as they are. - **Name new notes in Latin letters** names new album and song notes by them, and titles them so; their own title is kept in `original_title` and `aliases`. Lyrics are still looked up by the song's own title. - Both are off by default. An album note already in your vault is never renamed, and a refresh adds nothing to it. Search results are shown as MusicBrainz lists them: it keeps no Latin titles there. ### Song notes A song lives with its album. Each album is a folder of its own, its note inside under the same name, and the songs you add from it go beside it. This works on its own — the album's note is simply the first file in its folder. With the [Folder Notes](https://github.com/LostPaul/obsidian-folder-notes) plugin, the note is tucked away and clicking the album's folder opens it: ``` Music/Albums/Abbey Road (1969)/ Abbey Road (1969).md Here Comes the Sun.md Something.md ``` ```yaml --- title: Here Comes the Sun aliases: - Here Comes the Sun (The Beatles) artists: - "[[The Beatles]]" album: "[[Abbey Road (1969)]]" track: 7 length: "3:06" year: 1969 poster: "[[Abbey Road (1969).jpg]]" mb_recording_id: 440f60e8-0b25-4ec4-abb1-c6beec624ab0 --- ``` - A song is added from its album: the **+** beside a track on the TRACKLIST panel, or **Add song from this album**. The TRACKLIST row then links the song's note. - The note is named by the song's title, and found by "Title (Artist)" too, through its `aliases`. When another note in your vault already goes by that title — a second "Intro" — the new one is named "Intro (Artist)" instead, so a plain `[[Intro]]` never has two notes to choose from. - An album note from before folder notes stays where it is: songs added from it go into a folder of the album's name beside it, and **Move album into its folder** moves the album in with them whenever you like. Nothing is ever moved on its own. - With **Album notes as folder notes** off, albums sit side by side in the album folder and songs go in the song folder, named "Title (Artist)". - `album` links the album's note, and `track` (with `disc` on an album of more than one) says where the song sits on it. The cover is the album's own file, linked rather than downloaded again; an album without a cover gives its songs none. - A song's artists are its own: on a soundtrack or a compilation they are not always the album's. - A refresh brings `artists` and `length` up to date. The title, album, track, year, the cover once there is one, your own properties and the body stay as they are. ### Lyrics Under a song's properties, the LYRICS panel shows its lyrics from [LRCLIB](https://lrclib.net), the open lyrics database — no key, no account. - They are looked up by the song's title, artist, album and length. A record is only taken when its length is within a few seconds of the song's, so a live recording of the same title isn't mistaken for it. An artist with a note is also looked for by their name in their own script (宇多田ヒカル). No lyrics are better than the wrong ones. - Lyrics once fetched are kept in the plugin's own `lyrics.json`, beside its settings, and show again without a connection. - **Copy lyrics into note** adds them at the end of the note, under `## Lyrics`. From then on they are the note's own: yours to edit, and on every device the note syncs to. The panel steps aside for a note with its own Lyrics section. - **Wrong lyrics** remembers that the ones found aren't this song's; **Fetch again** asks LRCLIB anew. An instrumental says so. ### Soundtracks An album can be the soundtrack of a film, a TV series, an anime or a game in your vault. The link is kept on the album's note alone, in `soundtrack_of`, and the work's own note is never written for it: ```yaml --- title: "Interstellar: Original Motion Picture Soundtrack" artists: - "[[Hans Zimmer]]" year: 2014 album_type: Soundtrack soundtrack_of: - "[[Interstellar (2014)]]" --- ``` - Under a film's, a TV series', an anime's or a game's properties, the SOUNDTRACK panel lists the albums that link it, with how many you have listened to. - **Find soundtrack…** lists what may be its soundtrack. [Wikidata](https://www.wikidata.org) comes first: it knows the soundtracks of a fair share of films and anime — not all — and what it knows is right. Then MusicBrainz's soundtracks under each of the work's titles, its original one included: a Japanese soundtrack is filed under 進撃の巨人, not under "Attack on Titan". An album from before the work is left out, and one by a composer the note names comes first. Nothing is linked until you pick it. An album already in your vault gets the link; one that isn't is added with it. - The last row, **Search MusicBrainz for another album…**, is the plain album search, for a soundtrack the list doesn't have. - From the album's side, **Link to a film, series or game** lists the films, TV series, anime and games in your vault, the ones Wikidata names as its works first. - Wikidata knows a game by the end of its IGDB address — `hollow-knight` — which it reads from the note's `url`; that is all it is sent. - An album can be the soundtrack of more than one: a compilation, or a film you have both as a film and as an anime. To take a link away, remove it from `soundtrack_of` in the album's properties. - A film's own note is never changed — its SOUNDTRACK panel is worked out from the albums every time. ### Finding an album **Add album** searches MusicBrainz. A soundtrack, an EP or an album with a title in another script is often not near the top of that search — "Interstellar" finds a live suite before the soundtrack — so the first row of every search is **Browse an artist's albums instead…**: pick the artist, then the album from their own list, oldest first and filtered as you type. The artist's note isn't created for it. An artist note has the same list behind the **Add album…** button on its DISCOGRAPHY panel. ### Artist notes ```yaml --- name: Joe Hisaishi original_name: 久石譲 aliases: - Joe Hisaishi - 久石譲 type: Person country: JP born: 1950-12-06 died: genres: - classical - cinematic classical poster: "[[Joe Hisaishi.jpg]]" photo_credit: Deezer mb_artist_id: 44c64a30-1d58-49c5-b314-6e02fba49526 --- ``` - The note is named in English. MusicBrainz names an artist in their own script — 久石譲 — and the note takes the English name, so that a film's `composers: [[Joe Hisaishi]]` and an album's `artists` both find it. Both names go in `aliases`, and the original in `original_name`. - A person has `born` and `died`; a group has `formed` and `disbanded`. - The photo is the artist's own press photo from their page on Deezer, found through the link MusicBrainz keeps — so it is the right artist, never a namesake. For an artist without one, it comes from [Wikimedia Commons](https://commons.wikimedia.org), whose photos mostly ask to be credited: `photo_credit` says where the photo came from, and for Commons who took it and its licence (`citykane · CC BY 2.0`). - Don't like it? **Change photo**, under the photo, shows every photo on offer side by side — Deezer's, and up to eight from the artist's category on Commons, each with whom it credits — and the one you pick replaces it. **Choose from your vault…** links a picture you already have, as it is; **From a web address…** downloads the picture at an address you paste and credits the site. The old photo is kept unless you say otherwise. - Under the properties, DISCOGRAPHY lists the artist's albums already in your vault, matched on every name in the note, with how many you have listened to. - Under it, SCORES lists the films, TV series, anime and games in your vault the artist scored, with how many you have watched: a film whose `composers` names them (with **Add composers** on), and every work an album of theirs is linked to as its [soundtrack](#soundtracks) — the only way an anime, a TV series or a game can say who scored it. An artist who scored nothing in your vault has no SCORES panel. ### Being a good guest Wikidata is asked only when you look for a soundtrack, and is sent only the work's TMDB or MyAnimeList id, or the album's MusicBrainz id. IGDB is asked only for the games you search for, add and refresh. Your client secret only ever goes to Twitch, for the access token. LRCLIB is asked only for a song's lyrics, and is sent only the song's title, artist, album and length — nothing about you. The plugin carries no lyrics of its own: it fetches the ones you open, from LRCLIB, and **Show lyrics** turned off stops every request to it. MusicBrainz is run by a non-profit and asks every app for two things: at most one request a second, and a name it can reach the app's author by. The plugin does both — it waits its turn between requests and introduces itself as `FilmTracker/ ( https://github.com/yunuskarasu/obsidian-film-tracker )` — nothing about you. That is why adding an album takes a few seconds: it is several requests at MusicBrainz's pace. ## Games **Add game** searches [IGDB](https://www.igdb.com), the games database run by Twitch, and writes the game's note and cover: ```yaml --- title: Hollow Knight aliases: - Hollow Knight year: 2017 platforms: - PC - Switch developers: - Team Cherry publishers: - Team Cherry genres: - Platform - Adventure series: - Hollow Knight poster: "[[Hollow Knight (2017).jpg]]" url: https://www.igdb.com/games/hollow-knight igdb_id: 14593 play_status: playing played_on: Switch completed: completed_count: 0 hours: 12 --- ``` - The search lists games that stand on their own: a main game, a remake, a remaster, an expanded edition, a port, a standalone expansion — each says what it is beside its year. A DLC, a bundle, a mod or an update never shows. A game titled exactly as you searched comes first, then the best known, so Final Fantasy VII itself is above its ports. - `aliases` holds the game's title and its Japanese titles (ペルソナ5 タクティカ), so a search in either finds the note. - `play_status` (backlog, playing, completed, abandoned), `played_on`, `completed`, `completed_count` and `hours` are yours. **Start playing** sets the game playing; **Mark as completed today** — also a button under the cover — completes it, writes the date the first time and counts one more completion every time. A refresh never touches them. - **Refresh metadata from IGDB** rewrites what IGDB knows. Your aliases, a name you made a link, the cover once there is one, your own properties and the body stay as they are. - **Link developers** (🎮 Games settings) writes developers and publishers as links when a note by that name exists. - Under the properties, the **DLC** panel lists the DLCs and expansions added to the game, each with a checkbox: ticked, it's done and dated that day. **Add DLC…** — also a command and on the note's right-click menu — lists the game's own DLCs and expansions on IGDB that the note doesn't have yet. None is ever added on its own, and a refresh leaves them as they are. They're kept in the note's `dlcs`, one line each: `{ title: Hearts of Stone, year: 2015, igdb_id: 12345, done: true, completed: 2026-10-02 }`. - A game can come out on a dozen platforms. **Platforms** (🎮 Games settings) decides how many the note lists (0 leaves `platforms` out), in short names or full, and — with **Only my platforms** — only the ones you play on: `PC, PS5, Switch`. A refresh lists them by the settings of the day. ### Setting up IGDB IGDB is reached with a Twitch app's client ID and secret. It takes a few minutes, once: 1. Sign in to the [Twitch developer console](https://dev.twitch.tv/console/apps). Twitch asks for two-factor authentication on the account before it lets you register an app. 2. **Register Your Application**: any name, OAuth redirect URL `http://localhost`, category *Application Integration*, client type *Confidential*. 3. Open the app, copy its **Client ID**, press **New Secret** and copy the **Client Secret** — Twitch shows it only once. 4. Paste them into **🔑 API keys → IGDB client ID** and **IGDB client secret**. The plugin trades them for an access token itself, keeps the token in memory only, and asks for a new one whenever it runs out — about every two months. You never have to do anything about it, unless you make a new secret on Twitch: then paste that one in. ## Books **Add book** searches [Open Library](https://openlibrary.org), the open book catalogue run by the Internet Archive, and writes the book's note and cover. No key is needed: ```yaml --- title: The Cherry Orchard original_title: Вишневый сад aliases: - The Cherry Orchard - Вишневый сад - Вишнёвый сад year: 1904 authors: - "[[Anton Chekhov]]" genres: - tragicomedy series: pages: 88 poster: "[[The Cherry Orchard (1904).jpg]]" url: https://openlibrary.org/works/OL55417W openlibrary_id: OL55417W read_status: reading started: 2026-10-11 finished: read_count: 0 --- ``` - A note is the book itself, the work, not one edition of it: one note for *The Cherry Orchard*, however many translations and printings it has. The cover is the one Open Library shows for the work, and `pages` is the usual length of its editions — until you choose [your edition](#your-edition). - Each search result names its authors, its year and how many editions it has. A book titled exactly as you searched comes first, then the most printed, so Chekhov's play is above the books named after it. - `year` is when the book first came out: Wikidata's date where it has one, else the year of the earliest edition Open Library knows. `genres` and `series` come from [Wikidata](https://www.wikidata.org). - `read_status` (to read, reading, read, dropped), `started`, `finished` and `read_count` are yours. **Start reading** sets the book reading and dates the day the first time. **Mark book as finished today** sets it read, dates the day the first time and counts one more reading every time. Both are buttons under the cover too. A refresh never touches them. - **Refresh book metadata from Open Library** rewrites what Open Library and Wikidata know. Your edition, your aliases, a name you made a link, the cover once there is one, your own properties and the body stay as they are. When Wikidata can't be reached, the year, authors and genres are left as they were rather than guessed. - **Link authors** (📚 Books settings, on by default) writes the authors as links when a note by that name exists. Adding a book never writes its author's note. ### Your edition **Choose edition** — a button under the cover, a command, and an entry on the note's right-click menu — lists every edition Open Library has of the book: those in Obsidian's language first, then the newest. Each shows its publisher, year, page count, language and format, with its ISBN and translators below, and the list filters as you type. The first row is **Enter ISBN…**: type the ISBN on the back of your copy, with or without hyphens — or type it straight into the list. A mistyped digit is caught, since an ISBN's last digit checks the others. ```yaml pages: 220 poster: "[[No Country for Old Men (2005) 1.jpg]]" openlibrary_id: OL40875W edition: openlibrary_id: OL37024172M title: İhtiyarlara yer yok publisher: Kanat published: 2008 isbn: "9789758859757" translators: - Roza Hakmen ``` - The `edition` block is the edition you own. Edit it in source mode: Obsidian's Properties view shows a nested block as raw text. Choose another edition and the block is replaced. - `pages` becomes the edition's page count, and from then on a refresh leaves it and the block alone. - A translation's `title` is written only when it differs from the book's, and it joins `aliases`, so the note is found by it too. Choosing another edition takes the old one's title out of `aliases`. - `translators` are filled in only when Open Library names them for certain — a translator credit, or a title page that says "translated by" or "çeviren". Otherwise the list is left empty for you, and once you have filled it in, choosing the same edition again keeps your list. - The edition's cover becomes the note's poster, saved beside the old one. If no other note uses the old cover, you are asked whether to delete it. An edition without a cover keeps the one there. - Open Library sometimes files an edition under a second copy of the book's record. An ISBN that lands on one asks **Use this edition?** before anything changes. - Obsidian's language decides which editions come first. With Obsidian in English, type a language — "Turkish" — to filter the list down to it. ### Titles in other scripts A book titled in another script, such as Russian or Japanese, is named in English: Wikidata's English title for it, or else the title of its English edition. Its own title goes in `original_title`, and every title in `aliases`, so a search in either finds the note. A title already in Latin letters, *Kürk Mantolu Madonna* say, stays exactly as it is, with no `original_title`. ### Author notes **Add author** searches Open Library for a person. Two authors often share a name, so each result shows their years, how many works they have and their best-known one. ```yaml --- name: Anton Chekhov original_name: Антон Павлович Чехов aliases: - Anton Chekhov - Антон Павлович Чехов born: 1860-01-17 died: 1904-07-02 poster: "[[Anton Chekhov.jpg]]" photo_credit: Open Library url: https://openlibrary.org/authors/OL19677A openlibrary_id: OL19677A --- ``` - The note is named in Latin letters, Wikidata's English name for the author, so a book's `authors: [[Anton Chekhov]]` finds it. Their own name goes in `original_name` and `aliases`. - `born` and `died` come from Wikidata where it knows the author, to the day where the day is known, and from Open Library otherwise. - The photo is the author's own on Open Library. For an author without one, it comes from [Wikimedia Commons](https://commons.wikimedia.org), credited in `photo_credit` with who took it and its licence. - Adding an author writes none of their books. - Under the properties, **BIBLIOGRAPHY** lists the author's books already in your vault, oldest first, with the share of them you have read. **Add book…** opens the author's own list of books on Open Library, the most printed first, and filters it as you type. ### Open Library's pace Open Library is run by a non-profit and asks apps to say who they are and to go easy on its servers. The plugin sends at most one request a second and introduces itself as `FilmTracker/ ( https://github.com/yunuskarasu/obsidian-film-tracker )`. It sends nothing about you: a Goodreads import sends each book's title, author and ISBN, and nothing else from your export. Adding a book takes a few seconds for that reason, and an import about three seconds a book. Wikidata is asked only about the books and authors you add and refresh, found by their Open Library ids. It is sent nothing about you either. ## Anime and manga An anime and a manga of the same series don't have to live in two separate notes. **Add anime** and **Add manga** are independent — either can come first — but when you want them combined, open the note that already has one side in the editor and run the other command. Film + Anime-Manga Tracker asks **Link to this note?**: link it, or keep it as a separate note. Only the note in the active editor tab is ever offered — not one you looked at earlier while Graph view or a canvas has the focus. There's no automatic matching (MyAnimeList's own anime↔manga relation data turned out to be empty via the official API even for very well-known pairs, so guessing was dropped in favor of this simple, explicit rule). A merged Series note looks like this: ```yaml --- title: Hunter x Hunter english_title: Hunter x Hunter japanese_title: ハンター×ハンター media_type: tv episodes: 148 genres: - Action - Adventure studios: - Madhouse status: finished_airing year: 2011 end_year: 2014 poster: "[[Attachments/Hunter x Hunter.jpg]]" mal_id: 11061 watched: false manga: mal_id: 26 title: Hunter x Hunter media_type: manga status: currently_publishing year: 1998 end_year: chapters: 400 volumes: 37 mangaka: - "[[Yoshihiro Togashi]]" poster: "[[Attachments/Hunter x Hunter (Manga).jpg]]" read: false --- ``` The properties above `manga:` are the anime side — same fields, same rules as any [anime note](#anime-notes). `watched` (anime) and `manga.read` are independent: watching the anime never touches `read`, and finishing the manga never touches `watched`. The manga side keeps its own `chapters_read` and `read_date`, written by **Read one more chapter** and **Mark manga as read today** and carried over by every refresh — the same way the anime side keeps `episodes_watched` and `watch_date`. ### The MANGA panel Obsidian's Properties view has no widget for a nested value like `manga:` — it would otherwise show up as a single property rendered as raw, unreadable JSON. Film + Anime-Manga Tracker hides that one row instead (only on notes that actually have a `manga` block — a `manga` property you've added yourself on some unrelated note is never touched) and shows the same data properly below the properties, in its own collapsible **MANGA** panel: the title, a line with type, year and status ("Manga · 1998 · Currently publishing") followed by the volume and chapter counts when MyAnimeList has them, mangaka (linked, same as directors — see below), the manga's own poster, how far through the chapters you are, a **Read** checkbox and a **+1 chapter** button. That Read checkbox is the one place in Film + Anime-Manga Tracker that writes to the note from a rendered panel rather than through Properties directly — ticking it sets `manga.read`, today's `manga.read_date` and the full `manga.chapters_read`, on every note that carries the same manga (see [Adaptations](#adaptations)). Refreshing never touches it, the same guarantee `watched` and a film's `watch_date` already have. Since a Series note can have its own top-level `poster` (the anime's) and a separate `manga.poster`, both are downloaded and kept independently — refreshing one side never overwrites the other's poster, or a poster that's already saved. The panel also carries **Change manga** and **Remove manga**, for when the wrong manga ended up on a note. **Change manga** opens the same search box **Add manga** uses and swaps in whatever you pick, poster included; **Remove manga** asks first, then drops the manga side entirely. Both edit only the `manga:` block — the note is never recreated, so the anime side, its poster, `watched`, your own properties and the body are all left exactly as they are. Since the old `manga.read` and any sub-field you hand-added under `manga` described a different work, they don't survive the change. The old manga's poster file stays in your vault unless you say otherwise. When nothing else uses it any more — no other note shows it as a poster (another adaptation, say), links to it or embeds it — **Remove manga** offers to delete it along with the manga, and **Change manga** asks whether to delete it once the new manga is in. A deleted poster goes wherever Obsidian's **Deleted files** setting sends deleted files. ### Adaptations One manga can have several anime — a remake (*Hunter x Hunter* 1999 and 2011), a second series, a film — and one anime can adapt more than one manga (*Cowboy Bebop* has two manga of its own). Each pairing gets a Series note of its own, so the same manga, or the same anime, can sit on several notes: What happens to one of those notes happens to them all: reading a chapter, and watching an episode, are counted once and written to every note carrying that manga or that anime. **Add adaptation** pairs the work with the note it was run from, the same note **Add anime** and **Add manga** offer. - **Add adaptation** on the MANGA panel pairs that note's manga with another anime in one step. The pairing goes on the note you ran it from when that note can take an anime; a note that already has one hands it to the anime's own anime-only note, or to a new Series note when there is none. - The long way works too: with an anime-only note open, **Add manga** links a manga into it even when that manga is already on another note (and **Add anime** the same way into a manga-only note). The **Link to this note?** dialog tells you where else it already is. - A work arriving on another note comes in step with the notes it's already on: the same poster file (never a second download), a manga already **Read** elsewhere arrives read, an anime already `watched` elsewhere arrives watched. From then on, **Read** is kept in step across every note carrying that manga; `watched` is an ordinary property of each note, yours to tick. - A pairing only ever has one note: asking for the same anime and manga together again opens the note that already pairs them. - **Add manga** or **Add anime** with no note of the right kind open still refuses a second note of its own for something already in your vault, and opens the existing one instead. ### The MANGAGRAPHY panel Run **Add mangaka** with a manga or Series note open and it reads that note's own manga metadata to find the credited author(s) on MyAnimeList — there's no search box, since MyAnimeList has no way to search for a person by name. One author adds them straight away; more than one shows a quick pick list to choose from. The resulting note lives in the Mangaka folder, with the same two-column poster layout as a film or director note. That mangaka note's properties get a **MANGAGRAPHY** panel — the mangaka equivalent of [Filmography](#filmography): every manga in your vault credited to that person, linked directly, oldest first, matched against their `name` (MyAnimeList gives no alternate-name equivalent to a director's `aliases` to widen the match with). The heading shows what share of those are marked `read`, e.g. "MANGAGRAPHY · 60% read" — computed the same rendered-only way Filmography's `% watched` is. Clicking a manga in the list goes straight to that manga's own note, wherever it currently lives — a manga-only note, or a Series note it's merged into. A manga on several Series notes (see [Adaptations](#adaptations)) is listed once, with the other notes linked after it ("also in …"), and counts once in the read percentage. ### Mangaka links `mangaka` follows the exact same rule as a film's `directors` or `cast`: written as a plain name, and only turned into a `[[wikilink]]` once a note by that name already exists in your vault. Running **Add mangaka** creates that note and updates the manga side in the same step, so the wikilink appears immediately. If a mangaka note comes to exist some other way instead, run **Refresh anime/manga metadata from MAL** on the series afterwards to pick it up — **Relink directors and genres** is TMDB-only and doesn't touch anime/manga notes. ## Diary The diary is a book of your year: every film, series, anime, manga, book, game and album you finished, by the day you finished it. Click the ribbon icon and pick **Open diary**, or run **Open diary** from the command palette. It opens in a tab of its own; running it again brings back the one already open. It writes nothing. It only reads the dates already in your notes, so a note you date fills it in, and one you delete or move takes its day with it — the diary keeps up while it is open. | A note | Shows on the day in | | --- | --- | | Film | `watch_date` | | TV series | each season's `watch_date`, as "Season 2"; and the series' own `watch_date` when no season was finished that day | | Anime | `watch_date` | | Manga | the manga side's `read_date`, under the manga's own title and cover — on a Series note too | | Book | `finished` | | Game | `completed` | | Album | `listen_date` | A note without a date isn't in it: `watched`, `read` and `listened` ticked on their own mean "I've seen it, but I don't know when", so they have no day to go on. **Watched today**, **Mark book as finished today** and the other *today* commands write the date for you. Only the first date is kept in a note, so a film seen again stays on the day you first saw it. The pages, in order: - **The cover**, with the year, the covers of the first things you finished and how many of each kind. - **Contents**, a line for each month with the page it starts on. Click one to go there. - **At a glance**, a bar for each month, coloured by kind. Click one to go to its month. - **Each month**: a calendar with the days you finished something marked in their colour, and a few of the month's covers; then its entries, four a page, each with its day, cover and kind. Click an entry to open its note in a new tab — or, holding **Ctrl** (**Cmd** on macOS), wherever Obsidian puts a link opened that way. - **The year in numbers**: how many of each kind, the busiest month, what the year began with and the latest. To turn a page, click it, or use the arrows below the book: **‹** and **›**, and the button left of them for the cover. On the keyboard, **←** and **→** (or **Page Up** and **Page Down**) turn a page, **Home** goes to the cover and **End** to the back. The diary opens on this year, or on the latest year with anything in it. The year to the right of the arrows picks another, from the years your notes have anything in. In a narrow tab, and always on a phone, the diary shows one page at a time. Tap a page to turn it: its left third goes back. On a computer's touchscreen a swipe turns it too; a phone or a tablet keeps the swipe for Obsidian's sidebars. A phone on its side has the buttons either side of the book, to leave it all the height there is. ## Library The library is a shelf of everything you track: every film, TV series, anime, manga, book, game and album in your vault, as covers, the newest first. Click the ribbon icon and pick **Open the library**, or run **Open the library** from the command palette. It opens in a tab of its own; running it again brings back the one already open. Like the diary, it writes nothing and only reads your notes, keeping up with them while it is open: a note added, marked or deleted shows on the shelf within a second. People — directors, mangaka, artists, authors — and songs aren't on it. A Series note with both an anime and its manga is on it twice, once for each, with its own cover and title. Each cover says where you are with it, in its kind's own words, with a coloured dot: | | Planned | In progress | Finished | Dropped | | --- | --- | --- | --- | --- | | Film | To watch | | Watched (`watched` ticked) | | | TV series, anime | To watch | Watching (an episode or more watched) | Watched | | | Manga | To read | Reading (a chapter or more read) | Read | | | Book | To read | Reading | Read | Dropped (`read_status`) | | Game | Backlog | Playing | Completed | Abandoned (`play_status`) | | Album | To listen | | Listened | | A series, an anime or a manga you've started also has a line along the foot of its cover, and how far you are under it: `13/26 ep`, `98/139 ch`, or just `1100 ch` for one still coming out. Over the shelf: - **Tabs**, one for each kind and **All**, each with how many it holds. - **Filters** for the four statuses above, each with how many it holds. A tab and a filter work together: **Games** and **In progress** show the games you're playing. - **Search**, through every name a work has in its note — its title, its English, Japanese or original title, and its aliases — whatever the case or the accents: `kurk` finds *Kürk Mantolu Madonna*. **Esc** clears it. - **Sort**: recently added, title, release year, or recently finished. A work with no year, or not finished, goes after the rest. - **Three sizes** of cover, on the right. Click a cover to open its note in the same tab — **Back** brings you to the shelf — or hold **Ctrl** (**Cmd** on macOS) to open it in another. Right-click a cover for the note's own menu, the one the file list shows. The library remembers its tab, its filter, its sort and its size; the search starts empty each time. On a phone, a size is how many covers fit across the screen held upright — four, three or two — and more fit on its side. A phone keeps a size of its own, so a size picked there never changes a computer's. The filters, the search and the sort sit over the tabs, slide away as you scroll down and come back as you scroll up. On a phone or a tablet, touch and hold a cover for the note's menu. ## Development ```bash npm install npm test # file naming, YAML output, TMDB/MAL mapping, frontmatter rewriting npm run lint # includes the official eslint-plugin-obsidianmd rules npm run dev # esbuild watch npm run build # typecheck + production bundle ``` The IGDB tests replay answers saved in `tests/fixtures/igdb`. To save them afresh, set `IGDB_CLIENT_ID` and `IGDB_CLIENT_SECRET` in a terminal and run `npx vitest run --config vitest.record.config.mts tests/igdb-record.test.mts` there. Only the games' data is written — never a key, a secret or a token. The book tests replay Open Library's and Wikidata's answers saved in `tests/fixtures/openlibrary`. Neither needs a key: `npx vitest run --config vitest.record.config.mts tests/openlibrary-record.test.mts` saves them afresh. ## Attribution This product uses the TMDB API but is not endorsed or certified by TMDB. Anime and manga metadata and posters come from the [MyAnimeList API](https://myanimelist.net/apiconfig/references/api/v2). Game data and covers come from [IGDB.com](https://www.igdb.com). Book data, covers and author photos come from [Open Library](https://openlibrary.org), with a book's first year, genres and series, and an author's dates and name in Latin letters, from [Wikidata](https://www.wikidata.org). An author without a photo on Open Library gets one from [Wikimedia Commons](https://commons.wikimedia.org), credited in the note's `photo_credit`. Music metadata comes from [MusicBrainz](https://musicbrainz.org), and lyrics from [LRCLIB](https://lrclib.net). Which album is which work's soundtrack comes from [Wikidata](https://www.wikidata.org). Album covers come from [Deezer](https://www.deezer.com) or the [Cover Art Archive](https://coverartarchive.org), and artist photos from Deezer or [Wikimedia Commons](https://commons.wikimedia.org), each credited in the note's own `photo_credit`.