Imported my watch history from IMDb and Letterboxd into Trakt. Everything landed as “watched today.” My stats looked ridiculous. Giant spike on a random Saturday for stuff I’d seen over years.

About 50 items. Fixing that by hand on Trakt - click each one, remove, re-add with the right date? I would’ve just lived with it lol.

The dates broke

Trakt’s importer gets titles onto your profile fine. The dates are the problem.

IMDb ratings exports don’t tell you when you watched something. Letterboxd’s watched list is the same. No date, so Trakt picks today. (Letterboxd’s diary.csv does have dates if you’re re-importing, but trakt used the other one from zip, weird)

I didn’t want release dates either. I just wanted those plays off my timeline without losing the fact that I’d seen them.

Bun script in a few minutes

Opened Cursor CLI in my terminal. Described what I wanted: find everything I marked watched today, dry run first, then set the watched date to “unknown” via the Trakt API.

Few minutes later I had a small Bun script. Fetches your history, filters by date, shows a preview, backs up the entries it touches, removes them, re-adds them with watched_at: "unknown".

Dry run first. Count and titles looked like my import. Ran it for real. Done.

The prompt

Same idea as just-share-the-prompt. Make sure to use a decent model, I used Composer 2.5 and it worked well. Paste this into Cursor CLI and dry run whatever it gives you:

I imported from IMDb/Letterboxd to Trakt and everything got stamped as watched today. First research how it works, how it can be fixed. Then Write a script that uses the Trakt API to find all plays on a given date, dry-run first, then remove and re-add them with watched_at "unknown". Ask me to save credentials in .env and back up before changing anything. Support --dry-run and --date YYYY-MM-DD. Walk me through Trakt OAuth setup (client id + secret) and print how to run the script when you're done.

Dry run, read the list, run.

Same pattern as the volume booster

Small personal annoyance I’d normally ignore because 50 manual clicks isn’t worth it. Describing the outcome to an agent? Worth five minutes.

Same deal as when I one-shotted a volume booster extension because Prime Video was too quiet. Agent handles the boring bits.

Hope this was useful :)