Reconstructing a Mixbook movie from its data API with FFmpeg

https://news.ycombinator.com/rss Hits: 1
Summary

Reconstructing a Mixbook Movie with ffmpeg Mixbook emailed me to say my animated project was ready: a short movie built from my photos and set to music. I could watch it in the browser or order a printed copy. I could not download it. There is no download button, and Mixbook's help docs say one does not exist. I wanted the file. Getting it became a small reverse-engineering exercise, because the reason there's no download button is more interesting than a missing feature. There is no video file to download. Your browser builds the movie frame by frame every time you press play. One caveat up front: this was my own project, reached through my own shareable view link. Everything below is about getting your own memories out of a service that offers no export. None of it touches anyone else's content. The First Dead End: No File in the Page The obvious move is to open the project page and look for a video URL in the HTML. That fails for two reasons. First, the editor URL is private. Fetching it without a logged-in session returns 403 Forbidden: https://www.mixbook.com/memories/edit?pid=123456 → 403 Second, the public share link contains no video either. The shareable preview URL carries a view key (vk), the access token for read-only viewing: https://www.mixbook.com/memories/preview?pid=123456&vk=YOUR_VIEW_KEY That page loads fine (HTTP 200, ~110 KB), but grepping the raw HTML for .mp4, .m3u8, videoUrl, or anything media-shaped returns nothing. It's a JavaScript application shell. The browser builds the video after the page boots and makes its API calls. So I left the HTML and went after the app's code. Following the View Key Into a Second App The preview page's embedded config listed a handful of service hosts. One stood out: { "baseUrl": "https://memories.mixbook.com" } memories.mixbook.com is a separate Next.js application, Mixbook's "Memory Explorer." Requesting the same path against it, instead of www, returns a real route: https://memories.mixbook.com/memories/pre...

First seen: 2026-05-27 21:58

Last seen: 2026-05-27 21:58