@jairodri/huckleberry-cli 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +347 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,2208 @@
|
|
|
1
|
+
# Talking Head Mode
|
|
2
|
+
**depends-on: [hook-generator]**
|
|
3
|
+
|
|
4
|
+
Generate talking head videos, presenter content, UGC-style testimonials, and lip-synced videos. This mode handles AI presenter generation, script-to-video pipelines, lip-sync workflows, and platform-optimized delivery for every format where a person speaks to camera.
|
|
5
|
+
|
|
6
|
+
**Loaded by:** `creative/SKILL.md` when user selects mode 4 (Talking Head).
|
|
7
|
+
**Model selection:** Handled by `brand/stack.md` — never hardcode model IDs in prompts or workflows.
|
|
8
|
+
**Brand consistency:** Reads from `./brand/creative-kit.md` before every generation.
|
|
9
|
+
**Presenter consistency:** Approved presenters saved to `./brand/creative-kit.md` for reuse across videos.
|
|
10
|
+
**File output:** All deliverables saved to `./campaigns/{campaign}/video/talking-head/`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Why This Mode Exists
|
|
15
|
+
|
|
16
|
+
**The problem:** Talking head videos are the most persuasive content format but:
|
|
17
|
+
1. Recording yourself is time-consuming and requires confidence
|
|
18
|
+
2. Professional presenters are expensive ($500-5000+ per video)
|
|
19
|
+
3. UGC creators charge $100-500 per post and may not match your brand
|
|
20
|
+
4. Iterating on scripts means re-filming everything
|
|
21
|
+
5. Scaling personalized video is nearly impossible manually
|
|
22
|
+
6. Each video model has a different API interface, making multi-model comparison error-prone
|
|
23
|
+
7. No single model wins every prompt — quality depends on the specific content
|
|
24
|
+
8. FTC and platform rules on AI-generated presenters are evolving rapidly
|
|
25
|
+
|
|
26
|
+
**The solution:** AI talking heads that:
|
|
27
|
+
- Generate professional presenter videos in minutes
|
|
28
|
+
- Let you iterate on scripts without re-recording
|
|
29
|
+
- Create unlimited variants for A/B testing
|
|
30
|
+
- Maintain consistent brand presenter identity
|
|
31
|
+
- Scale personalized outreach cost-effectively
|
|
32
|
+
- Reference MODEL_REGISTRY.md for all API payloads (never hardcodes model names)
|
|
33
|
+
- Run parallel multi-model generation and let the user pick the winner
|
|
34
|
+
- Include proper AI-generated content disclosures
|
|
35
|
+
- Save approved presenters to the creative kit for cross-video reuse
|
|
36
|
+
|
|
37
|
+
**The game-changer:** Combining avatar generation + lip-sync + TTS lets you:
|
|
38
|
+
- Create a consistent "brand spokesperson"
|
|
39
|
+
- Update any script without re-filming
|
|
40
|
+
- Test multiple presenter styles quickly
|
|
41
|
+
- Produce video content at 10x the speed
|
|
42
|
+
- Generate voiceover in a consistent brand voice via TTS
|
|
43
|
+
- Localize into multiple languages from a single base video
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Model Selection
|
|
48
|
+
|
|
49
|
+
**Do NOT hardcode model IDs.** Always refer to `brand/stack.md` for the current default video model and its verified API payload.
|
|
50
|
+
|
|
51
|
+
As of this writing, the models used in this mode are:
|
|
52
|
+
|
|
53
|
+
### Video Generation Models
|
|
54
|
+
|
|
55
|
+
| Role | Model | Registry Section | Estimated Cost (5s clip) |
|
|
56
|
+
|------|-------|-----------------|--------------------------|
|
|
57
|
+
| **Default** | Kling 2.5 Turbo Pro | Video Generation > Default Model | ~$0.40 |
|
|
58
|
+
| **Comparison** | Google Veo 3.1 | Video Generation > Comparison Model: Google Veo 3.1 | ~$0.80-1.50 |
|
|
59
|
+
| **Comparison** | OpenAI Sora 2 | Video Generation > Comparison Model: OpenAI Sora 2 | ~$0.60-1.20 |
|
|
60
|
+
|
|
61
|
+
### Lip-Sync Model
|
|
62
|
+
|
|
63
|
+
| Role | Model | Registry Section | Estimated Cost |
|
|
64
|
+
|------|-------|-----------------|---------------|
|
|
65
|
+
| **Lip-Sync** | Kling Lip-Sync | Lip-Sync > Model: Kling Lip-Sync | ~$0.30-0.60 |
|
|
66
|
+
|
|
67
|
+
### How to Call
|
|
68
|
+
|
|
69
|
+
1. Open `brand/stack.md`
|
|
70
|
+
2. Find the **Video Generation** or **Lip-Sync** section
|
|
71
|
+
3. Copy the verified payload structure for the desired model
|
|
72
|
+
4. Insert your constructed prompt, source image, and parameters
|
|
73
|
+
5. Execute the API call via your configured generation provider
|
|
74
|
+
6. For hero content: run all three video models in parallel (see Parallel Multi-Model Generation below)
|
|
75
|
+
|
|
76
|
+
### Cross-Model Parameter Cheat Sheet
|
|
77
|
+
|
|
78
|
+
Every video model uses different parameter names for the same concept. Always consult MODEL_REGISTRY.md before writing any API call.
|
|
79
|
+
|
|
80
|
+
| Concept | Kling 2.5 | Veo 3.1 | Sora 2 |
|
|
81
|
+
|---------|-----------|---------|--------|
|
|
82
|
+
| **Starting image** | `start_image` | `image` | `input_reference` |
|
|
83
|
+
| **Duration** | `duration` (5, 10) | `duration` (4, 6, 8) | `seconds` (4-12) |
|
|
84
|
+
| **Aspect ratio** | `aspect_ratio` ("16:9") | `aspect_ratio` ("16:9") | `aspect_ratio` ("landscape") |
|
|
85
|
+
| **Prompt adherence** | `guidance_scale` (0-1) | — | — |
|
|
86
|
+
| **Negative prompt** | `negative_prompt` | `negative_prompt` | — |
|
|
87
|
+
| **Audio generation** | Not native | `generate_audio` | Native (always on) |
|
|
88
|
+
| **Ending frame** | `end_image` | `last_frame` | — |
|
|
89
|
+
| **Resolution control** | Fixed 1080p | `resolution` ("720p", "1080p") | Fixed |
|
|
90
|
+
| **Reproducibility** | — | `seed` | — |
|
|
91
|
+
|
|
92
|
+
### Model Strengths for Talking Head Content
|
|
93
|
+
|
|
94
|
+
Refer to MODEL_REGISTRY.md for authoritative details. Summary for presenter-specific routing decisions:
|
|
95
|
+
|
|
96
|
+
**Kling 2.5 Turbo Pro (Default for Talking Heads):**
|
|
97
|
+
- Best for people and natural movement
|
|
98
|
+
- Most realistic human faces
|
|
99
|
+
- Handles casual movements well (ideal for UGC)
|
|
100
|
+
- Best lip-sync ecosystem (Kling Lip-Sync pairs natively)
|
|
101
|
+
- Strong at controlled expressions and gestures
|
|
102
|
+
|
|
103
|
+
**Google Veo 3.1:**
|
|
104
|
+
- Highest fidelity video output
|
|
105
|
+
- Native audio generation (set `generate_audio: true`)
|
|
106
|
+
- Good for establishing scenes with ambient audio
|
|
107
|
+
- Slower generation, higher cost
|
|
108
|
+
- No square aspect ratio support
|
|
109
|
+
|
|
110
|
+
**OpenAI Sora 2:**
|
|
111
|
+
- Strong prompt comprehension
|
|
112
|
+
- Good at character-driven content
|
|
113
|
+
- Native audio generation (always on)
|
|
114
|
+
- Most variable generation times
|
|
115
|
+
- No square aspect ratio support
|
|
116
|
+
|
|
117
|
+
### When to Use Which — Talking Head Specific
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
FOR MAXIMUM REALISM (people quality):
|
|
121
|
+
→ Kling 2.5 Turbo Pro (best faces, most natural movement)
|
|
122
|
+
|
|
123
|
+
FOR SPEED + QUALITY BALANCE:
|
|
124
|
+
→ Kling 2.5 Turbo Pro (fastest for people content)
|
|
125
|
+
|
|
126
|
+
FOR BUILT-IN AUDIO:
|
|
127
|
+
→ Veo 3.1 (generates audio with video)
|
|
128
|
+
|
|
129
|
+
FOR UGC AUTHENTICITY:
|
|
130
|
+
→ Kling 2.5 (handles casual movements well)
|
|
131
|
+
|
|
132
|
+
FOR CORPORATE/FORMAL:
|
|
133
|
+
→ Kling 2.5 or Sora 2 (cleaner, more controlled)
|
|
134
|
+
|
|
135
|
+
FOR HERO/FLAGSHIP:
|
|
136
|
+
→ Run all 3 in parallel, pick winner
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Parallel Multi-Model Generation
|
|
142
|
+
|
|
143
|
+
For hero content and any case where quality matters more than cost, run the same presenter prompt through all three video models simultaneously.
|
|
144
|
+
|
|
145
|
+
### Why Parallel Beats Sequential
|
|
146
|
+
|
|
147
|
+
- No single model wins every prompt — the best output varies by content
|
|
148
|
+
- Running in parallel takes the same wall-clock time as the slowest model (~6 min)
|
|
149
|
+
- Running sequentially would take ~15 minutes for all three
|
|
150
|
+
- Total cost for a parallel comparison run: ~$2.20 (see Cost Awareness below)
|
|
151
|
+
- Eliminates guessing — present all three, let the user pick
|
|
152
|
+
|
|
153
|
+
### Parallel Execution Pattern
|
|
154
|
+
|
|
155
|
+
Use task agents to fire all three API calls simultaneously:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
PARALLEL GENERATION PLAN
|
|
159
|
+
─────────────────────────────────────────────
|
|
160
|
+
Task 1: Kling 2.5 → cost ~$0.40, time ~3min
|
|
161
|
+
Task 2: Veo 3.1 → cost ~$1.00, time ~5min
|
|
162
|
+
Task 3: Sora 2 → cost ~$0.80, time ~6min
|
|
163
|
+
─────────────────────────────────────────────
|
|
164
|
+
Total: ~$2.20, ~6min (parallel)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Translating One Prompt to Three APIs
|
|
168
|
+
|
|
169
|
+
Given a presenter prompt, the payload differs per model. Example for a 16:9 talking head T2V call:
|
|
170
|
+
|
|
171
|
+
**Kling 2.5 payload (from MODEL_REGISTRY.md):**
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"model": "{{video_model_from_stack}}",
|
|
175
|
+
"input": {
|
|
176
|
+
"prompt": "{{presenter_prompt}}",
|
|
177
|
+
"duration": 5,
|
|
178
|
+
"aspect_ratio": "16:9",
|
|
179
|
+
"guidance_scale": 0.5
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Veo 3.1 payload (from MODEL_REGISTRY.md):**
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"model": "google/veo-3.1",
|
|
188
|
+
"input": {
|
|
189
|
+
"prompt": "{{presenter_prompt}}",
|
|
190
|
+
"duration": 8,
|
|
191
|
+
"aspect_ratio": "16:9",
|
|
192
|
+
"resolution": "1080p",
|
|
193
|
+
"generate_audio": true
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Sora 2 payload (from MODEL_REGISTRY.md):**
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"model": "{{comparison_video_model_from_stack}}",
|
|
202
|
+
"input": {
|
|
203
|
+
"prompt": "{{presenter_prompt}}",
|
|
204
|
+
"seconds": 8,
|
|
205
|
+
"aspect_ratio": "landscape"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Critical:** Always verify these payloads against MODEL_REGISTRY.md before execution. Parameter names change when models update.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Cost Awareness
|
|
215
|
+
|
|
216
|
+
Before generating, always estimate and communicate the cost to the user.
|
|
217
|
+
|
|
218
|
+
### Per-Generation Estimates
|
|
219
|
+
|
|
220
|
+
| Model | Duration | Estimated Cost | Typical Time |
|
|
221
|
+
|-------|----------|---------------|--------------|
|
|
222
|
+
| Kling 2.5 | 5s clip | $0.30-0.50 | 2-5min |
|
|
223
|
+
| Kling 2.5 | 10s clip | $0.60-1.00 | 4-8min |
|
|
224
|
+
| Veo 3.1 | 8s clip (720p) | $0.60-0.80 | 3-6min |
|
|
225
|
+
| Veo 3.1 | 8s clip (1080p) | $1.00-1.50 | 5-8min |
|
|
226
|
+
| Sora 2 | 8s clip | $0.60-1.20 | 3-10min |
|
|
227
|
+
| Kling Lip-Sync | 2-10s clip | $0.30-0.60 | 1-3min |
|
|
228
|
+
|
|
229
|
+
### Common Workflow Cost Estimates
|
|
230
|
+
|
|
231
|
+
| Workflow | What You Get | Estimated Cost |
|
|
232
|
+
|----------|-------------|---------------|
|
|
233
|
+
| Single model presenter | 1 video | ~$0.40-1.20 |
|
|
234
|
+
| Parallel comparison (3 models) | 3 videos to compare | ~$2.00-2.50 |
|
|
235
|
+
| Style exploration (5 styles x 1 model) | 5 presenter approaches | ~$2.00-6.00 |
|
|
236
|
+
| Presenter + lip-sync | 1 presenter video + 1 synced video | ~$0.70-1.80 |
|
|
237
|
+
| Full pipeline (generate + lip-sync + 3 models) | 3 videos + lip-sync on winner | ~$2.50-3.10 |
|
|
238
|
+
| UGC batch (5 variants, single model) | 5 different UGC videos | ~$2.00-5.00 |
|
|
239
|
+
|
|
240
|
+
### Cost Communication Template
|
|
241
|
+
|
|
242
|
+
Before executing, inform the user:
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
ESTIMATED GENERATION COST
|
|
246
|
+
─────────────────────────
|
|
247
|
+
Models: [list models]
|
|
248
|
+
Clips: [number of clips]
|
|
249
|
+
Duration per clip: [seconds]
|
|
250
|
+
Lip-sync: [yes/no]
|
|
251
|
+
Estimated total: ~$X.XX
|
|
252
|
+
Estimated time: ~Xmin (parallel) / ~Xmin (sequential)
|
|
253
|
+
|
|
254
|
+
Proceed? [Y/n]
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Presenter Style Exploration (Before Generation)
|
|
260
|
+
|
|
261
|
+
**Critical insight:** Don't generate with one style and hope it works. Explore genuinely DIFFERENT presenter styles first.
|
|
262
|
+
|
|
263
|
+
### The Style Exploration Process
|
|
264
|
+
|
|
265
|
+
**STEP 1: GENERATE 4-5 DIFFERENT PRESENTER STYLES**
|
|
266
|
+
|
|
267
|
+
This is NOT: Same person with different clothes
|
|
268
|
+
This IS: Fundamentally different presenter archetypes that each tell a different story
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
[YOUR BRAND] - Style Exploration
|
|
272
|
+
|
|
273
|
+
Generate presenter concepts for these 5 directions:
|
|
274
|
+
|
|
275
|
+
1. CORPORATE AUTHORITY
|
|
276
|
+
- Demographic: 35-50, professional appearance
|
|
277
|
+
- Setting: Modern office, corporate environment
|
|
278
|
+
- Wardrobe: Business professional, suit/blazer
|
|
279
|
+
- Energy: Confident, measured, authoritative
|
|
280
|
+
- Vibe: "Trust the expert"
|
|
281
|
+
|
|
282
|
+
2. RELATABLE FRIEND
|
|
283
|
+
- Demographic: 25-40, approachable look
|
|
284
|
+
- Setting: Home office, kitchen, casual space
|
|
285
|
+
- Wardrobe: Smart casual, comfortable
|
|
286
|
+
- Energy: Warm, conversational, genuine
|
|
287
|
+
- Vibe: "Let me share what worked for me"
|
|
288
|
+
|
|
289
|
+
3. ENERGETIC CREATOR
|
|
290
|
+
- Demographic: 22-35, creator aesthetic
|
|
291
|
+
- Setting: Ring light setup, content studio
|
|
292
|
+
- Wardrobe: Trendy casual, branded
|
|
293
|
+
- Energy: High, dynamic, enthusiastic
|
|
294
|
+
- Vibe: "You HAVE to try this"
|
|
295
|
+
|
|
296
|
+
4. EXPERT EDUCATOR
|
|
297
|
+
- Demographic: 30-55, credible appearance
|
|
298
|
+
- Setting: Study, library, professional backdrop
|
|
299
|
+
- Wardrobe: Smart casual, glasses optional
|
|
300
|
+
- Energy: Calm, explanatory, helpful
|
|
301
|
+
- Vibe: "Let me explain how this works"
|
|
302
|
+
|
|
303
|
+
5. LIFESTYLE ASPIRATIONAL
|
|
304
|
+
- Demographic: 28-45, aspirational look
|
|
305
|
+
- Setting: Beautiful home, travel location, luxury
|
|
306
|
+
- Wardrobe: Elevated casual, tasteful
|
|
307
|
+
- Energy: Relaxed confidence, success aura
|
|
308
|
+
- Vibe: "This is what my life looks like"
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**STEP 2: IDENTIFY WINNER**
|
|
312
|
+
|
|
313
|
+
After generating style exploration:
|
|
314
|
+
```
|
|
315
|
+
REVIEW each presenter style:
|
|
316
|
+
|
|
317
|
+
Which presenter:
|
|
318
|
+
- Best matches brand voice?
|
|
319
|
+
- Would audience trust most?
|
|
320
|
+
- Fits the content type?
|
|
321
|
+
- Has right energy level?
|
|
322
|
+
- Would work across multiple videos?
|
|
323
|
+
|
|
324
|
+
WINNER: [Selected style]
|
|
325
|
+
BECAUSE: [Why this style wins for this brand/use case]
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**STEP 3: EXTRACT PRESENTER PRINCIPLES**
|
|
329
|
+
|
|
330
|
+
Once winner identified:
|
|
331
|
+
```
|
|
332
|
+
WINNING STYLE EXTRACTION
|
|
333
|
+
|
|
334
|
+
Demographics:
|
|
335
|
+
- Age range: [X-X]
|
|
336
|
+
- Gender: [if specific]
|
|
337
|
+
- Ethnicity: [if specific]
|
|
338
|
+
- Overall look: [descriptors]
|
|
339
|
+
|
|
340
|
+
Environment:
|
|
341
|
+
- Primary setting: [where they present from]
|
|
342
|
+
- Background elements: [what's visible]
|
|
343
|
+
- Lighting style: [natural/studio/mixed]
|
|
344
|
+
|
|
345
|
+
Wardrobe:
|
|
346
|
+
- Style: [formal/casual/etc.]
|
|
347
|
+
- Colors: [palette]
|
|
348
|
+
- Accessories: [if any]
|
|
349
|
+
|
|
350
|
+
Delivery:
|
|
351
|
+
- Energy level: [1-10]
|
|
352
|
+
- Speaking pace: [slow/medium/fast]
|
|
353
|
+
- Hand gestures: [minimal/moderate/expressive]
|
|
354
|
+
- Eye contact: [direct to camera always]
|
|
355
|
+
|
|
356
|
+
Audio:
|
|
357
|
+
- Voice tone: [warm/authoritative/energetic]
|
|
358
|
+
- Pacing: [conversational/punchy/measured]
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**STEP 4: SAVE TO CREATIVE KIT**
|
|
362
|
+
|
|
363
|
+
Once a presenter is approved, save the full specification to `./brand/creative-kit.md` so it can be reused across all future videos. See the Presenter Consistency System section below.
|
|
364
|
+
|
|
365
|
+
**STEP 5: APPLY ACROSS CONTENT**
|
|
366
|
+
|
|
367
|
+
Use extracted principles for:
|
|
368
|
+
- All future videos maintain consistency
|
|
369
|
+
- Same presenter = brand recognition
|
|
370
|
+
- Variations in script, not in presenter
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Presenter Archetype Deep Dives
|
|
375
|
+
|
|
376
|
+
### Corporate Authority
|
|
377
|
+
|
|
378
|
+
**When to use:** B2B, financial services, healthcare, enterprise SaaS, professional services
|
|
379
|
+
|
|
380
|
+
**Visual Formula:**
|
|
381
|
+
```
|
|
382
|
+
[Man/Woman] in [30s-50s], [silver/dark hair], wearing [tailored blazer/suit],
|
|
383
|
+
in [modern glass office/conference room with city view], [warm professional lighting],
|
|
384
|
+
[confident composed expression], [seated at desk OR standing with slight lean],
|
|
385
|
+
[direct eye contact with camera], [subtle hand gestures], corporate executive style
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**Setting Options:**
|
|
389
|
+
- Corner office with city view
|
|
390
|
+
- Modern conference room
|
|
391
|
+
- Executive desk with minimal decor
|
|
392
|
+
- Standing at presentation screen
|
|
393
|
+
- Seated in designer chair
|
|
394
|
+
|
|
395
|
+
**Wardrobe Options:**
|
|
396
|
+
- Tailored navy blazer over white shirt
|
|
397
|
+
- Grey suit, no tie (modern)
|
|
398
|
+
- Classic suit with subtle tie
|
|
399
|
+
- Blazer over turtleneck (thought leader)
|
|
400
|
+
- Professional dress (solid colors)
|
|
401
|
+
|
|
402
|
+
**Energy Markers:**
|
|
403
|
+
- Measured pace
|
|
404
|
+
- Deliberate movements
|
|
405
|
+
- Confident pauses
|
|
406
|
+
- Minimal but purposeful gestures
|
|
407
|
+
- Assured vocal tone
|
|
408
|
+
|
|
409
|
+
**TTS Voice Selection for Corporate Authority:**
|
|
410
|
+
- Voice qualities: Deep, measured, confident, warm baritone or clear alto
|
|
411
|
+
- ElevenLabs recommended voices: Professional male/female, mature tone
|
|
412
|
+
- Pace: 0.9x-1.0x speed (slightly slower conveys authority)
|
|
413
|
+
- Avoid: Overly energetic, breathy, or youthful voices
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
### Relatable Friend (UGC Style)
|
|
418
|
+
|
|
419
|
+
**When to use:** DTC brands, consumer products, wellness, beauty, lifestyle
|
|
420
|
+
|
|
421
|
+
**Visual Formula:**
|
|
422
|
+
```
|
|
423
|
+
Friendly [demographic] sitting in [casual setting], natural window light,
|
|
424
|
+
holding/showing [product], genuine excited expression, talking directly to
|
|
425
|
+
camera like filming a selfie video, authentic UGC testimonial style, casual
|
|
426
|
+
comfortable body language, 5 seconds
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
**Setting Options:**
|
|
430
|
+
- Bright kitchen counter
|
|
431
|
+
- Cozy living room couch
|
|
432
|
+
- Home office with plants
|
|
433
|
+
- Bedroom getting-ready setup
|
|
434
|
+
- Outdoor patio/balcony
|
|
435
|
+
|
|
436
|
+
**Wardrobe Options:**
|
|
437
|
+
- Cozy sweater/cardigan
|
|
438
|
+
- Simple t-shirt
|
|
439
|
+
- Casual button-down
|
|
440
|
+
- Loungewear (if brand appropriate)
|
|
441
|
+
- Athleisure
|
|
442
|
+
|
|
443
|
+
**Energy Markers:**
|
|
444
|
+
- Conversational rhythm
|
|
445
|
+
- Natural pauses ("honestly?", "okay so...")
|
|
446
|
+
- Expressive facial reactions
|
|
447
|
+
- Genuine enthusiasm without over-selling
|
|
448
|
+
- Relatable body language
|
|
449
|
+
|
|
450
|
+
**UGC Script Patterns:**
|
|
451
|
+
```
|
|
452
|
+
DISCOVERY: "Okay so I found this [product] and I'm obsessed..."
|
|
453
|
+
REVIEW: "So I've been using [product] for [time] and here's my honest take..."
|
|
454
|
+
COMPARISON: "I used to use [old product] but then I tried [new product]..."
|
|
455
|
+
TRANSFORMATION: "Before [product] I was [problem]. Now? [result]."
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**UGC Authenticity Markers:**
|
|
459
|
+
- Slightly imperfect framing
|
|
460
|
+
- Natural lighting (not studio)
|
|
461
|
+
- Casual wardrobe
|
|
462
|
+
- Real reactions, not posed
|
|
463
|
+
- Personal space as backdrop
|
|
464
|
+
- Eye contact with camera
|
|
465
|
+
|
|
466
|
+
**TTS Voice Selection for Relatable Friend:**
|
|
467
|
+
- Voice qualities: Warm, conversational, natural inflection, mid-range
|
|
468
|
+
- ElevenLabs recommended voices: Young adult, conversational tone
|
|
469
|
+
- Pace: 1.0x-1.1x speed (natural conversational)
|
|
470
|
+
- Avoid: Robotic, overly polished, or broadcasting voices
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
### Energetic Creator
|
|
475
|
+
|
|
476
|
+
**When to use:** Gen-Z products, entertainment, gaming, trendy DTC, social apps
|
|
477
|
+
|
|
478
|
+
**Visual Formula:**
|
|
479
|
+
```
|
|
480
|
+
[Young energetic creator] in [22-35], [colorful trendy outfit], in [content
|
|
481
|
+
studio with ring light/neon lights], [bright dynamic lighting], [animated
|
|
482
|
+
expressions], [lots of movement and gestures], [high energy delivery],
|
|
483
|
+
[fast-paced enthusiastic style], YouTube/TikTok creator aesthetic
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
**Setting Options:**
|
|
487
|
+
- Ring light setup visible
|
|
488
|
+
- LED/neon accent lighting
|
|
489
|
+
- Streaming/gaming setup
|
|
490
|
+
- Colorful backdrop
|
|
491
|
+
- Outdoor action setting
|
|
492
|
+
|
|
493
|
+
**Wardrobe Options:**
|
|
494
|
+
- Graphic tees
|
|
495
|
+
- Bold colors
|
|
496
|
+
- Branded merch
|
|
497
|
+
- Trendy streetwear
|
|
498
|
+
- Statement accessories
|
|
499
|
+
|
|
500
|
+
**Energy Markers:**
|
|
501
|
+
- Fast-paced delivery
|
|
502
|
+
- Big expressions
|
|
503
|
+
- Lots of hand movement
|
|
504
|
+
- Pattern interrupts
|
|
505
|
+
- Enthusiasm at 10
|
|
506
|
+
|
|
507
|
+
**Creator Script Patterns:**
|
|
508
|
+
```
|
|
509
|
+
HOOK: "STOP scrolling. This is important."
|
|
510
|
+
REVEAL: "I literally just discovered [thing] and I'm freaking out."
|
|
511
|
+
CHALLENGE: "I bet you can't guess what [product] does."
|
|
512
|
+
REACTION: "[reaction to trying product]... WAIT what?!"
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**TTS Voice Selection for Energetic Creator:**
|
|
516
|
+
- Voice qualities: Bright, energetic, youthful, expressive range
|
|
517
|
+
- ElevenLabs recommended voices: Young, dynamic, high energy
|
|
518
|
+
- Pace: 1.1x-1.3x speed (fast, punchy delivery)
|
|
519
|
+
- Avoid: Flat, monotone, or overly mature voices
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
### Expert Educator
|
|
524
|
+
|
|
525
|
+
**When to use:** Online courses, professional services, B2B explainers, tutorials
|
|
526
|
+
|
|
527
|
+
**Visual Formula:**
|
|
528
|
+
```
|
|
529
|
+
[Knowledgeable expert] in [30s-55], [smart casual or academic style],
|
|
530
|
+
in [home study/office with books/whiteboard], [balanced lighting],
|
|
531
|
+
[thoughtful composed expression], [explaining with purposeful gestures],
|
|
532
|
+
[patient instructive tone], educator/thought leader style
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**Setting Options:**
|
|
536
|
+
- Study with bookshelves
|
|
537
|
+
- Office with credentials visible
|
|
538
|
+
- Whiteboard/screen behind
|
|
539
|
+
- Standing at presentation
|
|
540
|
+
- Desk with relevant props
|
|
541
|
+
|
|
542
|
+
**Wardrobe Options:**
|
|
543
|
+
- Button-down shirt
|
|
544
|
+
- Blazer over casual shirt
|
|
545
|
+
- Sweater over collared shirt
|
|
546
|
+
- Glasses (authority signal)
|
|
547
|
+
- Minimal accessories
|
|
548
|
+
|
|
549
|
+
**Energy Markers:**
|
|
550
|
+
- Patient pace
|
|
551
|
+
- Teaching rhythm
|
|
552
|
+
- Logical structure
|
|
553
|
+
- Illustrative gestures
|
|
554
|
+
- "Here's what matters" moments
|
|
555
|
+
|
|
556
|
+
**TTS Voice Selection for Expert Educator:**
|
|
557
|
+
- Voice qualities: Clear, articulate, patient, explanatory cadence
|
|
558
|
+
- ElevenLabs recommended voices: Mature professional, teacher tone
|
|
559
|
+
- Pace: 0.9x-1.0x speed (allows comprehension, conveys thoughtfulness)
|
|
560
|
+
- Avoid: Rushed, overly casual, or monotone voices
|
|
561
|
+
|
|
562
|
+
---
|
|
563
|
+
|
|
564
|
+
### Lifestyle Aspirational
|
|
565
|
+
|
|
566
|
+
**When to use:** Luxury brands, high-ticket services, aspirational DTC, travel, real estate
|
|
567
|
+
|
|
568
|
+
**Visual Formula:**
|
|
569
|
+
```
|
|
570
|
+
[Elegant successful person] in [30s-50s], [elevated casual attire],
|
|
571
|
+
in [beautiful interior/scenic location], [golden hour OR designer lighting],
|
|
572
|
+
[relaxed confident demeanor], [speaking with quiet confidence], [minimal
|
|
573
|
+
but graceful movement], aspirational lifestyle aesthetic
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
**Setting Options:**
|
|
577
|
+
- Designer living room
|
|
578
|
+
- Travel location (balcony view)
|
|
579
|
+
- Luxury car interior
|
|
580
|
+
- High-end restaurant/hotel
|
|
581
|
+
- Yacht/beach/resort
|
|
582
|
+
|
|
583
|
+
**Wardrobe Options:**
|
|
584
|
+
- Designer casual
|
|
585
|
+
- Linen/natural fabrics
|
|
586
|
+
- Neutral luxury palette
|
|
587
|
+
- Subtle jewelry/watch
|
|
588
|
+
- Effortlessly elegant
|
|
589
|
+
|
|
590
|
+
**Energy Markers:**
|
|
591
|
+
- Relaxed confidence
|
|
592
|
+
- No rushing
|
|
593
|
+
- "I have time" energy
|
|
594
|
+
- Subtle smile
|
|
595
|
+
- Quiet success vibes
|
|
596
|
+
|
|
597
|
+
**TTS Voice Selection for Lifestyle Aspirational:**
|
|
598
|
+
- Voice qualities: Smooth, unhurried, refined, warm confidence
|
|
599
|
+
- ElevenLabs recommended voices: Sophisticated, calm delivery
|
|
600
|
+
- Pace: 0.85x-0.95x speed (unhurried = luxury)
|
|
601
|
+
- Avoid: Hyperactive, sharp, or salesy voices
|
|
602
|
+
|
|
603
|
+
---
|
|
604
|
+
|
|
605
|
+
## TTS Integration Guidance
|
|
606
|
+
|
|
607
|
+
### Why External TTS Matters
|
|
608
|
+
|
|
609
|
+
The Kling Lip-Sync model includes basic TTS via `text` + `voice_id`, but it has limited voice options and no voice consistency across sessions. For brand-level talking head content, external TTS gives you:
|
|
610
|
+
|
|
611
|
+
- **Voice cloning** — match a specific voice consistently
|
|
612
|
+
- **Voice selection** — hundreds of voices to match any archetype
|
|
613
|
+
- **Multi-language** — generate the same script in any language
|
|
614
|
+
- **Fine control** — adjust pace, emphasis, pauses, emotion
|
|
615
|
+
- **Brand consistency** — same voice across every video, forever
|
|
616
|
+
|
|
617
|
+
### ElevenLabs Integration (Recommended)
|
|
618
|
+
|
|
619
|
+
ElevenLabs is the recommended TTS provider for talking head content due to voice quality, cloning capability, and extensive voice library.
|
|
620
|
+
|
|
621
|
+
**Voice Selection Process:**
|
|
622
|
+
```
|
|
623
|
+
1. IDENTIFY archetype (Corporate, Friend, Creator, Educator, Aspirational)
|
|
624
|
+
2. BROWSE ElevenLabs voice library filtering by:
|
|
625
|
+
- Gender matching presenter visual
|
|
626
|
+
- Age range matching presenter demographic
|
|
627
|
+
- Accent matching target market
|
|
628
|
+
- Energy level matching archetype
|
|
629
|
+
3. TEST 3-5 candidate voices with a sample script
|
|
630
|
+
4. SELECT winner based on:
|
|
631
|
+
- Natural fit with presenter visual
|
|
632
|
+
- Audience trust factor
|
|
633
|
+
- Clarity at speaking pace
|
|
634
|
+
- Emotional range
|
|
635
|
+
5. SAVE voice_id to creative-kit.md alongside presenter spec
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
**Voice Selection Criteria Per Archetype:**
|
|
639
|
+
|
|
640
|
+
| Archetype | Gender Match | Age Feel | Tone | Pace | Key Quality |
|
|
641
|
+
|-----------|-------------|----------|------|------|-------------|
|
|
642
|
+
| Corporate Authority | Match visual | 35-55 | Confident, warm | Moderate-slow | Trustworthy |
|
|
643
|
+
| Relatable Friend | Match visual | 25-40 | Conversational | Natural | Authentic |
|
|
644
|
+
| Energetic Creator | Match visual | 22-35 | Bright, dynamic | Fast | Exciting |
|
|
645
|
+
| Expert Educator | Match visual | 30-55 | Clear, patient | Moderate | Credible |
|
|
646
|
+
| Lifestyle Aspirational | Match visual | 30-50 | Smooth, refined | Slow | Aspirational |
|
|
647
|
+
|
|
648
|
+
**ElevenLabs API Pattern:**
|
|
649
|
+
```
|
|
650
|
+
1. Generate audio from script text using selected voice
|
|
651
|
+
2. Download audio file (MP3 or WAV)
|
|
652
|
+
3. Pass audio_file to Kling Lip-Sync
|
|
653
|
+
4. Result: presenter video with perfectly matched voiceover
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
**ElevenLabs Script Tips:**
|
|
657
|
+
- Use SSML-style pauses: add "..." for natural breath breaks
|
|
658
|
+
- Capitalize for emphasis: "This is REALLY important"
|
|
659
|
+
- Short sentences sync better than long complex ones
|
|
660
|
+
- Add punctuation for rhythm: periods = full pause, commas = brief pause
|
|
661
|
+
- Test pronunciation of brand names and technical terms
|
|
662
|
+
|
|
663
|
+
### Alternative TTS Providers
|
|
664
|
+
|
|
665
|
+
| Provider | Strengths | Best For |
|
|
666
|
+
|----------|-----------|----------|
|
|
667
|
+
| ElevenLabs | Voice cloning, quality, library size | Brand voice, premium content |
|
|
668
|
+
| OpenAI TTS | Fast, affordable, good quality | Quick prototypes, batch content |
|
|
669
|
+
| Google Cloud TTS | Multi-language, SSML support | International campaigns |
|
|
670
|
+
| Amazon Polly | Cost-effective at scale | High-volume personalization |
|
|
671
|
+
| Azure Speech | Neural voices, SSML | Enterprise integrations |
|
|
672
|
+
|
|
673
|
+
### TTS to Lip-Sync Workflow
|
|
674
|
+
|
|
675
|
+
```
|
|
676
|
+
SCRIPT → TTS (ElevenLabs) → AUDIO FILE → LIP-SYNC (Kling) → FINAL VIDEO
|
|
677
|
+
|
|
678
|
+
Step 1: Write script (use duration calculator below)
|
|
679
|
+
Step 2: Generate audio via TTS with selected voice
|
|
680
|
+
Step 3: Download audio as MP3 or WAV
|
|
681
|
+
Step 4: Pass audio_file + presenter video to Kling Lip-Sync
|
|
682
|
+
Step 5: Review sync quality
|
|
683
|
+
Step 6: Deliver or iterate
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## Script-to-Video Pipeline
|
|
689
|
+
|
|
690
|
+
The complete pipeline from key message to finished talking head video.
|
|
691
|
+
|
|
692
|
+
### Pipeline Overview
|
|
693
|
+
|
|
694
|
+
```
|
|
695
|
+
KEY MESSAGE
|
|
696
|
+
│
|
|
697
|
+
▼
|
|
698
|
+
SCRIPT WRITING (exact duration targeting)
|
|
699
|
+
│
|
|
700
|
+
▼
|
|
701
|
+
TTS AUDIO GENERATION (brand voice)
|
|
702
|
+
│
|
|
703
|
+
▼
|
|
704
|
+
PRESENTER VIDEO GENERATION (multi-model)
|
|
705
|
+
│
|
|
706
|
+
▼
|
|
707
|
+
LIP-SYNC APPLICATION
|
|
708
|
+
│
|
|
709
|
+
▼
|
|
710
|
+
FTC COMPLIANCE CHECK
|
|
711
|
+
│
|
|
712
|
+
▼
|
|
713
|
+
PLATFORM OPTIMIZATION
|
|
714
|
+
│
|
|
715
|
+
▼
|
|
716
|
+
FILE OUTPUT to ./campaigns/{campaign}/video/talking-head/
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
### Step 1: Key Message Extraction
|
|
720
|
+
|
|
721
|
+
Start with the core message:
|
|
722
|
+
```
|
|
723
|
+
KEY MESSAGE BRIEF
|
|
724
|
+
─────────────────
|
|
725
|
+
Product/Service: [name]
|
|
726
|
+
Core message: [one sentence]
|
|
727
|
+
Target audience: [who]
|
|
728
|
+
Desired action: [what they should do]
|
|
729
|
+
Tone: [archetype reference]
|
|
730
|
+
Platform: [where it will go]
|
|
731
|
+
Duration target: [seconds]
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
### Step 2: Script Writing to Exact Duration
|
|
735
|
+
|
|
736
|
+
Use the duration calculator to write a script that fits the target length precisely.
|
|
737
|
+
|
|
738
|
+
**Duration Calculation:**
|
|
739
|
+
|
|
740
|
+
| Word Count | Duration | Use Case |
|
|
741
|
+
|------------|----------|----------|
|
|
742
|
+
| 15 words | ~5 seconds | Social hook |
|
|
743
|
+
| 30 words | ~10 seconds | Instagram Reel |
|
|
744
|
+
| 45 words | ~15 seconds | TikTok optimal |
|
|
745
|
+
| 60 words | ~20 seconds | Short testimonial |
|
|
746
|
+
| 90 words | ~30 seconds | Product explainer |
|
|
747
|
+
| 150 words | ~60 seconds | Full testimonial |
|
|
748
|
+
|
|
749
|
+
**Rule:** ~150 words per minute at natural conversational pace
|
|
750
|
+
|
|
751
|
+
**Script Writing Template:**
|
|
752
|
+
```
|
|
753
|
+
TARGET: [X] seconds = [Y] words
|
|
754
|
+
|
|
755
|
+
SCRIPT DRAFT:
|
|
756
|
+
───────────────────────────
|
|
757
|
+
[Hook - first 1-3 seconds, ~5-10 words]
|
|
758
|
+
[Value/Story - middle section]
|
|
759
|
+
[CTA - final 3-5 seconds, ~10-15 words]
|
|
760
|
+
───────────────────────────
|
|
761
|
+
WORD COUNT: [actual count]
|
|
762
|
+
ESTIMATED DURATION: [seconds]
|
|
763
|
+
ADJUSTMENT NEEDED: [add/cut X words]
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
### Step 3: TTS Audio Generation
|
|
767
|
+
|
|
768
|
+
Using the approved voice (saved in creative-kit.md):
|
|
769
|
+
```
|
|
770
|
+
1. Load approved voice_id from creative-kit.md
|
|
771
|
+
2. Feed final script to TTS provider
|
|
772
|
+
3. Set pace to archetype-appropriate speed
|
|
773
|
+
4. Generate audio file
|
|
774
|
+
5. Verify duration matches target (+/- 1 second)
|
|
775
|
+
6. If duration is off: adjust script word count and regenerate
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
### Step 4: Presenter Video Generation
|
|
779
|
+
|
|
780
|
+
Generate the presenter video using the approved presenter spec (from creative-kit.md):
|
|
781
|
+
```
|
|
782
|
+
1. Load presenter spec from creative-kit.md
|
|
783
|
+
2. Construct presenter prompt from saved specification
|
|
784
|
+
3. Generate via multi-model parallel (hero) or default model (standard)
|
|
785
|
+
4. Duration should match or slightly exceed audio duration
|
|
786
|
+
5. User selects preferred video output
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
### Step 5: Lip-Sync Application
|
|
790
|
+
|
|
791
|
+
Apply the TTS audio to the selected presenter video:
|
|
792
|
+
|
|
793
|
+
**Audio-driven lip-sync (from MODEL_REGISTRY.md):**
|
|
794
|
+
```json
|
|
795
|
+
{
|
|
796
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
797
|
+
"input": {
|
|
798
|
+
"video_url": "{{selected_presenter_video_url}}",
|
|
799
|
+
"audio_file": "{{tts_audio_url}}"
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
### Step 6: Quality Review and Delivery
|
|
805
|
+
|
|
806
|
+
See Quality Checklist section below.
|
|
807
|
+
|
|
808
|
+
---
|
|
809
|
+
|
|
810
|
+
## Script Structures
|
|
811
|
+
|
|
812
|
+
### HOOK-VALUE-CTA (15-30 seconds)
|
|
813
|
+
```
|
|
814
|
+
Hook (0-3 sec): [Attention-grabber - question, statement, or pattern interrupt]
|
|
815
|
+
Value (3-20 sec): [Main message, benefit, or story]
|
|
816
|
+
CTA (20-30 sec): [Clear next step]
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
### PROBLEM-AGITATE-SOLVE (30-60 seconds)
|
|
820
|
+
```
|
|
821
|
+
Problem (0-10 sec): [Name the pain point]
|
|
822
|
+
Agitate (10-30 sec): [Make them feel it]
|
|
823
|
+
Solve (30-60 sec): [Present the solution + CTA]
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
### BEFORE-AFTER (15-30 seconds)
|
|
827
|
+
```
|
|
828
|
+
Before (0-10 sec): [Life before product/solution]
|
|
829
|
+
After (10-25 sec): [Transformation/result]
|
|
830
|
+
CTA (25-30 sec): [How to get same result]
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
### Tone Templates
|
|
834
|
+
|
|
835
|
+
**Professional/Corporate:**
|
|
836
|
+
```
|
|
837
|
+
"[Name] here with [Company]. Today I want to share how [product/insight]
|
|
838
|
+
can help you [achieve outcome]. Here's what you need to know..."
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
**Casual/UGC:**
|
|
842
|
+
```
|
|
843
|
+
"Okay so I've been using [product] for [time] and honestly? I'm obsessed.
|
|
844
|
+
Here's why [specific benefit]. If you [problem], you need this."
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
**Expert/Educational:**
|
|
848
|
+
```
|
|
849
|
+
"One thing I see people get wrong about [topic] is [misconception].
|
|
850
|
+
Here's what actually works: [insight]. Let me show you..."
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
**Energetic/Sales:**
|
|
854
|
+
```
|
|
855
|
+
"Stop what you're doing. [Product] just changed everything. I'm serious -
|
|
856
|
+
[result] in [timeframe]. You HAVE to try this."
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
**Aspirational:**
|
|
860
|
+
```
|
|
861
|
+
"[Casual opening]. I wanted to share something that's completely transformed
|
|
862
|
+
[area of life]. [Product] gave me [result]. Here's how it works..."
|
|
863
|
+
```
|
|
864
|
+
|
|
865
|
+
---
|
|
866
|
+
|
|
867
|
+
## Lip-Sync Workflow
|
|
868
|
+
|
|
869
|
+
For adding speech to existing videos using Kling Lip-Sync.
|
|
870
|
+
|
|
871
|
+
### When to Use Lip-Sync
|
|
872
|
+
|
|
873
|
+
- You have a great presenter video but need different script
|
|
874
|
+
- Client wants to change messaging after video generation
|
|
875
|
+
- Creating personalized versions of same base video
|
|
876
|
+
- Adding voiceover to product demo videos
|
|
877
|
+
- Dubbing content for different languages
|
|
878
|
+
- Using external TTS for brand voice consistency
|
|
879
|
+
|
|
880
|
+
### Audio-Driven Lip-Sync (Recommended)
|
|
881
|
+
|
|
882
|
+
Use when you have a pre-recorded or TTS-generated audio file.
|
|
883
|
+
|
|
884
|
+
**Payload (from MODEL_REGISTRY.md):**
|
|
885
|
+
```json
|
|
886
|
+
{
|
|
887
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
888
|
+
"input": {
|
|
889
|
+
"video_url": "{{source_video_url}}",
|
|
890
|
+
"audio_file": "{{audio_url}}"
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
```
|
|
894
|
+
|
|
895
|
+
### Text-Driven Lip-Sync (Quick Prototyping)
|
|
896
|
+
|
|
897
|
+
Use for quick tests when voice quality is not critical.
|
|
898
|
+
|
|
899
|
+
**Payload (from MODEL_REGISTRY.md):**
|
|
900
|
+
```json
|
|
901
|
+
{
|
|
902
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
903
|
+
"input": {
|
|
904
|
+
"video_url": "{{source_video_url}}",
|
|
905
|
+
"text": "{{spoken_text}}",
|
|
906
|
+
"voice_id": "en_AOT",
|
|
907
|
+
"voice_speed": 1
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
### When to Use Model TTS vs. External Audio
|
|
913
|
+
|
|
914
|
+
| Scenario | Approach | Why |
|
|
915
|
+
|----------|----------|-----|
|
|
916
|
+
| Quick prototype | Use `text` + `voice_id` | Fastest path. One API call does everything. |
|
|
917
|
+
| Brand-specific voice | External TTS (ElevenLabs) then `audio_file` | Model TTS voices are limited. External gives voice cloning. |
|
|
918
|
+
| Voiceover already recorded | Use `audio_file` | You have the audio. No synthesis needed. |
|
|
919
|
+
| Multiple languages | External TTS then `audio_file` | Model TTS language/accent options are limited. |
|
|
920
|
+
| Testimonial/UGC content | Use `audio_file` with real voice recording | Authenticity matters. Real voices convert better. |
|
|
921
|
+
| Script iteration/testing | Use `text` + `voice_id` | Fast turnaround for script comparison. |
|
|
922
|
+
| Final production delivery | External TTS then `audio_file` | Maximum quality and voice control. |
|
|
923
|
+
|
|
924
|
+
### Lip-Sync Quality Tips
|
|
925
|
+
|
|
926
|
+
- Source video should have face visible 70%+ of time
|
|
927
|
+
- Forward-facing shots work better than profiles
|
|
928
|
+
- Avoid videos with heavy face movement/turning
|
|
929
|
+
- Audio should be clear without background noise
|
|
930
|
+
- Script pacing should match natural speech
|
|
931
|
+
- Video must be 2-10 seconds (Kling Lip-Sync requirement)
|
|
932
|
+
- Video resolution must be 720p-1080p
|
|
933
|
+
- Audio file must be under 5MB
|
|
934
|
+
- Keep sentences short (easier sync)
|
|
935
|
+
|
|
936
|
+
---
|
|
937
|
+
|
|
938
|
+
## Audio and Voice Considerations
|
|
939
|
+
|
|
940
|
+
### When Using Veo 3.1 Native Audio
|
|
941
|
+
|
|
942
|
+
**Strengths:**
|
|
943
|
+
- Generates synchronized audio with video
|
|
944
|
+
- Natural ambient sounds
|
|
945
|
+
- Speech that matches lip movement
|
|
946
|
+
- Good for establishing scenes
|
|
947
|
+
|
|
948
|
+
**Limitations:**
|
|
949
|
+
- Less control over specific script
|
|
950
|
+
- Audio quality varies
|
|
951
|
+
- May need post-processing
|
|
952
|
+
|
|
953
|
+
### Voice-Over Tips
|
|
954
|
+
|
|
955
|
+
**If recording your own VO for lip-sync:**
|
|
956
|
+
```
|
|
957
|
+
[ ] Record in quiet environment
|
|
958
|
+
[ ] Use consistent distance from mic
|
|
959
|
+
[ ] Match energy to presenter style
|
|
960
|
+
[ ] Natural pauses between sentences
|
|
961
|
+
[ ] Clear enunciation
|
|
962
|
+
[ ] Export as MP3 or WAV
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
**If using TTS (text input via Kling built-in):**
|
|
966
|
+
```
|
|
967
|
+
[ ] Use punctuation for natural pauses
|
|
968
|
+
[ ] Write phonetically for tricky words
|
|
969
|
+
[ ] Keep sentences conversational length
|
|
970
|
+
[ ] Test different phrasings
|
|
971
|
+
[ ] Consider adding "..." for pauses
|
|
972
|
+
```
|
|
973
|
+
|
|
974
|
+
**If using external TTS (ElevenLabs recommended):**
|
|
975
|
+
```
|
|
976
|
+
[ ] Select voice matching presenter archetype
|
|
977
|
+
[ ] Test voice with sample script before full generation
|
|
978
|
+
[ ] Adjust pace to match archetype (see TTS Voice Selection tables)
|
|
979
|
+
[ ] Export at highest quality (WAV preferred, MP3 acceptable)
|
|
980
|
+
[ ] Verify audio duration matches video duration
|
|
981
|
+
[ ] Save voice_id to creative-kit.md for future use
|
|
982
|
+
```
|
|
983
|
+
|
|
984
|
+
---
|
|
985
|
+
|
|
986
|
+
## Presenter Consistency System
|
|
987
|
+
|
|
988
|
+
Consistency is the key to building brand recognition with AI presenters. One approved presenter used across all videos creates the illusion of a real brand spokesperson.
|
|
989
|
+
|
|
990
|
+
### Why Consistency Matters
|
|
991
|
+
|
|
992
|
+
- **Brand recognition:** Viewers remember a face, not a product
|
|
993
|
+
- **Trust building:** Same person appearing repeatedly builds familiarity
|
|
994
|
+
- **Production efficiency:** No need to re-explore styles for every video
|
|
995
|
+
- **Cross-campaign coherence:** All content looks like it comes from one source
|
|
996
|
+
|
|
997
|
+
### Saving an Approved Presenter to Creative Kit
|
|
998
|
+
|
|
999
|
+
After the style exploration process identifies a winner, save the complete specification to `./brand/creative-kit.md`:
|
|
1000
|
+
|
|
1001
|
+
```markdown
|
|
1002
|
+
## Approved Presenter: [Name/Identifier]
|
|
1003
|
+
|
|
1004
|
+
**Approved:** [date]
|
|
1005
|
+
**Archetype:** [Corporate Authority / Relatable Friend / Energetic Creator / Expert Educator / Lifestyle Aspirational]
|
|
1006
|
+
|
|
1007
|
+
### Visual Specification
|
|
1008
|
+
- **Demographics:** [age range, gender, ethnicity, overall look]
|
|
1009
|
+
- **Setting:** [primary setting, background elements, lighting style]
|
|
1010
|
+
- **Wardrobe:** [style, colors, accessories]
|
|
1011
|
+
- **Energy:** [level 1-10, specific markers]
|
|
1012
|
+
- **Expression:** [default expression, range]
|
|
1013
|
+
- **Gestures:** [minimal/moderate/expressive, specific notes]
|
|
1014
|
+
|
|
1015
|
+
### Voice Specification
|
|
1016
|
+
- **TTS Provider:** [ElevenLabs / OpenAI / etc.]
|
|
1017
|
+
- **Voice ID:** [voice_id string]
|
|
1018
|
+
- **Voice Name:** [human-readable name from provider]
|
|
1019
|
+
- **Pace:** [speed multiplier, e.g., 0.95x]
|
|
1020
|
+
- **Tone:** [warm/authoritative/energetic/etc.]
|
|
1021
|
+
|
|
1022
|
+
### Generation Prompt (Reusable)
|
|
1023
|
+
```
|
|
1024
|
+
[The exact prompt that produced the approved presenter video.
|
|
1025
|
+
Copy this verbatim for all future videos with this presenter.
|
|
1026
|
+
Only change: duration and aspect ratio per platform.]
|
|
1027
|
+
```
|
|
1028
|
+
|
|
1029
|
+
### Reference Videos
|
|
1030
|
+
- **Approval video URL:** [URL of the video that was approved]
|
|
1031
|
+
- **Lip-sync sample URL:** [URL of lip-synced version if available]
|
|
1032
|
+
|
|
1033
|
+
### Usage Notes
|
|
1034
|
+
- [Any specific notes about what works/doesn't work]
|
|
1035
|
+
- [Platform-specific adjustments if needed]
|
|
1036
|
+
- [Known limitations or artifacts to watch for]
|
|
1037
|
+
```
|
|
1038
|
+
|
|
1039
|
+
### Reusing an Approved Presenter
|
|
1040
|
+
|
|
1041
|
+
When creating new talking head content:
|
|
1042
|
+
|
|
1043
|
+
```
|
|
1044
|
+
1. CHECK creative-kit.md for approved presenter
|
|
1045
|
+
2. IF approved presenter exists:
|
|
1046
|
+
a. Load generation prompt verbatim
|
|
1047
|
+
b. Load voice_id and TTS settings
|
|
1048
|
+
c. Only modify: duration, aspect_ratio, platform-specific adjustments
|
|
1049
|
+
d. Skip style exploration entirely
|
|
1050
|
+
3. IF no approved presenter:
|
|
1051
|
+
a. Run full style exploration process
|
|
1052
|
+
b. Save winner to creative-kit.md
|
|
1053
|
+
c. Then proceed with content generation
|
|
1054
|
+
```
|
|
1055
|
+
|
|
1056
|
+
### Updating an Approved Presenter
|
|
1057
|
+
|
|
1058
|
+
Presenters may need updating when:
|
|
1059
|
+
- Brand repositions or pivots
|
|
1060
|
+
- New campaign requires different energy
|
|
1061
|
+
- User explicitly requests a new look
|
|
1062
|
+
- Technical quality improves with new models
|
|
1063
|
+
|
|
1064
|
+
**Update process:**
|
|
1065
|
+
```
|
|
1066
|
+
1. Run new style exploration alongside current presenter
|
|
1067
|
+
2. Compare new options vs. current presenter
|
|
1068
|
+
3. If new presenter wins: update creative-kit.md
|
|
1069
|
+
4. If current presenter still wins: keep as-is
|
|
1070
|
+
5. Archive old presenter spec (don't delete — may need for legacy content)
|
|
1071
|
+
```
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
1075
|
+
## FTC Compliance Module
|
|
1076
|
+
|
|
1077
|
+
AI-generated presenter videos are subject to evolving regulations. This section covers the current requirements and best practices for disclosure.
|
|
1078
|
+
|
|
1079
|
+
### Why FTC Compliance Matters
|
|
1080
|
+
|
|
1081
|
+
- **Legal requirement:** The FTC requires disclosure when AI-generated likenesses are used in advertising
|
|
1082
|
+
- **Platform enforcement:** Major platforms are implementing AI content labeling requirements
|
|
1083
|
+
- **Consumer trust:** Transparent disclosure builds trust rather than eroding it
|
|
1084
|
+
- **Future-proofing:** Regulations are tightening, not loosening — build compliance into the workflow now
|
|
1085
|
+
|
|
1086
|
+
### Disclosure Requirements
|
|
1087
|
+
|
|
1088
|
+
**FTC Guidelines (Current as of 2026):**
|
|
1089
|
+
- AI-generated presenters in advertising must be disclosed
|
|
1090
|
+
- Disclosure must be "clear and conspicuous"
|
|
1091
|
+
- Cannot be buried in fine print or hidden behind clicks
|
|
1092
|
+
- Must appear before or during the content, not only after
|
|
1093
|
+
|
|
1094
|
+
**Required Disclosure Language:**
|
|
1095
|
+
```
|
|
1096
|
+
Options (use the one most natural for your format):
|
|
1097
|
+
|
|
1098
|
+
1. "This video features an AI-generated presenter"
|
|
1099
|
+
2. "Presenter created with AI"
|
|
1100
|
+
3. "AI-generated spokesperson"
|
|
1101
|
+
4. "[Brand] AI presenter"
|
|
1102
|
+
```
|
|
1103
|
+
|
|
1104
|
+
### Platform-Specific AI Content Policies
|
|
1105
|
+
|
|
1106
|
+
**Meta (Facebook/Instagram):**
|
|
1107
|
+
- Requires AI-generated content label on ads
|
|
1108
|
+
- Use Meta's built-in "AI-generated" content label
|
|
1109
|
+
- Apply during ad setup in Ads Manager
|
|
1110
|
+
- Organic content: add text disclosure in caption
|
|
1111
|
+
|
|
1112
|
+
**TikTok:**
|
|
1113
|
+
- Requires AI-generated content disclosure
|
|
1114
|
+
- Use TikTok's AI label feature when uploading
|
|
1115
|
+
- Add #AIgenerated or similar hashtag
|
|
1116
|
+
- Text overlay disclosure in first 3 seconds recommended
|
|
1117
|
+
|
|
1118
|
+
**YouTube:**
|
|
1119
|
+
- Requires disclosure for "altered or synthetic" content
|
|
1120
|
+
- Use YouTube's AI content declaration in upload settings
|
|
1121
|
+
- For ads: disclose in ad setup and in video itself
|
|
1122
|
+
- Shorts: text overlay in first frame
|
|
1123
|
+
|
|
1124
|
+
**LinkedIn:**
|
|
1125
|
+
- Requires transparency for AI-generated content
|
|
1126
|
+
- Disclose in post text
|
|
1127
|
+
- For video: text overlay or caption disclosure
|
|
1128
|
+
- Professional context demands higher transparency standard
|
|
1129
|
+
|
|
1130
|
+
**General Web (Landing pages, email, etc.):**
|
|
1131
|
+
- FTC guidelines apply regardless of platform
|
|
1132
|
+
- Add disclosure near the video player
|
|
1133
|
+
- Include in video description or caption
|
|
1134
|
+
- Consider text overlay in video itself
|
|
1135
|
+
|
|
1136
|
+
### Implementing Disclosure in Video
|
|
1137
|
+
|
|
1138
|
+
**Method 1: Text Overlay (Recommended for all platforms)**
|
|
1139
|
+
```
|
|
1140
|
+
Add text overlay in post-production:
|
|
1141
|
+
- Position: Bottom-left or top-right corner
|
|
1142
|
+
- Timing: First 3-5 seconds of video
|
|
1143
|
+
- Style: Small, readable, non-intrusive
|
|
1144
|
+
- Text: "AI-generated presenter" or platform-appropriate variant
|
|
1145
|
+
- Font: Match brand typography
|
|
1146
|
+
- Opacity: 70-90% (visible but not distracting)
|
|
1147
|
+
```
|
|
1148
|
+
|
|
1149
|
+
**Method 2: Verbal Disclosure (For longer content)**
|
|
1150
|
+
```
|
|
1151
|
+
Include in script:
|
|
1152
|
+
- Position: Within first 10 seconds
|
|
1153
|
+
- Style: Natural, not apologetic
|
|
1154
|
+
- Example: "I'm [Brand]'s AI presenter, and today I want to share..."
|
|
1155
|
+
- Tone: Confident — AI is a feature, not a flaw
|
|
1156
|
+
```
|
|
1157
|
+
|
|
1158
|
+
**Method 3: Caption/Description (Supplementary)**
|
|
1159
|
+
```
|
|
1160
|
+
Add to video description/caption:
|
|
1161
|
+
- "This video features an AI-generated presenter"
|
|
1162
|
+
- Include relevant hashtags: #AIgenerated #AIpresenter
|
|
1163
|
+
- Link to brand's AI disclosure policy if applicable
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
### Compliance Checklist
|
|
1167
|
+
|
|
1168
|
+
Before publishing any talking head video:
|
|
1169
|
+
```
|
|
1170
|
+
[ ] AI-generated presenter disclosure included in video (text overlay or verbal)
|
|
1171
|
+
[ ] Platform-specific AI content label applied (Meta, TikTok, YouTube, etc.)
|
|
1172
|
+
[ ] Video description/caption includes disclosure
|
|
1173
|
+
[ ] Disclosure appears within first 5 seconds
|
|
1174
|
+
[ ] Disclosure is clear and conspicuous (readable, not hidden)
|
|
1175
|
+
[ ] No claims of real person endorsement
|
|
1176
|
+
[ ] No impersonation of real individuals
|
|
1177
|
+
[ ] Testimonial claims are truthful (even with AI presenter)
|
|
1178
|
+
[ ] Check platform's current AI content policy (policies evolve)
|
|
1179
|
+
```
|
|
1180
|
+
|
|
1181
|
+
### What NOT to Do
|
|
1182
|
+
|
|
1183
|
+
- Do NOT impersonate real people (celebrities, influencers, competitors)
|
|
1184
|
+
- Do NOT claim AI presenter is a real customer giving a real testimonial
|
|
1185
|
+
- Do NOT hide or obscure the AI disclosure
|
|
1186
|
+
- Do NOT use AI presenter to make claims the brand cannot substantiate
|
|
1187
|
+
- Do NOT skip disclosure because "no one will know" — platforms are building detection
|
|
1188
|
+
- Do NOT assume today's rules will stay the same — check quarterly
|
|
1189
|
+
|
|
1190
|
+
### Compliance-Aware Script Templates
|
|
1191
|
+
|
|
1192
|
+
**UGC-Style with Disclosure:**
|
|
1193
|
+
```
|
|
1194
|
+
"Hi, I'm [Brand]'s AI presenter. Now that that's out of the way —
|
|
1195
|
+
let me tell you about something amazing. I've been programmed with
|
|
1196
|
+
real customer feedback, and here's what people are saying about [product]..."
|
|
1197
|
+
```
|
|
1198
|
+
|
|
1199
|
+
**Corporate with Disclosure:**
|
|
1200
|
+
```
|
|
1201
|
+
"[Pause for text overlay: AI-generated presenter]
|
|
1202
|
+
Welcome. Today I want to walk you through how [product] can help you
|
|
1203
|
+
[achieve outcome]..."
|
|
1204
|
+
```
|
|
1205
|
+
|
|
1206
|
+
**Creator-Style with Disclosure:**
|
|
1207
|
+
```
|
|
1208
|
+
"Before we dive in — full transparency, I'm AI-generated. But the results
|
|
1209
|
+
I'm about to show you? Those are 100% real. Let's go..."
|
|
1210
|
+
```
|
|
1211
|
+
|
|
1212
|
+
---
|
|
1213
|
+
|
|
1214
|
+
## Platform-Specific Optimization
|
|
1215
|
+
|
|
1216
|
+
### TikTok/Reels (9:16)
|
|
1217
|
+
|
|
1218
|
+
**Specs:**
|
|
1219
|
+
- Aspect Ratio: 9:16 (vertical)
|
|
1220
|
+
- Duration: 15-30 seconds optimal
|
|
1221
|
+
- Safe Zone: Keep face/text center 60%
|
|
1222
|
+
|
|
1223
|
+
**Style Adjustments:**
|
|
1224
|
+
```
|
|
1225
|
+
→ Higher energy delivery
|
|
1226
|
+
→ Faster pacing
|
|
1227
|
+
→ Hook in first 1-2 seconds
|
|
1228
|
+
→ Pattern interrupts
|
|
1229
|
+
→ Jump cuts acceptable
|
|
1230
|
+
→ Casual/authentic feel
|
|
1231
|
+
```
|
|
1232
|
+
|
|
1233
|
+
**Prompt Modifier:**
|
|
1234
|
+
```
|
|
1235
|
+
...[base prompt], filmed vertically like TikTok/Reels content,
|
|
1236
|
+
energetic creator style, direct eye contact with camera
|
|
1237
|
+
```
|
|
1238
|
+
|
|
1239
|
+
**AI Disclosure:** Use platform's built-in AI label + text overlay in first 3 seconds
|
|
1240
|
+
|
|
1241
|
+
### YouTube (16:9)
|
|
1242
|
+
|
|
1243
|
+
**Specs:**
|
|
1244
|
+
- Aspect Ratio: 16:9 (landscape)
|
|
1245
|
+
- Duration: 30-120 seconds
|
|
1246
|
+
- Safe Zone: Standard letterbox
|
|
1247
|
+
|
|
1248
|
+
**Style Adjustments:**
|
|
1249
|
+
```
|
|
1250
|
+
→ More measured pacing
|
|
1251
|
+
→ Can be longer form
|
|
1252
|
+
→ More professional setups accepted
|
|
1253
|
+
→ Room for B-roll integration
|
|
1254
|
+
→ Intro/outro structure
|
|
1255
|
+
```
|
|
1256
|
+
|
|
1257
|
+
**Prompt Modifier:**
|
|
1258
|
+
```
|
|
1259
|
+
...[base prompt], widescreen YouTube style, professional yet engaging,
|
|
1260
|
+
room for graphics/lower thirds
|
|
1261
|
+
```
|
|
1262
|
+
|
|
1263
|
+
**AI Disclosure:** Use YouTube's AI content declaration in upload settings + text overlay
|
|
1264
|
+
|
|
1265
|
+
### LinkedIn (1:1 or 16:9)
|
|
1266
|
+
|
|
1267
|
+
**Specs:**
|
|
1268
|
+
- Aspect Ratio: 1:1 (square) or 16:9
|
|
1269
|
+
- Duration: 30-60 seconds optimal
|
|
1270
|
+
- Tone: Professional but personal
|
|
1271
|
+
|
|
1272
|
+
**Style Adjustments:**
|
|
1273
|
+
```
|
|
1274
|
+
→ Professional appearance
|
|
1275
|
+
→ Business-appropriate setting
|
|
1276
|
+
→ Thought leadership tone
|
|
1277
|
+
→ Value-first messaging
|
|
1278
|
+
→ Credibility signals
|
|
1279
|
+
```
|
|
1280
|
+
|
|
1281
|
+
**Prompt Modifier:**
|
|
1282
|
+
```
|
|
1283
|
+
...[base prompt], professional LinkedIn style, credible expert appearance,
|
|
1284
|
+
business casual in modern office environment
|
|
1285
|
+
```
|
|
1286
|
+
|
|
1287
|
+
**AI Disclosure:** Disclose in post text + text overlay in video
|
|
1288
|
+
|
|
1289
|
+
### Instagram Stories (9:16)
|
|
1290
|
+
|
|
1291
|
+
**Specs:**
|
|
1292
|
+
- Aspect Ratio: 9:16
|
|
1293
|
+
- Duration: 15 seconds max per segment
|
|
1294
|
+
- Ephemeral feel
|
|
1295
|
+
|
|
1296
|
+
**Style Adjustments:**
|
|
1297
|
+
```
|
|
1298
|
+
→ Casual, in-the-moment feel
|
|
1299
|
+
→ Can be "rougher" quality
|
|
1300
|
+
→ Direct audience address
|
|
1301
|
+
→ Personal/behind-scenes vibe
|
|
1302
|
+
→ Clear single message per story
|
|
1303
|
+
```
|
|
1304
|
+
|
|
1305
|
+
**AI Disclosure:** Use Meta's AI-generated content label + caption disclosure
|
|
1306
|
+
|
|
1307
|
+
### Ads (Various)
|
|
1308
|
+
|
|
1309
|
+
**Facebook/Instagram Ads:**
|
|
1310
|
+
- 1:1, 4:5, or 9:16
|
|
1311
|
+
- 15-30 second optimal
|
|
1312
|
+
- Hook in 0-3 seconds
|
|
1313
|
+
- Clear CTA
|
|
1314
|
+
- AI disclosure via Meta Ads Manager labeling
|
|
1315
|
+
|
|
1316
|
+
**YouTube Ads:**
|
|
1317
|
+
- 16:9
|
|
1318
|
+
- 15-30 second (skippable) or 6 second (bumper)
|
|
1319
|
+
- Brand visible throughout
|
|
1320
|
+
- AI disclosure in ad setup + text overlay
|
|
1321
|
+
|
|
1322
|
+
---
|
|
1323
|
+
|
|
1324
|
+
## Use Cases Deep Dive
|
|
1325
|
+
|
|
1326
|
+
### 1. Lip-Sync Overlay
|
|
1327
|
+
|
|
1328
|
+
**Best for:** Adding voiceover to existing video, dubbing, personalization
|
|
1329
|
+
|
|
1330
|
+
**Input Requirements:**
|
|
1331
|
+
- Video with visible face (front-facing works best)
|
|
1332
|
+
- Audio file (MP3, WAV) OR text script
|
|
1333
|
+
|
|
1334
|
+
**Workflow:**
|
|
1335
|
+
```json
|
|
1336
|
+
{
|
|
1337
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
1338
|
+
"input": {
|
|
1339
|
+
"video_url": "{{source_video_url}}",
|
|
1340
|
+
"audio_file": "{{audio_url}}"
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
```
|
|
1344
|
+
|
|
1345
|
+
**Or with text (uses built-in TTS):**
|
|
1346
|
+
```json
|
|
1347
|
+
{
|
|
1348
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
1349
|
+
"input": {
|
|
1350
|
+
"video_url": "{{source_video_url}}",
|
|
1351
|
+
"text": "{{spoken_text}}",
|
|
1352
|
+
"voice_id": "en_AOT",
|
|
1353
|
+
"voice_speed": 1
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
```
|
|
1357
|
+
|
|
1358
|
+
---
|
|
1359
|
+
|
|
1360
|
+
### 2. AI Presenter Generation
|
|
1361
|
+
|
|
1362
|
+
**Best for:** Creating presenter content from scratch, brand spokesperson
|
|
1363
|
+
|
|
1364
|
+
**Multi-Model Workflow (from MODEL_REGISTRY.md):**
|
|
1365
|
+
|
|
1366
|
+
```json
|
|
1367
|
+
// Kling 2.5
|
|
1368
|
+
{
|
|
1369
|
+
"model": "{{video_model_from_stack}}",
|
|
1370
|
+
"input": {
|
|
1371
|
+
"prompt": "[presenter prompt]",
|
|
1372
|
+
"aspect_ratio": "16:9",
|
|
1373
|
+
"duration": 5,
|
|
1374
|
+
"guidance_scale": 0.5
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
```
|
|
1378
|
+
|
|
1379
|
+
```json
|
|
1380
|
+
// Veo 3.1 (with native audio)
|
|
1381
|
+
{
|
|
1382
|
+
"model": "google/veo-3.1",
|
|
1383
|
+
"input": {
|
|
1384
|
+
"prompt": "[presenter prompt]",
|
|
1385
|
+
"aspect_ratio": "16:9",
|
|
1386
|
+
"duration": 8,
|
|
1387
|
+
"generate_audio": true,
|
|
1388
|
+
"resolution": "1080p"
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
```
|
|
1392
|
+
|
|
1393
|
+
```json
|
|
1394
|
+
// Sora 2
|
|
1395
|
+
{
|
|
1396
|
+
"model": "{{comparison_video_model_from_stack}}",
|
|
1397
|
+
"input": {
|
|
1398
|
+
"prompt": "[presenter prompt]",
|
|
1399
|
+
"seconds": 8,
|
|
1400
|
+
"aspect_ratio": "landscape"
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
```
|
|
1404
|
+
|
|
1405
|
+
**Then add lip-sync if specific script needed (from MODEL_REGISTRY.md):**
|
|
1406
|
+
```json
|
|
1407
|
+
{
|
|
1408
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
1409
|
+
"input": {
|
|
1410
|
+
"video_url": "[generated video URL]",
|
|
1411
|
+
"audio_file": "[TTS audio URL]"
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
```
|
|
1415
|
+
|
|
1416
|
+
---
|
|
1417
|
+
|
|
1418
|
+
### 3. UGC-Style Content
|
|
1419
|
+
|
|
1420
|
+
**Best for:** Authentic testimonials, product reviews, social proof
|
|
1421
|
+
|
|
1422
|
+
**The UGC Formula:**
|
|
1423
|
+
```
|
|
1424
|
+
[Relatable person] + [Casual setting] + [Natural lighting] +
|
|
1425
|
+
[Authentic delivery] + [Genuine reaction] = Believable UGC
|
|
1426
|
+
```
|
|
1427
|
+
|
|
1428
|
+
**Prompt Template:**
|
|
1429
|
+
```
|
|
1430
|
+
Friendly [demographic] sitting in [casual setting], natural window light,
|
|
1431
|
+
holding/showing [product], genuine excited expression, talking directly to
|
|
1432
|
+
camera like filming a selfie video, authentic UGC testimonial style, casual
|
|
1433
|
+
comfortable body language, 5 seconds
|
|
1434
|
+
```
|
|
1435
|
+
|
|
1436
|
+
---
|
|
1437
|
+
|
|
1438
|
+
### 4. Personal Brand Series
|
|
1439
|
+
|
|
1440
|
+
**Best for:** Thought leaders, course creators, coaches, consultants
|
|
1441
|
+
|
|
1442
|
+
**Consistency Formula:**
|
|
1443
|
+
```
|
|
1444
|
+
ESTABLISH ONCE, USE FOREVER:
|
|
1445
|
+
- Same presenter appearance (saved in creative-kit.md)
|
|
1446
|
+
- Same setting/background
|
|
1447
|
+
- Same wardrobe style
|
|
1448
|
+
- Same energy level
|
|
1449
|
+
- Same lighting setup
|
|
1450
|
+
- Same TTS voice (voice_id saved in creative-kit.md)
|
|
1451
|
+
|
|
1452
|
+
Only change: Script and specific content
|
|
1453
|
+
```
|
|
1454
|
+
|
|
1455
|
+
**Series Prompt Template:**
|
|
1456
|
+
```
|
|
1457
|
+
[Consistent presenter description from creative-kit.md], [same setting],
|
|
1458
|
+
[same lighting], [same wardrobe style], [same energy], discussing [new topic],
|
|
1459
|
+
[consistent delivery style], 5 seconds
|
|
1460
|
+
```
|
|
1461
|
+
|
|
1462
|
+
---
|
|
1463
|
+
|
|
1464
|
+
### 5. Multi-Language Dubbing
|
|
1465
|
+
|
|
1466
|
+
**Best for:** International campaigns, localized content, global brands
|
|
1467
|
+
|
|
1468
|
+
**Workflow:**
|
|
1469
|
+
```
|
|
1470
|
+
1. Generate presenter video once (approve visual)
|
|
1471
|
+
2. Write scripts in each target language
|
|
1472
|
+
3. Generate TTS audio per language using ElevenLabs multi-language voices
|
|
1473
|
+
4. Run Kling Lip-Sync for each language version
|
|
1474
|
+
5. Result: Same presenter, multiple languages
|
|
1475
|
+
```
|
|
1476
|
+
|
|
1477
|
+
**Cost advantage:** One presenter video generation (~$0.40-1.20) + one lip-sync per language (~$0.30-0.60 each) = dramatically cheaper than filming multiple takes.
|
|
1478
|
+
|
|
1479
|
+
---
|
|
1480
|
+
|
|
1481
|
+
## Execution Workflow
|
|
1482
|
+
|
|
1483
|
+
### Step 1: Clarify Requirements
|
|
1484
|
+
|
|
1485
|
+
Before generating:
|
|
1486
|
+
```
|
|
1487
|
+
[ ] What's the use case? (UGC, corporate, educational, etc.)
|
|
1488
|
+
[ ] What platform? (TikTok, YouTube, LinkedIn, ads)
|
|
1489
|
+
[ ] What aspect ratio? (9:16, 16:9, 1:1)
|
|
1490
|
+
[ ] What duration? (and word count)
|
|
1491
|
+
[ ] What presenter style? (see archetypes)
|
|
1492
|
+
[ ] What's the script/message?
|
|
1493
|
+
[ ] Need lip-sync to specific audio?
|
|
1494
|
+
[ ] Is there an approved presenter in creative-kit.md?
|
|
1495
|
+
[ ] Budget constraints?
|
|
1496
|
+
```
|
|
1497
|
+
|
|
1498
|
+
### Step 2: Style Selection
|
|
1499
|
+
|
|
1500
|
+
If not predefined and no approved presenter in creative-kit.md:
|
|
1501
|
+
```
|
|
1502
|
+
[ ] Generate style exploration with 4-5 different presenter styles
|
|
1503
|
+
[ ] Present options to user
|
|
1504
|
+
[ ] Extract principles from winner
|
|
1505
|
+
[ ] Save to creative-kit.md for future reuse
|
|
1506
|
+
[ ] Document voice selection alongside visual spec
|
|
1507
|
+
```
|
|
1508
|
+
|
|
1509
|
+
If approved presenter exists in creative-kit.md:
|
|
1510
|
+
```
|
|
1511
|
+
[ ] Load presenter spec from creative-kit.md
|
|
1512
|
+
[ ] Load voice_id from creative-kit.md
|
|
1513
|
+
[ ] Skip to Step 3
|
|
1514
|
+
```
|
|
1515
|
+
|
|
1516
|
+
### Step 3: Script Writing
|
|
1517
|
+
|
|
1518
|
+
```
|
|
1519
|
+
[ ] Extract key message
|
|
1520
|
+
[ ] Calculate word count for target duration
|
|
1521
|
+
[ ] Write script using appropriate structure (Hook-Value-CTA, PAS, Before-After)
|
|
1522
|
+
[ ] Apply tone template matching archetype
|
|
1523
|
+
[ ] Review word count against duration target
|
|
1524
|
+
[ ] Finalize script
|
|
1525
|
+
```
|
|
1526
|
+
|
|
1527
|
+
### Step 4: Estimate Cost and Confirm
|
|
1528
|
+
|
|
1529
|
+
```
|
|
1530
|
+
ESTIMATED GENERATION COST
|
|
1531
|
+
─────────────────────────
|
|
1532
|
+
Models: [list models]
|
|
1533
|
+
Clips: [number of clips]
|
|
1534
|
+
Duration per clip: [seconds]
|
|
1535
|
+
TTS generation: [included/separate]
|
|
1536
|
+
Lip-sync: [yes/no]
|
|
1537
|
+
Estimated total: ~$X.XX
|
|
1538
|
+
Estimated time: ~Xmin
|
|
1539
|
+
|
|
1540
|
+
Proceed? [Y/n]
|
|
1541
|
+
```
|
|
1542
|
+
|
|
1543
|
+
### Step 5: Construct Prompt
|
|
1544
|
+
|
|
1545
|
+
Use this formula:
|
|
1546
|
+
```
|
|
1547
|
+
[PRESENTER DESCRIPTION] + [SETTING] + [LIGHTING] +
|
|
1548
|
+
[EXPRESSION/ENERGY] + [ACTION] + [STYLE MODIFIER] + [DURATION]
|
|
1549
|
+
```
|
|
1550
|
+
|
|
1551
|
+
### Step 6: Multi-Model Generation
|
|
1552
|
+
|
|
1553
|
+
```
|
|
1554
|
+
Run same prompt through:
|
|
1555
|
+
1. Kling 2.5 (~3min) — default, best for faces
|
|
1556
|
+
2. Veo 3.1 (~5min) — with audio, highest fidelity
|
|
1557
|
+
3. Sora 2 (~6min) — strong prompt adherence
|
|
1558
|
+
|
|
1559
|
+
Present all three to user for selection.
|
|
1560
|
+
```
|
|
1561
|
+
|
|
1562
|
+
For standard content (not hero), use default model only (Kling 2.5).
|
|
1563
|
+
|
|
1564
|
+
### Step 7: TTS Audio Generation
|
|
1565
|
+
|
|
1566
|
+
If lip-sync is needed:
|
|
1567
|
+
```
|
|
1568
|
+
1. Load voice_id from creative-kit.md
|
|
1569
|
+
2. Generate audio from final script via TTS
|
|
1570
|
+
3. Verify audio duration matches video duration
|
|
1571
|
+
4. Download audio file
|
|
1572
|
+
```
|
|
1573
|
+
|
|
1574
|
+
### Step 8: Add Lip-Sync (If Needed)
|
|
1575
|
+
|
|
1576
|
+
If specific script delivery required:
|
|
1577
|
+
```
|
|
1578
|
+
1. User approves video from Step 6
|
|
1579
|
+
2. Run through Kling Lip-Sync with TTS audio
|
|
1580
|
+
3. Input: selected video + audio file
|
|
1581
|
+
4. Output: synced talking head
|
|
1582
|
+
```
|
|
1583
|
+
|
|
1584
|
+
**Payload (from MODEL_REGISTRY.md):**
|
|
1585
|
+
```json
|
|
1586
|
+
{
|
|
1587
|
+
"model": "{{lip_sync_model_from_stack}}",
|
|
1588
|
+
"input": {
|
|
1589
|
+
"video_url": "[approved video URL]",
|
|
1590
|
+
"audio_file": "[TTS audio URL]"
|
|
1591
|
+
}
|
|
1592
|
+
}
|
|
1593
|
+
```
|
|
1594
|
+
|
|
1595
|
+
### Step 9: FTC Compliance Check
|
|
1596
|
+
|
|
1597
|
+
```
|
|
1598
|
+
[ ] AI disclosure text overlay added (or planned for post-production)
|
|
1599
|
+
[ ] Platform-specific AI label will be applied on upload
|
|
1600
|
+
[ ] Script does not make unsubstantiated claims
|
|
1601
|
+
[ ] No impersonation of real individuals
|
|
1602
|
+
[ ] Description/caption disclosure prepared
|
|
1603
|
+
```
|
|
1604
|
+
|
|
1605
|
+
### Step 10: Deliver and Iterate
|
|
1606
|
+
|
|
1607
|
+
```markdown
|
|
1608
|
+
## Talking Head Video Delivered
|
|
1609
|
+
|
|
1610
|
+
**Style:** [Archetype used]
|
|
1611
|
+
**Platform:** [Target platform]
|
|
1612
|
+
**Duration:** [X seconds]
|
|
1613
|
+
**Presenter:** [Name from creative-kit.md or "New — pending approval"]
|
|
1614
|
+
|
|
1615
|
+
### Selected Video
|
|
1616
|
+
[video URL]
|
|
1617
|
+
**Model:** [which model — from MODEL_REGISTRY.md]
|
|
1618
|
+
**Estimated Cost:** ~$[amount]
|
|
1619
|
+
|
|
1620
|
+
### Lip-Sync Version (if applicable)
|
|
1621
|
+
[video URL]
|
|
1622
|
+
**Script:** "[excerpt...]"
|
|
1623
|
+
**Voice:** [voice name/ID]
|
|
1624
|
+
|
|
1625
|
+
### FTC Compliance
|
|
1626
|
+
- AI disclosure: [included/pending post-production]
|
|
1627
|
+
- Platform label: [to be applied on upload]
|
|
1628
|
+
|
|
1629
|
+
**Saved to:** ./campaigns/{campaign}/video/talking-head/[filename].mp4
|
|
1630
|
+
|
|
1631
|
+
**Options:**
|
|
1632
|
+
- [ ] Approve and use
|
|
1633
|
+
- [ ] Adjust script and resync
|
|
1634
|
+
- [ ] Try different presenter style
|
|
1635
|
+
- [ ] Save presenter to creative-kit.md
|
|
1636
|
+
```
|
|
1637
|
+
|
|
1638
|
+
---
|
|
1639
|
+
|
|
1640
|
+
## File Output
|
|
1641
|
+
|
|
1642
|
+
All generated talking head assets are saved to the campaign directory.
|
|
1643
|
+
|
|
1644
|
+
### Output Directory Structure
|
|
1645
|
+
|
|
1646
|
+
```
|
|
1647
|
+
./campaigns/{campaign}/video/talking-head/
|
|
1648
|
+
├── presenter-exploration/
|
|
1649
|
+
│ ├── corporate-authority-kling-v1.mp4
|
|
1650
|
+
│ ├── relatable-friend-kling-v1.mp4
|
|
1651
|
+
│ ├── energetic-creator-kling-v1.mp4
|
|
1652
|
+
│ ├── expert-educator-kling-v1.mp4
|
|
1653
|
+
│ └── lifestyle-aspirational-kling-v1.mp4
|
|
1654
|
+
├── generation/
|
|
1655
|
+
│ ├── presenter-kling-v1.mp4
|
|
1656
|
+
│ ├── presenter-veo-v1.mp4
|
|
1657
|
+
│ ├── presenter-sora-v1.mp4
|
|
1658
|
+
│ └── presenter-kling-v2.mp4 (iteration)
|
|
1659
|
+
├── audio/
|
|
1660
|
+
│ ├── script-v1-elevenlabs.mp3
|
|
1661
|
+
│ ├── script-v2-elevenlabs.mp3
|
|
1662
|
+
│ └── script-v1-spanish.mp3 (localization)
|
|
1663
|
+
├── lip-sync/
|
|
1664
|
+
│ ├── presenter-synced-v1.mp4
|
|
1665
|
+
│ ├── presenter-synced-v2.mp4
|
|
1666
|
+
│ └── presenter-synced-spanish.mp4 (localization)
|
|
1667
|
+
└── approved/
|
|
1668
|
+
├── final-talking-head.mp4 (selected winner)
|
|
1669
|
+
└── final-talking-head-spanish.mp4
|
|
1670
|
+
```
|
|
1671
|
+
|
|
1672
|
+
### File Naming Convention
|
|
1673
|
+
|
|
1674
|
+
```
|
|
1675
|
+
{purpose}-{model}-v{version}.mp4
|
|
1676
|
+
|
|
1677
|
+
Examples:
|
|
1678
|
+
presenter-kling-v1.mp4
|
|
1679
|
+
ugc-testimonial-kling-v1.mp4
|
|
1680
|
+
corporate-intro-veo-v1.mp4
|
|
1681
|
+
product-explainer-sora-v1.mp4
|
|
1682
|
+
presenter-synced-v1.mp4 (lip-synced version)
|
|
1683
|
+
presenter-synced-spanish-v1.mp4 (localized lip-sync)
|
|
1684
|
+
```
|
|
1685
|
+
|
|
1686
|
+
### Saving Deliverables
|
|
1687
|
+
|
|
1688
|
+
After the user approves a video:
|
|
1689
|
+
1. Download the video from the generation URL
|
|
1690
|
+
2. Save to `./campaigns/{campaign}/video/talking-head/generation/` with the naming convention
|
|
1691
|
+
3. If lip-synced: save synced version to `./campaigns/{campaign}/video/talking-head/lip-sync/`
|
|
1692
|
+
4. Copy the approved final version to `./campaigns/{campaign}/video/talking-head/approved/`
|
|
1693
|
+
5. Log the generation metadata (model, prompt, cost, timestamp, voice_id)
|
|
1694
|
+
6. If new presenter approved: save spec to `./brand/creative-kit.md`
|
|
1695
|
+
|
|
1696
|
+
---
|
|
1697
|
+
|
|
1698
|
+
## Quality Checklist
|
|
1699
|
+
|
|
1700
|
+
### Technical Quality
|
|
1701
|
+
- [ ] Face clearly visible throughout
|
|
1702
|
+
- [ ] No uncanny valley artifacts
|
|
1703
|
+
- [ ] Consistent appearance (no morphing)
|
|
1704
|
+
- [ ] Smooth natural movement
|
|
1705
|
+
- [ ] Appropriate resolution for platform
|
|
1706
|
+
|
|
1707
|
+
### Presenter Quality
|
|
1708
|
+
- [ ] Matches intended archetype
|
|
1709
|
+
- [ ] Expression appropriate for message
|
|
1710
|
+
- [ ] Energy level fits content type
|
|
1711
|
+
- [ ] Wardrobe matches brand/context
|
|
1712
|
+
- [ ] Setting supports message
|
|
1713
|
+
- [ ] Consistent with creative-kit.md specification (if approved presenter exists)
|
|
1714
|
+
|
|
1715
|
+
### Lip-Sync Quality (if applicable)
|
|
1716
|
+
- [ ] Mouth movement matches audio
|
|
1717
|
+
- [ ] Natural speech rhythm
|
|
1718
|
+
- [ ] No obvious desync
|
|
1719
|
+
- [ ] Head movement doesn't break sync
|
|
1720
|
+
- [ ] Audio quality clear
|
|
1721
|
+
|
|
1722
|
+
### Content Quality
|
|
1723
|
+
- [ ] Script delivered clearly
|
|
1724
|
+
- [ ] Pacing appropriate for platform
|
|
1725
|
+
- [ ] Hook captures attention
|
|
1726
|
+
- [ ] Message comes through
|
|
1727
|
+
- [ ] CTA clear (if applicable)
|
|
1728
|
+
|
|
1729
|
+
### Voice Quality (if TTS used)
|
|
1730
|
+
- [ ] Voice matches presenter archetype
|
|
1731
|
+
- [ ] Pace feels natural for the content
|
|
1732
|
+
- [ ] Pronunciation correct (especially brand names)
|
|
1733
|
+
- [ ] Emotional tone matches script intent
|
|
1734
|
+
- [ ] No robotic artifacts or unnatural pauses
|
|
1735
|
+
|
|
1736
|
+
### FTC Compliance Quality
|
|
1737
|
+
- [ ] AI disclosure present and visible
|
|
1738
|
+
- [ ] Disclosure appears within first 5 seconds
|
|
1739
|
+
- [ ] Platform-specific AI label will be applied
|
|
1740
|
+
- [ ] No misleading claims about real person endorsement
|
|
1741
|
+
- [ ] Description/caption disclosure prepared
|
|
1742
|
+
|
|
1743
|
+
### Platform Fit
|
|
1744
|
+
- [ ] Correct aspect ratio for destination platform
|
|
1745
|
+
- [ ] Duration within platform optimal range
|
|
1746
|
+
- [ ] Safe zones respected (mobile UI overlays)
|
|
1747
|
+
- [ ] Thumbnail/first frame compelling
|
|
1748
|
+
- [ ] Works with platform compression
|
|
1749
|
+
|
|
1750
|
+
---
|
|
1751
|
+
|
|
1752
|
+
## Common Issues and Solutions
|
|
1753
|
+
|
|
1754
|
+
| Issue | Cause | Solution |
|
|
1755
|
+
|-------|-------|----------|
|
|
1756
|
+
| Uncanny valley feel | Model limitations | Use Kling v2.5 for most realistic faces |
|
|
1757
|
+
| Face morphing mid-video | Long duration | Keep videos shorter (5-10 sec), extend with cuts |
|
|
1758
|
+
| Lip-sync drift | Audio/video mismatch | Use shorter scripts, clear enunciation |
|
|
1759
|
+
| Wrong energy level | Prompt too vague | Be explicit about energy: "calm" vs "enthusiastic" |
|
|
1760
|
+
| Generic stock presenter | No specific direction | Add detailed demographic and style descriptors |
|
|
1761
|
+
| Setting doesn't match | Prompt conflict | Prioritize setting description, remove conflicts |
|
|
1762
|
+
| Awkward hand movement | Unspecified gestures | Add gesture direction or specify "minimal movement" |
|
|
1763
|
+
| Bad lighting | Missing lighting prompt | Always include lighting: "warm natural light" |
|
|
1764
|
+
| Doesn't look like brand | No style consistency | Save presenter spec to creative-kit.md and reuse |
|
|
1765
|
+
| Audio quality poor | Model TTS limitations | Use external TTS (ElevenLabs) instead of text input |
|
|
1766
|
+
| Voice doesn't match visual | Wrong TTS voice selected | Re-select voice per archetype guidelines |
|
|
1767
|
+
| Lip-sync rejected | Video too long/short | Trim video to 2-10 seconds per Kling Lip-Sync requirements |
|
|
1768
|
+
| Audio file too large | Uncompressed audio | Compress to MP3 under 5MB |
|
|
1769
|
+
| Side profile sync fails | Non-frontal face | Use front-facing presenter videos for lip-sync |
|
|
1770
|
+
| Script too long for duration | Word count miscalculation | Recalculate: ~150 words per minute |
|
|
1771
|
+
| API parameter error | Wrong param name for model | Check cross-model cheat sheet in MODEL_REGISTRY.md |
|
|
1772
|
+
| Aspect ratio rejected | Model doesn't support it | Check MODEL_REGISTRY.md — Veo/Sora have no square support |
|
|
1773
|
+
| Generation timeout | Model overloaded | Retry; allow extra buffer for Sora 2 |
|
|
1774
|
+
| Presenter inconsistent across videos | Not using saved spec | Load presenter prompt from creative-kit.md |
|
|
1775
|
+
|
|
1776
|
+
---
|
|
1777
|
+
|
|
1778
|
+
## Iteration Strategies
|
|
1779
|
+
|
|
1780
|
+
### When Presenter Is Close But Not Right
|
|
1781
|
+
|
|
1782
|
+
**Problem:** Almost there but something's off
|
|
1783
|
+
**Strategy:** Targeted prompt adjustments
|
|
1784
|
+
|
|
1785
|
+
```
|
|
1786
|
+
Wrong energy → adjust energy descriptors: "calm measured" vs "enthusiastic dynamic"
|
|
1787
|
+
Wrong age → adjust age range: "early 30s" vs "late 40s"
|
|
1788
|
+
Wrong setting → change environment descriptors
|
|
1789
|
+
Wrong wardrobe → update clothing description
|
|
1790
|
+
Expression off → add explicit expression: "warm genuine smile" vs "confident neutral"
|
|
1791
|
+
```
|
|
1792
|
+
|
|
1793
|
+
### When Presenter Is Completely Wrong
|
|
1794
|
+
|
|
1795
|
+
**Problem:** Output doesn't match intent
|
|
1796
|
+
**Strategy:** Different approach entirely
|
|
1797
|
+
|
|
1798
|
+
Don't iterate on broken foundation:
|
|
1799
|
+
1. Try different archetype entirely
|
|
1800
|
+
2. Try different model
|
|
1801
|
+
3. Simplify prompt dramatically
|
|
1802
|
+
4. Check if Kling v2.5 gives better face quality
|
|
1803
|
+
|
|
1804
|
+
### When Lip-Sync Quality Is Poor
|
|
1805
|
+
|
|
1806
|
+
**Problem:** Audio doesn't match mouth movement
|
|
1807
|
+
**Strategy:** Technical fixes
|
|
1808
|
+
|
|
1809
|
+
```
|
|
1810
|
+
- Use shorter scripts (fewer words = easier sync)
|
|
1811
|
+
- Ensure audio has clear enunciation
|
|
1812
|
+
- Use front-facing video (not profiles)
|
|
1813
|
+
- Try generating a new presenter video with more frontal positioning
|
|
1814
|
+
- Use recorded audio instead of model TTS for better quality
|
|
1815
|
+
- Verify video is 2-10 seconds
|
|
1816
|
+
- Check audio file is under 5MB
|
|
1817
|
+
```
|
|
1818
|
+
|
|
1819
|
+
### When Voice Doesn't Match
|
|
1820
|
+
|
|
1821
|
+
**Problem:** TTS voice feels wrong for the presenter
|
|
1822
|
+
**Strategy:** Voice re-selection
|
|
1823
|
+
|
|
1824
|
+
```
|
|
1825
|
+
1. Review archetype voice guidelines (see TTS Voice Selection tables)
|
|
1826
|
+
2. Test 3-5 alternative voices from ElevenLabs library
|
|
1827
|
+
3. Prioritize: natural match to visual > quality > cost
|
|
1828
|
+
4. Re-generate lip-sync with new voice
|
|
1829
|
+
5. Update voice_id in creative-kit.md when satisfied
|
|
1830
|
+
```
|
|
1831
|
+
|
|
1832
|
+
### When Budget Is a Concern
|
|
1833
|
+
|
|
1834
|
+
**Problem:** Need to minimize generation costs
|
|
1835
|
+
**Strategy:** Targeted model selection
|
|
1836
|
+
|
|
1837
|
+
```
|
|
1838
|
+
- Use Kling 2.5 only (cheapest at ~$0.40/clip)
|
|
1839
|
+
- Use model TTS (text input) instead of external TTS for prototyping
|
|
1840
|
+
- Skip parallel comparison for non-hero content
|
|
1841
|
+
- Reuse approved presenter video for multiple scripts via lip-sync
|
|
1842
|
+
- Plan scripts carefully before generating (avoid wasted generations)
|
|
1843
|
+
```
|
|
1844
|
+
|
|
1845
|
+
---
|
|
1846
|
+
|
|
1847
|
+
## Output Format
|
|
1848
|
+
|
|
1849
|
+
### Style Exploration Output
|
|
1850
|
+
```markdown
|
|
1851
|
+
## Presenter Style Exploration
|
|
1852
|
+
|
|
1853
|
+
**Brand/Project:** [Name]
|
|
1854
|
+
**Use Case:** [What videos will be used for]
|
|
1855
|
+
**Platform:** [Target platform]
|
|
1856
|
+
|
|
1857
|
+
### Style 1: Corporate Authority
|
|
1858
|
+
[video URL]
|
|
1859
|
+
- Demographic: [specifics]
|
|
1860
|
+
- Setting: [description]
|
|
1861
|
+
- Energy: [level]
|
|
1862
|
+
- Saved to: ./campaigns/{campaign}/video/talking-head/presenter-exploration/
|
|
1863
|
+
|
|
1864
|
+
### Style 2: Relatable Friend
|
|
1865
|
+
[video URL]
|
|
1866
|
+
- Demographic: [specifics]
|
|
1867
|
+
- Setting: [description]
|
|
1868
|
+
- Energy: [level]
|
|
1869
|
+
|
|
1870
|
+
### Style 3: Energetic Creator
|
|
1871
|
+
[video URL]
|
|
1872
|
+
- Demographic: [specifics]
|
|
1873
|
+
- Setting: [description]
|
|
1874
|
+
- Energy: [level]
|
|
1875
|
+
|
|
1876
|
+
### Style 4: Expert Educator
|
|
1877
|
+
[video URL]
|
|
1878
|
+
- Demographic: [specifics]
|
|
1879
|
+
- Setting: [description]
|
|
1880
|
+
- Energy: [level]
|
|
1881
|
+
|
|
1882
|
+
### Style 5: Lifestyle Aspirational
|
|
1883
|
+
[video URL]
|
|
1884
|
+
- Demographic: [specifics]
|
|
1885
|
+
- Setting: [description]
|
|
1886
|
+
- Energy: [level]
|
|
1887
|
+
|
|
1888
|
+
**Recommendation:** Style [X] best fits because [reasons]
|
|
1889
|
+
**Feedback needed:** Which direction resonates?
|
|
1890
|
+
**Next step:** Approve a style to save to creative-kit.md
|
|
1891
|
+
```
|
|
1892
|
+
|
|
1893
|
+
### Generated Video Output
|
|
1894
|
+
```markdown
|
|
1895
|
+
## Talking Head Video Generated
|
|
1896
|
+
|
|
1897
|
+
**Style:** [Archetype]
|
|
1898
|
+
**Platform:** [Target]
|
|
1899
|
+
**Duration:** [X seconds]
|
|
1900
|
+
**Presenter:** [From creative-kit.md or "New"]
|
|
1901
|
+
|
|
1902
|
+
### Model Outputs:
|
|
1903
|
+
|
|
1904
|
+
**Kling 2.5:** [URL] (~$0.40)
|
|
1905
|
+
**Veo 3.1:** [URL] (includes audio) (~$1.00)
|
|
1906
|
+
**Sora 2:** [URL] (~$0.80)
|
|
1907
|
+
|
|
1908
|
+
**Total generation cost:** ~$2.20
|
|
1909
|
+
|
|
1910
|
+
**Prompt Used:**
|
|
1911
|
+
> [full prompt for reference]
|
|
1912
|
+
|
|
1913
|
+
**Next Steps:**
|
|
1914
|
+
- [ ] Select preferred video
|
|
1915
|
+
- [ ] Generate TTS audio for lip-sync
|
|
1916
|
+
- [ ] Add lip-sync to specific script
|
|
1917
|
+
- [ ] Request variation
|
|
1918
|
+
- [ ] Approve for use
|
|
1919
|
+
- [ ] Save presenter to creative-kit.md
|
|
1920
|
+
```
|
|
1921
|
+
|
|
1922
|
+
### Lip-Sync Output
|
|
1923
|
+
```markdown
|
|
1924
|
+
## Lip-Sync Video Delivered
|
|
1925
|
+
|
|
1926
|
+
**Source Video:** [URL]
|
|
1927
|
+
**Script:** "[excerpt...]"
|
|
1928
|
+
**Duration:** [X seconds]
|
|
1929
|
+
**Voice:** [voice name, voice_id]
|
|
1930
|
+
**TTS Provider:** [ElevenLabs / Model built-in / Recorded]
|
|
1931
|
+
|
|
1932
|
+
**Final Video:** [URL]
|
|
1933
|
+
**Estimated Cost:** ~$[lip-sync cost]
|
|
1934
|
+
**Saved to:** ./campaigns/{campaign}/video/talking-head/lip-sync/[filename].mp4
|
|
1935
|
+
|
|
1936
|
+
**Quality Check:**
|
|
1937
|
+
- Sync accuracy: [pass/fail]
|
|
1938
|
+
- Natural rhythm: [pass/fail]
|
|
1939
|
+
- Audio clarity: [pass/fail]
|
|
1940
|
+
- Expression match: [pass/fail]
|
|
1941
|
+
|
|
1942
|
+
**FTC Compliance:**
|
|
1943
|
+
- AI disclosure: [included/pending]
|
|
1944
|
+
- Platform label: [to apply on upload]
|
|
1945
|
+
|
|
1946
|
+
**Options:**
|
|
1947
|
+
- [ ] Approve and use
|
|
1948
|
+
- [ ] Adjust script and resync
|
|
1949
|
+
- [ ] Try different source video
|
|
1950
|
+
- [ ] Try different voice
|
|
1951
|
+
```
|
|
1952
|
+
|
|
1953
|
+
---
|
|
1954
|
+
|
|
1955
|
+
## Pipeline Integration
|
|
1956
|
+
|
|
1957
|
+
```
|
|
1958
|
+
TALKING HEAD PIPELINE
|
|
1959
|
+
|
|
1960
|
+
┌─────────────────────────────────────────┐
|
|
1961
|
+
│ Request arrives (direct or routed) │
|
|
1962
|
+
│ → Clarify: platform, duration, style │
|
|
1963
|
+
│ → Determine: generation vs lip-sync │
|
|
1964
|
+
│ → Check creative-kit.md for presenter │
|
|
1965
|
+
└─────────────────────────────────────────┘
|
|
1966
|
+
│
|
|
1967
|
+
┌───────────┴───────────┐
|
|
1968
|
+
▼ ▼
|
|
1969
|
+
┌──────────────────┐ ┌──────────────────┐
|
|
1970
|
+
│ Style Undefined │ │ Style Defined │
|
|
1971
|
+
│ (no approved │ │ (approved │
|
|
1972
|
+
│ presenter in │ │ presenter in │
|
|
1973
|
+
│ creative-kit) │ │ creative-kit) │
|
|
1974
|
+
│ → Run style │ │ → Load spec │
|
|
1975
|
+
│ exploration │ │ → Skip to │
|
|
1976
|
+
│ → Save winner │ │ generation │
|
|
1977
|
+
└──────────────────┘ └──────────────────┘
|
|
1978
|
+
│
|
|
1979
|
+
▼
|
|
1980
|
+
┌─────────────────────────────────────────┐
|
|
1981
|
+
│ Script Writing │
|
|
1982
|
+
│ → Key message extraction │
|
|
1983
|
+
│ → Duration-targeted word count │
|
|
1984
|
+
│ → Tone matching archetype │
|
|
1985
|
+
└─────────────────────────────────────────┘
|
|
1986
|
+
│
|
|
1987
|
+
▼
|
|
1988
|
+
┌─────────────────────────────────────────┐
|
|
1989
|
+
│ Cost Estimation │
|
|
1990
|
+
│ → Calculate based on models + clips │
|
|
1991
|
+
│ → Include TTS + lip-sync costs │
|
|
1992
|
+
│ → Present to user for confirmation │
|
|
1993
|
+
└─────────────────────────────────────────┘
|
|
1994
|
+
│
|
|
1995
|
+
▼
|
|
1996
|
+
┌─────────────────────────────────────────┐
|
|
1997
|
+
│ talking-head mode (THIS MODE) │
|
|
1998
|
+
│ → Multi-model generation │
|
|
1999
|
+
│ → Present options │
|
|
2000
|
+
│ → TTS audio generation │
|
|
2001
|
+
│ → Add lip-sync │
|
|
2002
|
+
│ → FTC compliance check │
|
|
2003
|
+
│ → Quality check │
|
|
2004
|
+
│ → Save to campaigns/{campaign}/ │
|
|
2005
|
+
│ video/talking-head/ │
|
|
2006
|
+
└─────────────────────────────────────────┘
|
|
2007
|
+
│
|
|
2008
|
+
▼
|
|
2009
|
+
┌─────────────────────────────────────────┐
|
|
2010
|
+
│ Delivery │
|
|
2011
|
+
│ → Platform-optimized output │
|
|
2012
|
+
│ → AI disclosure included │
|
|
2013
|
+
│ → Ready for ads/social/content │
|
|
2014
|
+
│ → Presenter saved to creative-kit.md │
|
|
2015
|
+
└─────────────────────────────────────────┘
|
|
2016
|
+
```
|
|
2017
|
+
|
|
2018
|
+
---
|
|
2019
|
+
|
|
2020
|
+
## Handoff Protocols
|
|
2021
|
+
|
|
2022
|
+
### Receiving from creative workflow
|
|
2023
|
+
```yaml
|
|
2024
|
+
Receive:
|
|
2025
|
+
use_case: "talking head" | "UGC" | "presenter" | "lip-sync"
|
|
2026
|
+
campaign: "[campaign name]"
|
|
2027
|
+
platform: "[target platform]"
|
|
2028
|
+
aspect_ratio: "[ratio]"
|
|
2029
|
+
duration: "[seconds]"
|
|
2030
|
+
style: "[archetype or custom]"
|
|
2031
|
+
script: "[text]"
|
|
2032
|
+
audio_url: "[if lip-sync with audio]"
|
|
2033
|
+
video_url: "[if lip-sync to existing]"
|
|
2034
|
+
budget_limit: "[if specified]"
|
|
2035
|
+
```
|
|
2036
|
+
|
|
2037
|
+
### Returning to Workflow
|
|
2038
|
+
```yaml
|
|
2039
|
+
Return:
|
|
2040
|
+
status: "complete" | "needs_selection" | "needs_iteration"
|
|
2041
|
+
deliverables:
|
|
2042
|
+
- url: "[video URL]"
|
|
2043
|
+
local_path: "./campaigns/{campaign}/video/talking-head/[filename].mp4"
|
|
2044
|
+
model: "[which model — from MODEL_REGISTRY.md]"
|
|
2045
|
+
has_audio: true | false
|
|
2046
|
+
has_lip_sync: true | false
|
|
2047
|
+
duration: "[seconds]"
|
|
2048
|
+
voice_id: "[if TTS used]"
|
|
2049
|
+
estimated_cost: "[cost]"
|
|
2050
|
+
presenter_saved: true | false
|
|
2051
|
+
ftc_disclosure: "included" | "pending_post_production"
|
|
2052
|
+
total_cost: "[sum of all generations]"
|
|
2053
|
+
feedback_needed: "[any questions]"
|
|
2054
|
+
```
|
|
2055
|
+
|
|
2056
|
+
### Receiving Video from product-video mode
|
|
2057
|
+
```yaml
|
|
2058
|
+
Receive for lip-sync:
|
|
2059
|
+
video_url: "[product video URL]"
|
|
2060
|
+
local_path: "./campaigns/{campaign}/video/[filename].mp4"
|
|
2061
|
+
aspect_ratio: "[ratio]"
|
|
2062
|
+
script: "[voiceover text]"
|
|
2063
|
+
audio_url: "[optional, if pre-recorded]"
|
|
2064
|
+
```
|
|
2065
|
+
|
|
2066
|
+
### Routing to product-video mode
|
|
2067
|
+
```yaml
|
|
2068
|
+
Route to product-video mode:
|
|
2069
|
+
reason: "Need product footage before adding presenter overlay"
|
|
2070
|
+
product: "[product name]"
|
|
2071
|
+
video_style: "[motion style from product-video mode]"
|
|
2072
|
+
return_to: "talking-head mode for voiceover/lip-sync"
|
|
2073
|
+
```
|
|
2074
|
+
|
|
2075
|
+
---
|
|
2076
|
+
|
|
2077
|
+
## Tips from Experience
|
|
2078
|
+
|
|
2079
|
+
### What Works
|
|
2080
|
+
|
|
2081
|
+
1. **Consistency beats variety** — Same presenter across videos builds recognition
|
|
2082
|
+
2. **Kling v2.5 for faces** — Most realistic human generation
|
|
2083
|
+
3. **Shorter is safer** — 5-10 second clips avoid quality degradation
|
|
2084
|
+
4. **Explicit energy levels** — "calm and measured" vs "enthusiastic and dynamic"
|
|
2085
|
+
5. **Multi-model approach** — Always generate with 2-3 models for hero content, let user pick
|
|
2086
|
+
6. **Lip-sync extends value** — One good video can become many scripts
|
|
2087
|
+
7. **External TTS for production** — ElevenLabs voice quality far exceeds model built-in TTS
|
|
2088
|
+
8. **Save everything to creative-kit.md** — Presenter spec + voice_id = instant reuse
|
|
2089
|
+
9. **FTC disclosure builds trust** — Be transparent about AI, audiences respect honesty
|
|
2090
|
+
10. **Duration-target your scripts** — Calculate word count before writing, not after
|
|
2091
|
+
|
|
2092
|
+
### What Doesn't Work
|
|
2093
|
+
|
|
2094
|
+
1. **Vague presenter description** — "A person talking" = generic results
|
|
2095
|
+
2. **Long continuous takes** — Quality degrades after 10-15 seconds
|
|
2096
|
+
3. **Ignoring setting** — Presenter without context looks artificial
|
|
2097
|
+
4. **Skipping style exploration** — First idea rarely best for brand
|
|
2098
|
+
5. **Mismatched energy** — Corporate script + UGC style = awkward
|
|
2099
|
+
6. **Complex movements** — Walking + talking + gesturing = artifacts
|
|
2100
|
+
7. **Model TTS for final delivery** — Built-in TTS voices are limited and inconsistent
|
|
2101
|
+
8. **Skipping FTC disclosure** — Platforms are building AI detection, regulations are tightening
|
|
2102
|
+
9. **Regenerating presenter for every video** — Save and reuse from creative-kit.md
|
|
2103
|
+
10. **Hardcoding model IDs** — Always use MODEL_REGISTRY.md
|
|
2104
|
+
|
|
2105
|
+
### The 80/20
|
|
2106
|
+
|
|
2107
|
+
80% of talking head success comes from:
|
|
2108
|
+
1. Clear presenter archetype selection
|
|
2109
|
+
2. Matching energy to platform
|
|
2110
|
+
3. Short, punchy scripts at exact word count
|
|
2111
|
+
4. Using Kling v2.5 for realism
|
|
2112
|
+
|
|
2113
|
+
Get these four right, and you'll get good results.
|
|
2114
|
+
|
|
2115
|
+
### Multi-Model Strategy
|
|
2116
|
+
|
|
2117
|
+
When to invest in parallel comparison:
|
|
2118
|
+
- **Hero content** (website presenters, launch videos) — Always run all three
|
|
2119
|
+
- **Social content** (feed posts, stories) — Default model is fine
|
|
2120
|
+
- **UGC batch** (multiple testimonial variants) — Default model, iterate on scripts
|
|
2121
|
+
- **Ad creative** (paid campaigns) — Run all three, A/B test the winners
|
|
2122
|
+
- **Personalized outreach** (sales videos) — Default model + lip-sync
|
|
2123
|
+
|
|
2124
|
+
### Budget Management
|
|
2125
|
+
|
|
2126
|
+
```
|
|
2127
|
+
BUDGET TIERS
|
|
2128
|
+
─────────────────────────────────
|
|
2129
|
+
Lean: 1 model, no lip-sync ~$0.40
|
|
2130
|
+
Standard: 1 model + lip-sync ~$0.70-1.00
|
|
2131
|
+
Premium: 3 models, lip-sync on winner ~$2.50-3.10
|
|
2132
|
+
Hero: 3 models + exploration + sync ~$4.50-6.00
|
|
2133
|
+
Campaign: 5 variants + 3 languages ~$5.00-10.00+
|
|
2134
|
+
```
|
|
2135
|
+
|
|
2136
|
+
---
|
|
2137
|
+
|
|
2138
|
+
## Quick Reference
|
|
2139
|
+
|
|
2140
|
+
| Task | Model | Process |
|
|
2141
|
+
|------|-------|---------|
|
|
2142
|
+
| Generate presenter video | All 3 models | Multi-model parallel, user picks |
|
|
2143
|
+
| Add speech to existing video | Kling Lip-Sync | Direct, ~1min |
|
|
2144
|
+
| Presenter + specific script | Generate → TTS → Lip-Sync | Three-step pipeline |
|
|
2145
|
+
| Video with built-in audio | Veo 3.1 | Single generation |
|
|
2146
|
+
| Most realistic face | Kling v2.5 | Single or multi-model |
|
|
2147
|
+
| Fastest generation | Kling v2.5 | Single generation |
|
|
2148
|
+
| UGC style | Kling v2.5 | Handles casual movement best |
|
|
2149
|
+
| Brand voice consistency | ElevenLabs TTS → Lip-Sync | External TTS, saved voice_id |
|
|
2150
|
+
| Multi-language dubbing | Kling Lip-Sync (per language) | One video + multiple audio files |
|
|
2151
|
+
| Quick script test | Kling Lip-Sync with `text` | Built-in TTS, fastest path |
|
|
2152
|
+
| Reuse approved presenter | Load from creative-kit.md | Skip exploration, direct generation |
|
|
2153
|
+
|
|
2154
|
+
---
|
|
2155
|
+
|
|
2156
|
+
## Appendix: Model API Quick Reference
|
|
2157
|
+
|
|
2158
|
+
**Always verify against MODEL_REGISTRY.md before executing.** This appendix is a convenience reference only.
|
|
2159
|
+
|
|
2160
|
+
### Video Generation Call Patterns
|
|
2161
|
+
|
|
2162
|
+
**Kling 2.5 T2V (Presenter Generation):**
|
|
2163
|
+
```
|
|
2164
|
+
Model: {{default_video_model from brand/stack.md}}
|
|
2165
|
+
Duration param: duration (5 or 10)
|
|
2166
|
+
Ratio param: aspect_ratio ("16:9", "9:16", "1:1")
|
|
2167
|
+
Extras: guidance_scale (0-1), negative_prompt
|
|
2168
|
+
```
|
|
2169
|
+
|
|
2170
|
+
**Veo 3.1 T2V (Presenter with Audio):**
|
|
2171
|
+
```
|
|
2172
|
+
Model: google/veo-3.1
|
|
2173
|
+
Duration param: duration (4, 6, or 8)
|
|
2174
|
+
Ratio param: aspect_ratio ("16:9", "9:16")
|
|
2175
|
+
Extras: generate_audio (bool), resolution ("720p", "1080p"), negative_prompt, seed
|
|
2176
|
+
```
|
|
2177
|
+
|
|
2178
|
+
**Sora 2 T2V (Presenter Generation):**
|
|
2179
|
+
```
|
|
2180
|
+
Model: {{comparison_video_model from brand/stack.md}}
|
|
2181
|
+
Duration param: seconds (4-12)
|
|
2182
|
+
Ratio param: aspect_ratio ("landscape", "portrait")
|
|
2183
|
+
Extras: openai_api_key (optional)
|
|
2184
|
+
```
|
|
2185
|
+
|
|
2186
|
+
### Lip-Sync Call Patterns
|
|
2187
|
+
|
|
2188
|
+
**Kling Lip-Sync (Audio-Driven):**
|
|
2189
|
+
```
|
|
2190
|
+
Model: {{lip_sync_model from brand/stack.md}}
|
|
2191
|
+
Video param: video_url (2-10s, 720p-1080p, <100MB)
|
|
2192
|
+
Audio param: audio_file (.mp3, .wav, .m4a, .aac, <5MB)
|
|
2193
|
+
```
|
|
2194
|
+
|
|
2195
|
+
**Kling Lip-Sync (Text-Driven):**
|
|
2196
|
+
```
|
|
2197
|
+
Model: {{lip_sync_model from brand/stack.md}}
|
|
2198
|
+
Video param: video_url (2-10s, 720p-1080p, <100MB)
|
|
2199
|
+
Text param: text (free text)
|
|
2200
|
+
Voice param: voice_id (e.g., "en_AOT")
|
|
2201
|
+
Speed param: voice_speed (0.5-2.0, default 1)
|
|
2202
|
+
```
|
|
2203
|
+
|
|
2204
|
+
**Important:** `audio_file` and `text` are mutually exclusive. `video_url` and `video_id` are mutually exclusive.
|
|
2205
|
+
|
|
2206
|
+
---
|
|
2207
|
+
|
|
2208
|
+
*This mode is part of the Vibe Marketing Skills v2 creative engine. Model configurations are maintained in `brand/stack.md`. When model schemas change upstream, MODEL_REGISTRY.md is updated first, then this mode file is updated to match.*
|