Every headset gallery has the same problem: clips pile up with names like
video_2847.mp4, YouTube uploads are all-or-nothing, and there's no way to just
quietly stage everything unlisted until you're ready. Contact Sheet is the small
pipeline built to fix that — for one person, on one machine, with nothing sent anywhere you
didn't choose.
Pull
Finds clips and stills in your Meta Quest gallery it hasn't seen before. Nothing is deleted or reorganised at the source — read-only, every time.
Review
A picture-sheet page opens so you can leave out what you don't want — other content, accidental recordings — before anything downloads.
Rename
A clean, date-based convention you control. No auto-generated gibberish, no symbols, nothing that leaks what's actually in the file.
Publish (carefully)
Clips upload to YouTube as unlisted — always. Going public is a
separate command that makes you type PUBLISH. Stills route to your own cloud
storage instead, since YouTube was never built to show off a photo.
What the picture sheet looks like
A stand-in for the real review page — yours will show your own thumbnails.
The unlisted rule is load-bearing
Every upload is unlisted by default, and the script refuses to run if the reference
video it copies details from doesn't contain your chosen notice text. That check exists so a
clip can never go out without it — not a setting you can forget to tick, a wall it won't
climb over. Publishing is its own command, and it won't move without you typing
PUBLISH in full.
Get it
Python, your own Chrome, and Google's free YouTube API tier. Twenty to thirty minutes to set up, once.
github.com/DreDarkroom/contact-sheet