openjutsu
One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.
Turn photos of one person into a grow-up video. Your browser finds the face, lines up the eyes, sorts by date and morphs each photo into the next, with music. Free, no upload, no account.
MediaJavaScript · HTMLGitHub @theguysaccountOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Grow-Up Reel: turn photos of one face into a morphing grow-up video, privately in your browser. Face alignment, morph, captions and music on-device; nothing uploaded.
Taken from the repository README
Loading the full README.
Read the full README ↗Live: https://theguysaccount.github.io/ai-memory-videos/ · Screens: desktop and phone · Example reel: Rembrandt, 22 to 63
Turn photos of one person into a grow-up video. You add photos from any years, and the browser does the rest:
Nothing is uploaded, and there is no server. A Content Security Policy on every page stops the page from connecting to any other site, so the browser enforces the privacy promise rather than taking it on trust.
| Step | Where | Notes |
|---|---|---|
| Read the capture date | site/assets/js/exif.js, dates.js | EXIF from JPEG, HEIC/AVIF, PNG and WebP; dates in file names (IMG_20190512_…, 1974 school.jpg); manual dates and years |
| Find faces | site/assets/js/faces.js | MediaPipe face detector (full range, finds small faces in group shots), then the 478-point face landmarker on a crop around the chosen face. Faces are located, never identified. |
| Line up the eyes | site/assets/js/align.js | Similarity transform (scale, rotation, shift) that puts both eye centres on fixed points |
| Morph | site/assets/js/renderer.js | WebGL2: Delaunay mesh over ~114 landmarks, two rings and a border; triangles warp while the photos crossfade. Blurred fill from mipmaps. |
| Music | site/assets/js/music.js | Chord progressions arranged for synth voices and rendered with OfflineAudioContext; no samples |
| Encode | site/assets/js/encoder.js | WebCodecs into MP4 (H.264 + AAC, or Opus) via mp4-muxer; VP9/WebM if H.264 isn't available; MediaRecorder as a real-time fallback |
| UI | site/assets/js/app.js, site/partials/tool.html | Consent before any face is looked for; review grid of aligned faces; per-photo editor (choose a face, tap the eyes, set the date or year) |
Pages are generated by scripts/build.mjs from site/pages/*.html (landing pages around the tool) and content/guides/*.md (guides, published on their publish: date).
Node 20 or newer. No API keys.
npm ci
node scripts/build.mjs # → dist/ (BASE_URL defaults to http://127.0.0.1:4317)
node scripts/serve.mjs dist 4317 # open http://127.0.0.1:4317/
npm test # unit + build tests: EXIF parsing, dates, captions, alignment, mesh, timeline, music, pages, links
node scripts/selftest.mjs # headless Chrome on the built site: pages, the sample reel, the upload path, no off-site requests
node scripts/selftest.mjs --url https://theguysaccount.github.io/ai-memory-videos/ # the same against the live site
node scripts/screens.mjs # screenshots → docs/screens/
CHROME=/path/to/chrome picks the browser binary. The self-test needs Google Chrome or Chromium.
Every push to main runs .github/workflows/pages.yml. It runs the tests, builds, runs the headless end-to-end test on the build and deploys to GitHub Pages only if everything passed. It then submits the pages to IndexNow. The same workflow runs every Monday to publish guides whose date has come. See OPERATIONS.md for every automated job, how each fails safe, and the optional keys (custom domain, counts, money).
site/assets/vendor/ holds MediaPipe Tasks Vision 0.10.35 (Apache-2.0), its face models, mp4-muxer and webm-muxer (MIT). See site/assets/vendor/NOTICE.md for sources and why 0.10.35 is pinned: later 1.x releases add usage logging to a Google endpoint.
Code: MIT (LICENSE). Sample paintings: public domain (sources on the Rembrandt page). Vendored libraries keep their own licences.