Ideas in. Attention out. A private, self-hosted studio for planning, producing, and exporting short-form social videos without paid APIs.
SideClip turns a campaign brief into a 30-idea content plan, helps you refine each hook, and renders vertical videos directly in your browser. Accounts, projects, uploads, and optional local AI stay on infrastructure you control.
Small teams need a consistent stream of social video, but subscriptions, editing timelines, and blank-page anxiety slow down the work. SideClip provides a useful production loop without introducing another monthly bill:
- Describe the product, audience, and goal.
- Generate a month of story, education, and promotion ideas.
- Edit the hook, supporting copy, media, color, and voiceover.
- Export a 9:16 WebM, captions, and a ready-to-post caption pack.
| Capability | Included |
|---|---|
Secure local accounts with salted scrypt hashes |
✅ |
| Persistent private projects and media library | ✅ |
| Automatic device drafts, account autosave, and last-project restore | ✅ |
| Built-in zero-cost content planning engine | ✅ |
| Brand voice profiles and brand-banned word enforcement | ✅ |
| Goal-driven calls to action across the 30-day arc | ✅ |
| Product-specific hook angles and publish-readiness checks | ✅ |
| Six distinct procedural video styles | ✅ |
| Complete hook-aligned social captions | ✅ |
| Plan-wide readiness summary with per-post scores | ✅ |
| Optional private AI through local Ollama | ✅ |
| Uploaded image and video backgrounds | ✅ |
| Recorded/uploaded voiceovers embedded in exports | ✅ |
| Browser-rendered 1080×1920 (9:16) WebM video | ✅ |
| Full-quality content generation even when offline | ✅ |
| Persistent light and dark themes | ✅ |
| SRT captions, posting packs, and device sharing | ✅ |
| Installable PWA and offline core interface | ✅ |
| Docker deployment, rate limiting, and security headers | ✅ |
Requires Node.js 20+. There are no runtime dependencies, so no install step is required.
git clone https://github.com/SubchiBeats/sideclip.git
cd sideclip
npm startOpen http://localhost:4173.
On Windows, you can also double-click run.ps1.
SideClip works without an AI service. For richer ideation, install Ollama, pull a free local model, and provide its name:
ollama pull llama3.2:3b
$env:OLLAMA_MODEL="llama3.2:3b"
npm startPrompts stay between SideClip and your configured Ollama server.
On Windows, after installing Ollama and pulling the model once, you can also
double-click run-local-ai.ps1.
SideClip treats the local model like a copywriter working with an editor: ideas are requested in small schema-constrained batches, every idea is scored by the publish-readiness reviewer, and failed drafts are sent back once with the specific feedback ("the caption did not deliver the promised 3 signs") before falling back to the built-in generator for any slot that still does not pass. Brand voice, campaign goal, and brand-banned words are part of every prompt. A full 30-post run on a small CPU model typically takes one to two minutes.
SideClip automatically keeps an unsigned-in draft in the visitor's browser. Signed-in campaigns are also autosaved to the private SideClip server and the last opened campaign is restored on return. Sign-in sessions are stored as hashed tokens and remain valid through normal server restarts for up to 30 days.
Browser / PWA
├─ campaign planner and clip editor
├─ shared generator module (works fully offline)
├─ Canvas + MediaRecorder 1080×1920 video renderer
├─ microphone voiceover capture
└─ captions, posting packs, and Web Share
│
▼
Zero-dependency Node server
├─ HTTP-only sessions and scrypt password hashes
├─ project and media ownership checks
├─ atomic local JSON persistence
├─ constrained private uploads
└─ shared generator module or optional Ollama adapter
generator.js is one shared module: the server uses it for /api/generate and
the browser loads the same file, so offline (PWA) plans match server plans
exactly and publish-readiness scoring can never drift between the two.
SideClip intentionally avoids a framework, external database, and runtime npm dependencies. This keeps self-hosting straightforward and the operating cost at zero on hardware you already own.
docker compose up --build -dThe named sideclip-data volume stores accounts, projects, and uploads.
npm testTests cover frontend contracts, offline generation, salted password verification, authentication, project persistence, private uploads, cross-origin write protection, data export, account deletion, unique post copy, hook relevance, promised-list delivery, and collision-proof video layout.
Run SideClip behind a TLS reverse proxy such as Caddy or nginx. Persist and
back up data/. When HTTPS is active, use:
HOST=0.0.0.0 PORT=4173 COOKIE_SECURE=true npm startSee SECURITY.md before exposing an installation publicly.
The default app is private and free to operate on hardware you already own. Public hosting, domains, backups, and large-model compute can still cost money depending on your deployment.
Direct automated social posting is intentionally not included. Social platforms require user-owned developer credentials, app review, and changing API permissions. SideClip creates videos, captions, posting packs, and uses the device share sheet instead.
Contributions are welcome. See CONTRIBUTING.md for the development workflow and project principles.
MIT — see LICENSE.