塑造个人品牌,发现细分市场,构建可持续盈利的产品
개인 브랜드 구축·세분화 시장 발굴·지속 가능한 수익 제품 만들기를 공유
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Create Hackathon demo videos to present projects
README 전체를 불러오는 중입니다.
README 전문 보기 ↗You built it. We'll make it impossible to ignore.
https://github.com/user-attachments/assets/e88bb7ea-4669-4621-be42-62bd48af867a
DemoForge turns a public GitHub repository into a 20–30 second vertical (9:16) promo video. It launches the app, films the real UI, writes a grounded summary and storyboard, generates cinematic scenes with Higgsfield, and cuts the result together with FFmpeg.
GitHub URL → clone → analyse (Gemini) → install → launch → discover routes → Playwright screenshots
→ summary.md + storyboard.json (validated) → Higgsfield MCP scenes → FFmpeg → final-demo.mp4
Requirements: Node 20+, FFmpeg/ffprobe on PATH, and a Chromium for Playwright (npx playwright install chromium). Docker is optional but recommended.
npm install
cp .env.example .env # add GEMINI_API_KEY and HF_CREDENTIALS (Higgsfield KEY_ID:KEY_SECRET)
npm run dev:all # web on :3000 + generation worker
Open http://localhost:3000, paste a repo URL and press Generate Demo. The worker can also run on its own (npm run dev + npm run worker).
On Windows, npm run service:install builds the app and registers a background service (a per-user Scheduled Task, started at logon) running the production web server and worker (npm run start:all), logging to outputs/service.log. Manage it with powershell -File scripts/service.ps1 status|stop|start|restart; remove it with npm run service:uninstall. Re-run service:install after pulling changes so it rebuilds.
To run one generation without the web UI:
npm run once -- https://github.com/owner/repo
npm run once -- --local tests/fixtures/launchpad # bundled fixture app, no cloning
| Variable | Purpose |
|---|---|
GEMINI_API_KEY | Gemini repository analysis, summary.md and storyboard. Without it, deterministic templates are used and labelled as such. |
GEMINI_MODEL | Defaults to gemini-3.5-flash. |
GEMINI_FALLBACK_MODEL | Optional. Retried when the main model is rate-limited or returns a server error, e.g. gemini-3.5-flash-lite. |
HF_CREDENTIALS | Recommended. Higgsfield developer API key pair from console.higgsfield.ai, as KEY_ID:KEY_SECRET. When set, it is used instead of MCP. Check it for free with npx tsx scripts/check-higgsfield.ts. |
HIGGSFIELD_MODEL | Text-to-video model path for the developer API. Default kling-video/v3.0/std/text-to-video; Seedance 2.5 is bytedance/seedance-2.5/text-to-video. |
HIGGSFIELD_API_BASE | Defaults to https://api.higgsfield.ai. |
HIGGSFIELD_END_FRAME_PARAM | Request field for the last frame when Blend screenshots is on (each animated screenshot morphs into the next). Default end_image_url. If the model rejects it, the clip is re-requested without a blend. |
HIGGSFIELD_MCP_URL | MCP fallback only. Defaults to https://mcp.higgsfield.ai/mcp. |
HIGGSFIELD_API_KEY | MCP fallback only: bearer token for the MCP server (the hosted server expects OAuth, so prefer HF_CREDENTIALS). Can also be set from /settings (stored server-side in data/secrets/). |
HIGGSFIELD_VIDEO_TOOL / HIGGSFIELD_STATUS_TOOL | Pin tool names if auto-discovery picks the wrong ones. |
HIGGSFIELD_MAX_SCENES | Cap Higgsfield calls per video (credits). Default 2. |
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET | Optional. GitHub OAuth App enabling Sign in with GitHub for private repos. Create it at github.com/settings/developers with callback URL http://localhost:3000/api/auth/github/callback. The token is stored in and only used to clone and read repo metadata. |
Secrets are only read server-side. They are never sent to the browser, never placed in Gemini prompts, and never passed to repository processes.
DemoForge ships an MCP server, so Claude Code, Claude Desktop or any MCP client can make videos for you: "make a 16:9 demo of github.com/owner/repo with a hype narrator".
It talks to the running app (DEMOFORGE_URL, default http://localhost:3000), so keep the service or npm run dev:all running.
Claude Code picks it up from .mcp.json when you open this project. For other clients, run it over stdio:
{ "mcpServers": { "demoforge": { "command": "node", "args": ["<repo>/node_modules/tsx/dist/cli.mjs", "<repo>/mcp/demoforge-server.ts"] } } }
| Tool | What it does |
|---|---|
generate_demo | Queue a video: repo URL plus the same options as the home page (aspect, length, scenes, camera, filter, blend, instructions, voice, tone). |
wait_for_job | Wait (up to 10 min per call) and return stages, notices, scenes and the video URL + local path. |
get_job / list_jobs | Inspect jobs. |
edit_scene | Change a scene's caption, length, transition, motion prompt or narration (optionally re-animate it), then re-render. |
regenerate_job / delete_job | Start over with the same settings / remove a job and its files. |
demoforge_status | Worker and integration health. |
src/
app/ Next.js UI + route handlers
api/generate POST: validate URL, enqueue job
api/jobs/[id] GET job state (polled by the UI)
api/jobs/[id]/files Serves video/screenshots/summary (Range support, traversal-safe)
api/jobs/[id]/scenes PATCH: edit a scene → re-render (optionally re-generate with Higgsfield)
api/settings/… Higgsfield token (server-side), connection test
lib/
github/ URL parsing/validation, shallow clone (symlinks disabled), repo metadata
agent/ heuristics.ts (static analysis: framework, PM, scripts, routes, env)
gemini.ts (Gemini enrichment with structured outputs; repo content treated as untrusted)
sandbox/ install + start (scrubbed env, timeouts, process-group kill) or Docker
browser/ Playwright route discovery + desktop/mobile screenshots
storyboard/ summary + storyboard (Gemini or template), Zod-validated and normalised
higgsfield/ MCP client: runtime tool discovery, schema-driven args, job polling, download
video/ FFmpeg: per-scene render, xfade transitions, typography, music, poster
storage/ file-based job store + worker heartbeat
pipeline.ts stage orchestration
workers/generation-worker.ts polls the job store and runs one job at a time
Jobs live in outputs/jobs/<id>/ (job.json, project-analysis.json, summary.md, storyboard.json, screenshots/, scenes/, final-demo.mp4, logs/). The UI polls real stage states (pending/running/completed/failed/skipped) and never shows invented percentages.
package.json. Commands are argv arrays, never shell strings.Developer API (default when HF_CREDENTIALS is set). src/lib/higgsfield/api.ts sends each generated scene to POST {HIGGSFIELD_API_BASE}/{HIGGSFIELD_MODEL} with Authorization: Key KEY_ID:KEY_SECRET, polls /requests/{id}/status and downloads video.url. Clips are requested at 4–15 s (the models' minimum) and trimmed to the scene. The key is never sent to the download host or to repo code.
MCP fallback. Used only when HF_CREDENTIALS is empty.
Higgsfield's hosted MCP tool catalogue varies, so DemoForge does not hard-code tool names. On each run it lists the server's tools and:
HIGGSFIELD_VIDEO_TOOL) and a job-status tool (or HIGGSFIELD_STATUS_TOOL).9:16 aspect, nearest allowed duration, defaults for other required fields).Settings → Test connection shows which tools were discovered. The official hosted server documents OAuth sign-in. DemoForge sends the configured token as Authorization: Bearer …. Whether a static token is accepted depends on your Higgsfield account and server, so check it with Test connection.
Repository code is untrusted. Current measures:
core.symlinks=false, no hooks, size limit.HOME, timeouts, and process-group cleanup.DEMOFORGE_SANDBOX=docker runs install and start in a container with memory, CPU and pid limits and no-new-privileges, publishing only to 127.0.0.1.This is a hackathon prototype, not a production-grade sandbox. Local mode is not a security boundary, so use docker mode (ideally on a dedicated VM with restricted egress) for repositories you don't trust.
npm run typecheck && npm run lint && npm test
npm run once -- --local tests/fixtures/launchpad
npm test covers URL validation, path traversal, storyboard validation and normalisation, README parsing, Higgsfield tool selection and argument building. It also runs integration tests of both Higgsfield clients (developer API and MCP) against local mock servers (test-only) covering submit → poll → download.
summary.md, validated storyboard.json, FFmpeg assembly with transitions, typography and musicFonts: Inter (SIL OFL 1.1) and JetBrains Mono (Apache 2.0), bundled in assets/fonts/.
data/secrets/github.jsonELEVENLABS_API_KEY | Optional. Enables the Voiceover toggle: one narration line per scene via ElevenLabs text-to-speech, mixed over the music. ELEVENLABS_VOICE_ID (default George, JBFqnCBsd6RMkjVDRZzb) and ELEVENLABS_MODEL (default eleven_multilingual_v2) are optional. |
DEMOFORGE_SANDBOX | local (default) or docker. |
DEMOFORGE_DOCKER_IMAGE | Image for docker mode. Default node:22-bookworm. |
MUSIC_PATH | Optional royalty-free track. Otherwise a procedural ambient bed is synthesised. |
WORKSPACE_ROOT, OUTPUT_ROOT, DATA_ROOT, FFMPEG_PATH, FFPROBE_PATH | Paths. |