a GUI workflow which allow you to produce clips from raw long format content, by just a few clicks
  • Python 98%
  • Shell 2%
Find a file
planz 73eb34c00a feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI
- Implement centralized cross-platform path resolver and binary detection
- Add asymmetric Ed25519 licensing system with HWID node-locking
- Add native desktop window shell with pywebview and PyInstaller spec
- Revamp dashboard UI with Obsidian & Amber theme and 3-step workflow stepper
- Remove legacy Plan Z references and introduce customizable brand rules

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-12 18:45:08 +03:30
assets .desktop chromium app added. and a bunch of bug fixes. 2026-09-26 20:04:59 +03:30
bin feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
brand feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
config feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
keys feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
lib feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
resources feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
shots feat(dashboard): browser UI over the full week plus intake/finish runners 2026-09-26 18:49:59 +03:30
tests feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
.env.example docs: add README and env example; ignore transient files 2026-09-26 18:49:59 +03:30
.gitignore feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
build_dist.py feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
ClipByClick.desktop .desktop chromium app added. and a bunch of bug fixes. 2026-09-26 20:04:59 +03:30
clipbyclick.spec feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
desktop.py feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
Dockerfile.build_windows feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
PACKAGING_PROMPT.md docs: add packaging and commercialization prompt specification 2026-10-09 03:03:59 +03:30
README.md docs: add README and env example; ignore transient files 2026-09-26 18:49:59 +03:30
requirements.txt feat(packaging,licensing,ui): add desktop distribution, Ed25519 licensing, and Obsidian Minimal UI 2026-10-12 18:45:08 +03:30
run_app feat(auth,thumbnail,gallery): add Google Antigravity OAuth, interactive AI crop, and editable copy 2026-10-09 15:10:14 +03:30
run_finish feat(footage): customizable folder naming and desktop footage staging center 2026-09-29 15:28:42 +03:30
run_intake feat(footage): customizable folder naming and desktop footage staging center 2026-09-29 15:28:42 +03:30

ClipsByClicks (Plan Z)

Raw long-form footage in, reviewed short clips out. Built for Plan Z — a Persian "real-life school" for Iranian Gen Z — turning weekly recordings into titled, captioned, thumbnailed vertical shorts.

Pipeline

Step Script In → Out
1 Listen bin/01_listen.py work/<week>/raw/ → transcript.json (whisper, stable seg_ids)
2 Pick bin/02_pick.py transcript.json → candidates.json (LLM sees seg_id+text only, never timestamps)
3 Review dashboard (bin/dashboard.py) tap yes/no per candidate → decisions.json + approved.json
4 Cut bin/04_cut.py approved.json → roughcuts/<week>/<id>.mp4 (uncropped, source aspect)
5 Label bin/05_label.py approved clip → labels/<week>/<id>/copy.json + thumb.jpg

Every LLM string passes a deterministic brand gate (lib/brandcheck.py, parsed live from brand/planz-brand.md) with one repair retry — violations are dropped, never guessed. Steps are idempotent: re-runs skip finished work via checksums and output validation.

Quickstart

cp .env.example .env          # add API keys
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
./run_intake 2026-W39          # transcribe + pick, then review in the browser
python bin/dashboard.py        # http://127.0.0.1:8420 (loopback only)
./run_finish 2026-W39          # cut roughcuts + labels for approved picks

Needs on the machine: ffmpeg, whisper.cpp binary + model (paths in config/settings.yaml), and the OPENCODE_GO_API_KEY (or GEMINI_API_KEY) the configured provider uses. Gemini traffic goes through the proxy in config/settings.yaml (gemini.proxy).

Layout

bin/        01_listen, 02_pick, dashboard, 04_cut, 05_label, run_intake/finish
lib/        clips (ffmpeg), llm (JSON client), brandcheck, thumbnail, progress
config/     settings.yaml — paths, models, render + thumbnail grade
brand/      planz-brand.md — voice, NEVER-SAY list, citable facts
assets/     bundled Vazirmatn font for thumbnails
shots/      dashboard screenshots
work/ roughcuts/ labels/   per-week outputs (git-ignored)

copy.json holds the finished title, caption, ≤8 hashtags, and thumbnail headline — per platform ceilings enforced in code. Thumbnails render from the source frame with a fixed grade, so the same clip always yields the same pixels.