Pipeline brain: Claude feature-detection + media pipeline (animated graphics, ElevenLabs script, Suno music)#1
Merged
Conversation
… brain
Port the qaaas QA feature-detection flow into makedemo and extend it for
marketing demo videos: crawl the whole site, let Claude pick the demo-worthy
features (structured output), screen-record each feature, let Claude write one
cohesive voiceover script + a surreal/metal suno.com music prompt, synthesize
the voiceover (ElevenLabs), and assemble motion graphics + recorded clips +
user-uploaded clips + a ducked Suno background track into the final MP4.
Designed as a drop-in for the parallel web-upload shell (feat/web-app): same
job + emit(type, data) contract, exported runPipeline(job, emit).
- src/pipeline/{crawl,feature-detect}: same-origin BFS crawl + Claude feature
detection (claude-opus-4-8, adaptive thinking, zod structured output), with a
heuristic fallback when no ANTHROPIC_API_KEY.
- src/pipeline/feature-recorder: Playwright recordVideo per feature.
- src/pipeline/script-writer: cohesive VO script + suno.com surreal/metal prompt.
- src/pipeline/voiceover: ElevenLabs TTS (reuses existing audio generator).
- src/pipeline/{timeline,graphics,music,assembly}: timeline math, ffmpeg motion
graphics (animated cards + lower-thirds; optional Remotion backend), suno song
looped + sidechain-ducked under the voiceover, final ffmpeg assembly.
- 13 unit tests for the pure pieces (timeline, ducking filter, URL globs).
- docs/PIPELINE.md documents the architecture + web integration contract.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ks, drawtext escaping Adds 17 tests (13 -> 30 total): - schemas: zod validation of feature/feature-detection/demo-script shapes - detectFeatures heuristic path (no ANTHROPIC_API_KEY): maxFeatures, skips login/privacy, de-dupes paths, required shape - writeScript heuristic path: intro/outro bookends, every feature once, every uploaded clip placed with a valid index, non-empty surreal/metal suno prompt - escapeDrawtext: colon/percent/backslash/apostrophe/null handling Exports escapeDrawtext from graphics.js for testing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ages/core) PR #2 already merged this pipeline into master under packages/core/src/pipeline. Resolved the conflicts so PR #1 adds NO duplicate code: - dropped the root src/pipeline copy (canonical lives in @makedemo/core) - took master's test/pipeline (they import packages/core) and root package.json - kept only the unique bits: scripts/run-pipeline.js (a standalone local runner, now importing @makedemo/core) + the `pipeline` npm script + .env.example (ANTHROPIC_API_KEY / MKDEMO_REMOTION). 30 pipeline tests pass; runner resolves runPipeline from packages/core. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
Author
|
Rebased/merged onto To avoid a duplicate root copy, this PR now reduces to the non-redundant bits only:
Net diff vs master is 3 files; no duplicated pipeline/tests. (If you'd rather not keep a separate local runner, this PR can simply be closed — #2 already carries everything.) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Ports the qaaas QA feature-detection flow into makedemo and extends it for marketing demo videos. This is the pipeline brain half of the makedemo upgrade — it pairs with the web-upload UI being built in parallel on
feat/web-app(samejob/emit(type, data)contract, so it's a drop-in).Crawl the site → Claude picks demo-worthy features → screen-record each (Playwright) → Claude writes one cohesive voiceover script + a surreal/metal suno.com music prompt → synthesize VO (ElevenLabs) → assemble motion graphics + recorded clips + user-uploaded clips + a ducked Suno track →
demo.mp4.Stages (
src/pipeline/)crawl.js(same-origin BFS, optional login) +feature-detect.js(Claudeclaude-opus-4-8, adaptive thinking, zod structured output)feature-recorder.js(PlaywrightrecordVideoper feature)script-writer.js(cohesive VO script + paste-ready suno.com surreal/metal prompt)voiceover.js(ElevenLabs; reuses existingsrc/audio/generator.js)timeline.js+graphics.js(ffmpeg motion cards + lower-thirds; optional Remotion) +music.js(loop + sidechain-duck Suno song under VO) +assembly.jsOrchestrated by
runPipeline(job, emit)insrc/pipeline/index.js. Full architecture + web integration contract indocs/PIPELINE.md.The 4 product decisions
feat/web-appshell (job.clips/job.songcarry uploads).claude-opus-4-8+ adaptive thinking + structured outputs; heuristic fallback with no key.MKDEMO_REMOTION=1).Tests
pnpm run test:pipeline→ 13 passing (timeline math, ducking filter, URL globs).zodOutputFormat(schema)→json_schemawith@anthropic-ai/sdk@0.106+zod@4.Not yet (see
docs/PIPELINE.md)npx playwright install chromium+ ffmpeg (structured, not run here).browser-agent) is the next upgrade.🤖 Generated with Claude Code