We have released VideoLoop, the mechanism behind the “video digest window” on the RumiCar top page, as open source software. It is the sibling project of PhotoStrip, which we released a few days ago. Communities, clubs, schools and organizations that want to showcase their activities on video are welcome to use it — and so is everyone else, including commercial use in company websites and products (MIT license).
GitHub: RumiCar-group/RumiCar-VideoLoop (documentation in both English and Japanese)
The problem we wanted to solve
We film every event and have published about 100 videos on our YouTube channel. Our top page embedded one representative video with a play button — and almost nobody presses play. A hundred videos of real activity were effectively invisible.
An autoplaying embedded player would fix that, but at a hidden price: it streams on the visitor’s data plan for as long as the page is open, watched or not. We had just built PhotoStrip around the principle that visitors only pay bandwidth for the attention they choose to spend, and we didn’t want to break it for video.
How we solved it
The idea is to pre-render the first impression. From each video we automatically generate an 8-second, silent teaser clip (~230 KB — the size of two photos), host it ourselves, and play the clips one after another in a small fixed window, in a fresh random order on every visit. A click jumps to the full video on YouTube, so views are counted where they belong.
Bandwidth is strictly “only while watching”: not a byte is fetched until the window scrolls into view, and playback stops when it scrolls out or the tab is hidden. Measured: about 700 KB for 20 seconds of watching. For visitors with “reduce motion” or data-saver enabled, nothing autoplays — they see a poster and a start button.
Publish a new video and the nightly job adds its teaser by morning. Make a video private and its teaser disappears automatically — a video you withdrew must not keep playing on your site.
The README includes our failures, on purpose
As with our other projects, the README documents the thinking process, not just the API: the four options we considered and why we rejected three, an honest note about YouTube’s terms of service, and the traps we actually stepped in — how “on error, skip to the next clip”, an obviously correct design, turned into an infinite barrage of 404 requests when combined with video deletion and page caches; how one slow video could crash the nightly job at the same spot every night; how CSS specificity made our “tightened margins” a lie, twice. What three rounds of adversarial review found before release is written up separately in the RETROSPECTIVE.
Zero dependencies: one JS file, one CSS file, and a Python generator tool that works from local video files or from your own YouTube channel. Recipes for static HTML, PHP and WordPress are included. You can see it running under the introduction video on this site’s top page.
This development was carried out by an AI (Claude) under human supervision and approval. Questions and suggestions are welcome on GitHub Issues, in English or Japanese.

