Plugin: MediaVault, Track Your Movies and TV Shows Inside Obsidian

Disclaimer

Is this plugin open source? Yes
Is this plugin completely free? Yes
Is this plugin vibe-coded beyond the author’s ability to comprehend how it works? No, but I’m not very knowledgeable about mobile development, so dealing with Android-specific issues was a bit difficult.
Community Directory: [Mediavault](https://community.obsidian.md/plugins/mediavault)


Hi everyone,

I’m excited to share an Obsidian plugin I’ve been working on for tracking movies and TV shows directly inside your vault.

Features

  • Library: TMDB-backed search/add, grid/list/table views, filters, sort
  • Favorites & Lists: favorites carousel, built-in favorite-movies/favorite-series
    smart lists, custom lists with manual/automatic sorting and drag-to-reorder(WIP)
  • Explore: TMDB discovery page (trending/popular/recommended)
  • Partially Watch: You can mark a movie as partially watched, similar to a TV show, and record the point where you stopped watching (My personal favorite feature)
  • Reviews: unlimited watch sessions per title, rating-evolution chart, full timeline
  • TV tracking: season/episode hierarchy, batch mark-watched, favorite episodes,
    season/episode rewatch tracking, dropped-show workflow with resume support
  • Cast & Filmography: cast tab, actor details with biography, filmography
    browsing with preview-before-import
  • Import: TV Time GDPR ZIP export (watch history, ratings, reviews,
    favorites, custom lists, dropped/archived status), CSV, and JSON, with
    dry-run preview, per-file diagnostics, and safe re-import
  • Trakt sync: History/rating sync, public and
    personal comments, generated history note
  • In-app Notifications: new episode/season/movie alerts with a baseline date
    (install/import time)
  • Notes: auto-generated (if enabled) per-title markdown notes with frontmatter, safely
    regenerated without ever touching what you write in them
  • Analytics: genre/actor/studio breakdowns, watch trends, calendar heatmap
  • Comfort Finder: mood-based filtering (energy, attention, heaviness, tags) with presets (also a personal favorite)
  • Recommendations: TMDB discovery scored against your taste, plus comfort-based picks from your own library
  • i18n: currently supporting English and Turkish
  • Theme Support: MediaVault automatically detects themes installed in Obsidian, giving you hundreds of themes to choose from. Some themes may not be fully compatible with the plugin.

For optimal speed and reliability, your library resides in MediaVault’s structured storage, while allowing you to generate Markdown notes for any media item. These notes are fully editable, linkable, and function just like any other document in your vault.

It’s still actively being developed, so I’d love to hear what features people would find useful, as well as any bugs or workflow issues you run into. I haven’t had testers yet, so the first few versions will likely involve some bug-fixing and polish based on feedback.

If you’re interested in trying it out, I’d love to hear what you think.


A note about the current “Risky” label

Before publishing, I ran ESLint locally using the recommended Obsidian ESLint configuration, and it returned no lint errors. However, after uploading the plugin and loading it through Obsidian, the automated review reported some lint-related issues that I was not seeing in my local environment.

Because of those automated findings, the plugin is currently marked as Risky.

I want to clarify that this plugin contains no intentional malicious or unsafe code. I am currently investigating why these issues are being flagged by automated checks when they do not appear in my local ESLint configuration.

I will resolve these reports and release a fix as soon as possible.

I fixed the issue! It turned out to be a .gitignore problem.

I had a storage/ folder outside of src that I didn’t want to include in the repo, so I added storage to my .gitignore. I didn’t realize that this pattern also matched the storage folder inside src, so src/storage/ was being ignored as well.