[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93279":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},93279,"marketing-studio","ucsandman\u002Fmarketing-studio","ucsandman","Agent-driven marketing studio for Claude Code: one \u002Fmarketing command renders your product's full launch asset suite (logo reveal, demo, launch video, social clips, OG assets)","",null,"JavaScript",130,20,1,0,16,53.57,"MIT License",false,"main",true,[23,24,25,26,27,28],"ai-agents","blender","claude-code","marketing","remotion","video-generation","2026-07-22 04:02:08","# Marketing Studio\n\nAn agent-driven marketing studio for Claude Code. You type `\u002Fmarketing` in your product's repo; the agent onboards your brand, films your app, renders a full marketing asset suite in this engine, and copies the finished files back to you.\n\n![Animated OG loop rendered by the studio](examples\u002Fpaperroute\u002Freadme.gif)\n\n*An animated OG loop the studio rendered for a real product, from brand tokens alone. More in [`examples\u002F`](examples\u002F).*\n\n## The one command\n\n```\n\u002Fmarketing\n```\n\nOne run produces, in order:\n\n| # | Asset | Skill behind it |\n|---|-------|-----------------|\n| 1 | Logo reveal (Blender + Remotion) | `\u002Flogo-reveal` |\n| 2 | Product demo with camera zooms and cursor (Playwright capture) | `\u002Fproduct-demo` |\n| 3 | 30 to 90 second launch video composing demo, logo, and copy | `\u002Flaunch-video` |\n| 4 | Voiceover and music scored to the launch video (ElevenLabs) | `\u002Faudio-track` |\n| 5 | Social clips per platform (X, LinkedIn, TikTok) | `\u002Fsocial-clip` |\n| 6 | OG image, animated OG loop, README GIF | `\u002Fog-assets` |\n\nThe order is deliberate: the cheapest composition renders first so brand-token bugs surface before the expensive assets, the demo is filmed once and its footage feeds everything downstream, and audio is scored only after the launch video is picture-locked. The run keeps a manifest on disk, so a died session resumes where it stopped instead of starting over.\n\nAround those assets, the pipeline adds:\n\n- **A derived content brief.** The agent reads your product repo (README, routes, landing page) and synthesizes the story — hooks, ranked benefit-led features, per-act narration, per-platform copy — into a validated `brief.json` that every builder consumes. You approve the whole story on a storyboard page before anything renders.\n- **A copy linter.** Every generated line is gated for em dashes, hype, and AI-slop vocabulary before it can reach a render.\n- **A film grade and per-brand motion personality.** Grain, vignette, and bloom tuned per brand, and a `motion` token block so each brand's choreography feels like itself.\n- **An export matrix.** The picture-locked launch video and social clips fan into 16:9, 9:16, 1:1, and 4:5 through responsive layout (not crops), with burned-caption variants for muted autoplay and SRT\u002FVTT sidecars.\n- **Mission Control.** A local click-to-approve gallery: watch assets land, review act-boundary contact sheets before the expensive render, approve or request a redo with a note, and the run reacts — no terminal required.\n- **Designed sound.** Whooshes on act cuts, ticks on feature reveals, and a riser into the CTA, generated once as a shared SFX library and mixed under the voiceover automatically.\n- **Paste-ready post kits and a footage cache.** Every platform gets a folder with the right-aspect video, a lint-gated caption, alt text, and a posting checklist; the kit root also carries `manifest.json`, a machine-readable index that launch-engine reads to auto-attach videos to X and LinkedIn posts. Unchanged product UIs are never re-filmed thanks to content-hash caching of capture and Blender staging.\n\nEach asset also works standalone: run `\u002Flogo-reveal`, `\u002Fproduct-demo`, `\u002Flaunch-video`, `\u002Faudio-track`, `\u002Fsocial-clip`, or `\u002Fog-assets` on its own from any repo.\n\n## Example output\n\nEverything below was produced by `\u002Fmarketing` runs against two real products, unedited. Turn the sound on: the voiceover and music are generated too.\n\n### noban.gg (CS2 skin arbitrage dashboard)\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F7d184b12-1afc-4129-a4f0-87a33da986e3\n\n| File | Asset |\n|------|-------|\n| [`launch.mp4`](examples\u002Fnoban\u002Flaunch.mp4) | 60s launch video with generated voiceover and music |\n| [`demo.mp4`](examples\u002Fnoban\u002Fdemo.mp4) | Product demo with measured camera zooms ([preview still](examples\u002Fnoban\u002Fdemo-still.png)) |\n| [`logo-reveal.mp4`](examples\u002Fnoban\u002Flogo-reveal.mp4) | Blender draw-on logo reveal |\n| [`social-launch.mp4`](examples\u002Fnoban\u002Fsocial-launch.mp4) | X\u002FLinkedIn announcement clip |\n| [`og.mp4`](examples\u002Fnoban\u002Fog.mp4) | Animated OG loop |\n\n### paperroute.gg (wallpaper ad network)\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F1bf89936-4f8b-405a-b507-5f051ae18ef8\n\n| File | Asset |\n|------|-------|\n| [`launch.mp4`](examples\u002Fpaperroute\u002Flaunch.mp4) | Launch video with audio |\n| [`demo.mp4`](examples\u002Fpaperroute\u002Fdemo.mp4) | Product demo |\n| [`logo-reveal.mp4`](examples\u002Fpaperroute\u002Flogo-reveal.mp4) | Blender logo reveal |\n| [`social-x.mp4`](examples\u002Fpaperroute\u002Fsocial-x.mp4), [`social-linkedin.mp4`](examples\u002Fpaperroute\u002Fsocial-linkedin.mp4), [`social-vertical.mp4`](examples\u002Fpaperroute\u002Fsocial-vertical.mp4) | Per-platform social clips |\n| [`og.png`](examples\u002Fpaperroute\u002Fog.png), [`og.gif`](examples\u002Fpaperroute\u002Fog.gif), [`og.mp4`](examples\u002Fpaperroute\u002Fog.mp4) | OG image, loop, and video |\n| [`readme.gif`](examples\u002Fpaperroute\u002Freadme.gif) | README-sized GIF (the one at the top of this page) |\n\n## How it works\n\n- **One engine, many brands.** All rendering happens in this repo, never in your product's repo. Finished assets are copied out at the end.\n- **Remotion is the backbone.** Every final video renders through Remotion compositions in `studio\u002F` (SocialClip, ProductDemo, LogoReveal, LaunchVideo, AnimatedOG).\n- **Brands are data.** `brands\u002F\u003Cid>.json` holds your product's tokens (13 colors, 3 fonts, tagline, voice rules), zod-validated. Templates resolve `getBrand(brandId)` and never hardcode brand values, so a new product is a JSON file and a logo mark component, not a fork.\n- **Feeders produce raw material.** Playwright records your running app for demos, headless Blender renders 3D logo reveals, ElevenLabs generates voiceover and music, and ComfyUI can add AI backdrops. Every feeder degrades cleanly when its dependency is missing.\n- **The knowledge lives in the skills.** The `skills\u002F` directory ships the Claude Code skills that operate this repo, including the hard-won gotchas in `docs\u002FPLAYBOOK.md` (camera math, seamless-loop rules, Blender API traps) so the agent does not re-derive them.\n\n## Quick start\n\nRequirements: [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code), Node 20+, Python 3.10+. Optional: Blender (3D logo reveals), an ElevenLabs API key (audio), ComfyUI (AI backdrops); everything falls back cleanly without them.\n\n```bash\ngit clone git@github.com:ucsandman\u002Fmarketing-studio.git\ncd marketing-studio\ncd studio && npm install && cd ..\ncp .env.example .env            # set BLENDER_PATH \u002F ELEVENLABS_API_KEY if you have them\nnode scripts\u002Finstall-skills.mjs # installs \u002Fmarketing and friends into ~\u002F.claude\u002Fskills\npython launch.py --check        # verifies the toolchain\n```\n\nThen, from your product's repo:\n\n```bash\nclaude\n> \u002Fmarketing\n```\n\nThe agent asks one batched round of questions (brand, destination, audio, platforms, checkpoint mode) and runs the whole pipeline. If your brand is new, it derives tokens from your repo's design system (DESIGN.md, Tailwind config, CSS variables) and only asks for what it cannot infer.\n\n## The skills\n\n| Skill | What it does |\n|-------|--------------|\n| `\u002Fmarketing` | The full pipeline: sequencing, gates, run manifest, resume, final QA and delivery gallery |\n| `\u002Flogo-reveal` | Animated logo reveal video (Blender draw-on choreography composited in Remotion) |\n| `\u002Fproduct-demo` | Screen-Studio style demo: films your running app, adds measured camera zooms and cursor |\n| `\u002Flaunch-video` | Hero announcement video composing demo footage, logo reveal, and copy |\n| `\u002Faudio-track` | Voiceover and music for any video, or standalone audio |\n| `\u002Fsocial-clip` | Short feature clips sized per platform |\n| `\u002Fog-assets` | OG image, animated OG loop, README GIF, social cards |\n| `marketing-studio` | Shared background skill: engine workflow, brand onboarding, non-negotiables |\n\nThe pipeline's supporting skills ship too, so nothing in the run dangles:\n\n| Skill | What it does |\n|-------|--------------|\n| `\u002Fpolish` | Final UI quality pass (alignment, spacing, states, micro-detail) before the demo is filmed |\n| `\u002Ffrontend-verify` | Headless route verification: console errors, failed requests, text assertions |\n| `\u002Fde-vibe` | Removes the AI-generated fingerprint (security tells, slop copy, generic defaults) before anything ships |\n| `\u002Fship` | Verify, docs, secrets scan, commit, push ritual |\n| `\u002Flaunch` | Announcement drafts per channel (X, LinkedIn, Show HN, email) with approval gates |\n\n`scripts\u002Finstall-skills.mjs` copies all of them into `~\u002F.claude\u002Fskills` and rewrites the engine path to wherever you cloned this repo. It never overwrites a skill you have symlinked. Two optional plugins deepen the UI-polish phase if you have them (`impeccable` and `frontend-design`); without them the pipeline films your app as-is.\n\n## Repo layout\n\n```\nbrands\u002F            per-product brand tokens (zod-validated JSON)\nstudio\u002F            Remotion project: all final video compositions\nfeeders\u002Fblender\u002F   headless bpy scenes (3D logo reveals)\nfeeders\u002Fcapture\u002F   Playwright recorder (product demos)\nfeeders\u002Faudio\u002F     ElevenLabs client (voiceover + music)\nfeeders\u002Fcomfy\u002F     ComfyUI client (optional AI backdrops)\nskills\u002F            the Claude Code skills that drive all of this\nexamples\u002F          real output: full asset suites for two shipped products\nscripts\u002F           props builders, staging, statics, smoke, copy linter, brief\n                   gatherer, storyboard board, export matrix, captions, thumbs,\n                   post kit, contact sheets, footage cache, SFX library,\n                   Mission Control review server\nprops\u002F             generated render props (edit via their builder scripts only)\ndocs\u002FPLAYBOOK.md   the operational reference: engine map, onboarding, gotchas\nlaunch.py          single-command health check + Remotion Studio\n```\n\n`out\u002F`, `assets\u002F`, and `studio\u002Fpublic\u002F*\u002F` are build products and stay untracked.\n\n## Manual controls\n\nEverything the skills do can be run by hand:\n\n```bash\npython launch.py                    # health checks + Remotion Studio\nnode scripts\u002Fsmoke.mjs              # frame-0 still of every composition\ncd studio && npx remotion render LogoReveal ..\u002Fout\u002F\u003Cbrand>\u002Flogo.mp4 \\\n  --props='{\"brandId\":\"\u003Cbrand>\",\"cta\":\"...\"}'\nnode scripts\u002Flint-copy.mjs props\u002F\u003Cbrand>-launch.json   # no-slop copy gate\nnode scripts\u002Frender-matrix.mjs \u003Cbrand> --stills-only   # 16:9\u002F9:16\u002F1:1\u002F4:5 fan-out\nnode scripts\u002Fbuild-captions.mjs \u003Cbrand> --check        # SRT\u002FVTT sidecars\nnode scripts\u002Fmission-control.mjs \u003Cbrand>               # click-to-approve run console\n```\n\n`docs\u002FPLAYBOOK.md` has the full engine map: every feeder, builder script, and render command, plus the verified gotchas.\n\n## Adding a brand\n\n1. `brands\u002F\u003Cid>.json` copying the shape of an existing brand (colors, fonts, tagline, voice rules).\n2. Register it in `studio\u002Fsrc\u002Flib\u002Fbrand.ts` and add a mark component in `studio\u002Fsrc\u002Fbrands\u002F`.\n3. `cd studio && npm test` validates the schema.\n\nThe `\u002Fmarketing` skill does all of this for you from your product repo's design system; the steps above are the manual path. Details in `docs\u002FPLAYBOOK.md`.\n\n## Verification\n\n```bash\npython launch.py --check   # toolchain health\nnode scripts\u002Fsmoke.mjs     # renders frame 0 of every composition; must stay green\ncd studio && npm test      # brand schema tests\n```\n\nEvery asset prop is nullable with a placeholder, so the smoke test passes on a clean clone with no captures, no Blender, and no API keys.\n\n## License\n\nMIT\n","这是一个基于AI Agent的自动化营销内容生成平台，专为产品发布场景设计。它通过单条命令`\u002Fmarketing`，自动解析代码仓库中的品牌与产品信息，依次生成Logo动效、产品演示录屏、多规格发布视频、配音配乐、平台适配短视频及OG图像等全套营销资产；核心技术融合Blender三维渲染、Remotion动态视频合成、Playwright网页录制与ElevenLabs语音合成，并内置内容策划、文案校验、品牌动效人格化及本地可视化审批工作流。适用于SaaS初创团队、开发者工具产品快速启动阶段的标准化营销素材批量产出。",2,"2026-07-15 02:30:06","CREATED_QUERY"]