@jairodri/huckleberry-cli 1.0.1 → 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.
Files changed (745) hide show
  1. package/README.md +85 -0
  2. package/agents/cos.json +2 -5
  3. package/agents/hermes/AGENTS.md +25 -49
  4. package/agents/hermes/fix-kimaki/SKILL.md +19 -92
  5. package/agents/hermes/hermes-fixer.md +44 -74
  6. package/agents/hermes.json +6 -18
  7. package/kanban/SKILL.md +18 -18
  8. package/kanban/package.json +1 -1
  9. package/kanban/src/dispatcher.mjs +1 -1
  10. package/kanban/templates/blog-social-campaign.yaml +6 -2
  11. package/kanban/templates/social-campaign.yaml +9 -4
  12. package/mcp/jev-calibration.mjs +335 -0
  13. package/mcp/jev-client.mjs +119 -0
  14. package/mcp/jev-thresholds.json +27 -0
  15. package/package.json +13 -9
  16. package/scripts/doctor-watchdog.sh +73 -0
  17. package/scripts/install-services.sh +34 -27
  18. package/scripts/self-improve-weekly.sh +34 -0
  19. package/scripts/sync-skills.mjs +121 -0
  20. package/skills/ab-test-setup/SKILL.md +266 -0
  21. package/skills/ab-test-setup/evals/evals.json +105 -0
  22. package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
  23. package/skills/ab-test-setup/references/test-templates.md +277 -0
  24. package/skills/agent-reach/SKILL.md +132 -0
  25. package/skills/agent-reach/references/career.md +29 -0
  26. package/skills/agent-reach/references/dev.md +62 -0
  27. package/skills/agent-reach/references/search.md +33 -0
  28. package/skills/agent-reach/references/social.md +232 -0
  29. package/skills/agent-reach/references/video.md +130 -0
  30. package/skills/agent-reach/references/web.md +50 -0
  31. package/skills/ai-agent-seo/SKILL.md +450 -0
  32. package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
  33. package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
  34. package/skills/ai-consensus-builder/SKILL.md +324 -0
  35. package/skills/ai-seo/SKILL.md +399 -0
  36. package/skills/ai-seo/evals/evals.json +90 -0
  37. package/skills/ai-seo/references/content-patterns.md +284 -0
  38. package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
  39. package/skills/ai-visibility-audit/SKILL.md +322 -0
  40. package/skills/analytics-tracking/SKILL.md +309 -0
  41. package/skills/analytics-tracking/evals/evals.json +90 -0
  42. package/skills/analytics-tracking/references/event-library.md +260 -0
  43. package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
  44. package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
  45. package/skills/article-generator/SKILL.md +216 -0
  46. package/skills/auto-indexing/SKILL.md +179 -0
  47. package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
  48. package/skills/auto-skill/SKILL.md +151 -0
  49. package/skills/auto-skill/correction-queue.js +102 -0
  50. package/skills/auto-skill/dedup.js +97 -0
  51. package/skills/auto-skill/skill-router.js +224 -0
  52. package/skills/autoresearch/SKILL.md +334 -0
  53. package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
  54. package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
  55. package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
  56. package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
  57. package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
  58. package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
  59. package/skills/autoresearch/eval-guide.md +121 -0
  60. package/skills/b2b-cold-outreach/SKILL.md +322 -0
  61. package/skills/birdclaw/SKILL.md +82 -0
  62. package/skills/brainstorm/SKILL.md +168 -0
  63. package/skills/brand-kit-playground/SKILL.md +312 -0
  64. package/skills/brand-kit-playground/references/html-architecture.md +316 -0
  65. package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
  66. package/skills/brand-voice/SKILL.md +223 -0
  67. package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
  68. package/skills/brand-voice/references/voice-modes.md +1158 -0
  69. package/skills/business-advisory-council/README.md +136 -0
  70. package/skills/business-advisory-council/SKILL.md +94 -0
  71. package/skills/business-advisory-council/business-advisory-council.py +492 -0
  72. package/skills/business-advisory-council/discord-components-decision.json +8 -0
  73. package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
  74. package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
  75. package/skills/churn-prevention/SKILL.md +305 -0
  76. package/skills/churn-prevention/evals/evals.json +93 -0
  77. package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
  78. package/skills/churn-prevention/references/dunning-playbook.md +408 -0
  79. package/skills/claw-compactor/LICENSE +21 -0
  80. package/skills/claw-compactor/README.md +459 -0
  81. package/skills/claw-compactor/SKILL.md +329 -0
  82. package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
  83. package/skills/claw-compactor/benchmark/__init__.py +1 -0
  84. package/skills/claw-compactor/benchmark/compressors.py +520 -0
  85. package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
  86. package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
  87. package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
  88. package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
  89. package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
  90. package/skills/claw-compactor/benchmark/evaluate.py +278 -0
  91. package/skills/claw-compactor/benchmark/report.py +241 -0
  92. package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
  93. package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
  94. package/skills/claw-compactor/engram.yaml +49 -0
  95. package/skills/claw-compactor/proxy/README.md +87 -0
  96. package/skills/claw-compactor/proxy/dashboard.html +804 -0
  97. package/skills/claw-compactor/proxy/event-log.mjs +213 -0
  98. package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
  99. package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
  100. package/skills/claw-compactor/proxy/package-lock.json +125 -0
  101. package/skills/claw-compactor/proxy/package.json +15 -0
  102. package/skills/claw-compactor/proxy/portal.html +360 -0
  103. package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
  104. package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
  105. package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
  106. package/skills/claw-compactor/proxy/retry.mjs +182 -0
  107. package/skills/claw-compactor/proxy/server.mjs +2100 -0
  108. package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
  109. package/skills/claw-compactor/proxy/start.sh +23 -0
  110. package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
  111. package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
  112. package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
  113. package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
  114. package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
  115. package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
  116. package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
  117. package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
  118. package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
  119. package/skills/claw-compactor/pyproject.toml +26 -0
  120. package/skills/claw-compactor/references/README.md +44 -0
  121. package/skills/claw-compactor/references/architecture.md +197 -0
  122. package/skills/claw-compactor/references/benchmarks.md +94 -0
  123. package/skills/claw-compactor/references/compression-prompts.md +39 -0
  124. package/skills/claw-compactor/references/compression-techniques.md +219 -0
  125. package/skills/claw-compactor/references/testing.md +160 -0
  126. package/skills/claw-compactor/scripts/audit_memory.py +216 -0
  127. package/skills/claw-compactor/scripts/compress_memory.py +236 -0
  128. package/skills/claw-compactor/scripts/compressed_context.py +280 -0
  129. package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
  130. package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
  131. package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
  132. package/skills/claw-compactor/scripts/engram_auto.py +695 -0
  133. package/skills/claw-compactor/scripts/engram_cli.py +474 -0
  134. package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
  135. package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
  136. package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
  137. package/skills/claw-compactor/scripts/lib/config.py +289 -0
  138. package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
  139. package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
  140. package/skills/claw-compactor/scripts/lib/engram.py +793 -0
  141. package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
  142. package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
  143. package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
  144. package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
  145. package/skills/claw-compactor/scripts/lib/rle.py +165 -0
  146. package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
  147. package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
  148. package/skills/claw-compactor/scripts/mem_compress.py +788 -0
  149. package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
  150. package/skills/claw-compactor/tests/__init__.py +0 -0
  151. package/skills/claw-compactor/tests/conftest.py +94 -0
  152. package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
  153. package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
  154. package/skills/claw-compactor/tests/test_benchmark.py +122 -0
  155. package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
  156. package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
  157. package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
  158. package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
  159. package/skills/claw-compactor/tests/test_config.py +54 -0
  160. package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
  161. package/skills/claw-compactor/tests/test_dictionary.py +327 -0
  162. package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
  163. package/skills/claw-compactor/tests/test_engram.py +1091 -0
  164. package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
  165. package/skills/claw-compactor/tests/test_error_handling.py +194 -0
  166. package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
  167. package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
  168. package/skills/claw-compactor/tests/test_integration.py +249 -0
  169. package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
  170. package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
  171. package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
  172. package/skills/claw-compactor/tests/test_main_entry.py +176 -0
  173. package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
  174. package/skills/claw-compactor/tests/test_new_features.py +77 -0
  175. package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
  176. package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
  177. package/skills/claw-compactor/tests/test_performance.py +172 -0
  178. package/skills/claw-compactor/tests/test_pipeline.py +109 -0
  179. package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
  180. package/skills/claw-compactor/tests/test_rle.py +114 -0
  181. package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
  182. package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
  183. package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
  184. package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
  185. package/skills/claw-compactor/tests/test_token_economics.py +237 -0
  186. package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
  187. package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
  188. package/skills/claw-compactor/tests/test_tokens.py +27 -0
  189. package/skills/cmo/CHANGELOG.md +61 -0
  190. package/skills/cmo/SKILL.md +500 -0
  191. package/skills/cmo/references/ai-slop-patterns.md +56 -0
  192. package/skills/cmo/references/analytics-guide.md +152 -0
  193. package/skills/cmo/references/ideas-library.md +197 -0
  194. package/skills/cmo/rules/brand-file-map.md +198 -0
  195. package/skills/cmo/rules/brand-memory.md +158 -0
  196. package/skills/cmo/rules/cli-runtime-index.md +95 -0
  197. package/skills/cmo/rules/command-reference.md +167 -0
  198. package/skills/cmo/rules/communication.md +15 -0
  199. package/skills/cmo/rules/context-switch.md +101 -0
  200. package/skills/cmo/rules/ecosystem.md +125 -0
  201. package/skills/cmo/rules/error-recovery.md +98 -0
  202. package/skills/cmo/rules/learning-loop.md +170 -0
  203. package/skills/cmo/rules/monorepo.md +78 -0
  204. package/skills/cmo/rules/output-format.md +124 -0
  205. package/skills/cmo/rules/persona.md +15 -0
  206. package/skills/cmo/rules/playbooks.md +327 -0
  207. package/skills/cmo/rules/progressive-enhancement.md +231 -0
  208. package/skills/cmo/rules/publish-index.md +106 -0
  209. package/skills/cmo/rules/quality-gate.md +90 -0
  210. package/skills/cmo/rules/recency-grounding.md +124 -0
  211. package/skills/cmo/rules/safety.md +80 -0
  212. package/skills/cmo/rules/studio-api-index.md +138 -0
  213. package/skills/cmo/rules/studio-integration.md +147 -0
  214. package/skills/cmo/rules/sub-agents.md +167 -0
  215. package/skills/cold-email/SKILL.md +240 -0
  216. package/skills/cold-email/evals/evals.json +94 -0
  217. package/skills/cold-email/references/benchmarks.md +83 -0
  218. package/skills/cold-email/references/follow-up-sequences.md +81 -0
  219. package/skills/cold-email/references/frameworks.md +90 -0
  220. package/skills/cold-email/references/personalization.md +79 -0
  221. package/skills/cold-email/references/subject-lines.md +53 -0
  222. package/skills/competitive-intel/SKILL.md +433 -0
  223. package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
  224. package/skills/competitor-alternatives/SKILL.md +362 -0
  225. package/skills/competitor-alternatives/evals/evals.json +93 -0
  226. package/skills/competitor-alternatives/references/content-architecture.md +271 -0
  227. package/skills/competitor-alternatives/references/templates.md +223 -0
  228. package/skills/concreteness-fixer/SKILL.md +483 -0
  229. package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
  230. package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
  231. package/skills/content-atomizer/SKILL.md +424 -0
  232. package/skills/content-atomizer/references/hook-strategies.md +56 -0
  233. package/skills/content-atomizer/references/platform-specs.md +118 -0
  234. package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
  235. package/skills/content-atomizer/references/platforms/instagram.md +77 -0
  236. package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
  237. package/skills/content-atomizer/references/platforms/reddit.md +73 -0
  238. package/skills/content-atomizer/references/platforms/threads.md +64 -0
  239. package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
  240. package/skills/content-atomizer/references/platforms/twitter.md +123 -0
  241. package/skills/content-atomizer/references/platforms/youtube.md +56 -0
  242. package/skills/content-atomizer/references/tweet-patterns.md +40 -0
  243. package/skills/content-repost-manager/SKILL.md +245 -0
  244. package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
  245. package/skills/context-recovery/.clawdhub/origin.json +7 -0
  246. package/skills/context-recovery/SKILL.md +198 -0
  247. package/skills/context-recovery/_meta.json +6 -0
  248. package/skills/conversion-flow-cro/SKILL.md +248 -0
  249. package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
  250. package/skills/copy-editing/SKILL.md +474 -0
  251. package/skills/copy-editing/evals/evals.json +89 -0
  252. package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
  253. package/skills/copywriting/SKILL.md +349 -0
  254. package/skills/copywriting/evals/evals.json +111 -0
  255. package/skills/copywriting/references/awareness-level-guide.md +227 -0
  256. package/skills/copywriting/references/copy-frameworks.md +389 -0
  257. package/skills/copywriting/references/natural-transitions.md +272 -0
  258. package/skills/creative/SKILL.md +365 -0
  259. package/skills/creative/modes/ad-creative.md +1748 -0
  260. package/skills/creative/modes/product-photo.md +1520 -0
  261. package/skills/creative/modes/product-video.md +1657 -0
  262. package/skills/creative/modes/social-graphics.md +1511 -0
  263. package/skills/creative/modes/talking-head.md +2208 -0
  264. package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
  265. package/skills/deep-serp-article/SKILL.md +677 -0
  266. package/skills/deep-serp-article/SKILL.md.bak +530 -0
  267. package/skills/earned-media/SKILL.md +260 -0
  268. package/skills/email-sequences/SKILL.md +446 -0
  269. package/skills/email-sequences/references/sequence-templates.md +1217 -0
  270. package/skills/firecrawl/.skill-meta.json +13 -0
  271. package/skills/firecrawl/SKILL.md +154 -0
  272. package/skills/firecrawl/rules/install.md +63 -0
  273. package/skills/firecrawl/rules/security.md +26 -0
  274. package/skills/form-cro/SKILL.md +429 -0
  275. package/skills/form-cro/evals/evals.json +90 -0
  276. package/skills/free-tool-strategy/SKILL.md +325 -0
  277. package/skills/free-tool-strategy/evals/evals.json +90 -0
  278. package/skills/free-tool-strategy/references/tool-types.md +253 -0
  279. package/skills/frontend-slides/SKILL.md +248 -0
  280. package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
  281. package/skills/frontend-slides/animation-patterns.md +110 -0
  282. package/skills/frontend-slides/html-template.md +347 -0
  283. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  284. package/skills/frontend-slides/viewport-base.css +153 -0
  285. package/skills/guardrail-framework/SKILL.md +319 -0
  286. package/skills/hook-generator/SKILL.md +438 -0
  287. package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
  288. package/skills/hook-generator/database/instagram-hooks.json +591 -0
  289. package/skills/hook-generator/database/linkedin-hooks.json +502 -0
  290. package/skills/hook-generator/database/medium-hooks.json +181 -0
  291. package/skills/hook-generator/database/tiktok-hooks.json +337 -0
  292. package/skills/hook-generator/database/twitter-hooks.json +567 -0
  293. package/skills/hook-generator/database/youtube-hooks.json +275 -0
  294. package/skills/hook-generator/package-lock.json +24 -0
  295. package/skills/hook-generator/package.json +5 -0
  296. package/skills/hook-generator/references/hook-generation-system.md +257 -0
  297. package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
  298. package/skills/hook-generator/references/hooks-library.md +128 -0
  299. package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
  300. package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
  301. package/skills/hook-generator/scripts/generate-hooks.js +225 -0
  302. package/skills/hook-generator/scripts/generate.sh +36 -0
  303. package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
  304. package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
  305. package/skills/humanizer/README.md +120 -0
  306. package/skills/humanizer/SKILL.md +699 -0
  307. package/skills/image-gen/SKILL.md +277 -0
  308. package/skills/image-gen/references/prompt-patterns.md +114 -0
  309. package/skills/image-gen/references/visual-metaphors.md +51 -0
  310. package/skills/impeccable/SKILL.md +86 -0
  311. package/skills/impeccable/reference/adapt.md +312 -0
  312. package/skills/impeccable/reference/adapt.native.md +58 -0
  313. package/skills/impeccable/reference/android.md +40 -0
  314. package/skills/impeccable/reference/animate.md +86 -0
  315. package/skills/impeccable/reference/audit.md +136 -0
  316. package/skills/impeccable/reference/audit.native.md +139 -0
  317. package/skills/impeccable/reference/bolder.md +31 -0
  318. package/skills/impeccable/reference/clarify.md +94 -0
  319. package/skills/impeccable/reference/colorize.md +86 -0
  320. package/skills/impeccable/reference/craft-floor.md +42 -0
  321. package/skills/impeccable/reference/craft.md +5 -0
  322. package/skills/impeccable/reference/critique.md +788 -0
  323. package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
  324. package/skills/impeccable/reference/degraded/documenter.md +24 -0
  325. package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
  326. package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  327. package/skills/impeccable/reference/delight.md +70 -0
  328. package/skills/impeccable/reference/distill.md +111 -0
  329. package/skills/impeccable/reference/doctor.md +53 -0
  330. package/skills/impeccable/reference/document.md +416 -0
  331. package/skills/impeccable/reference/extract.md +69 -0
  332. package/skills/impeccable/reference/harden.md +336 -0
  333. package/skills/impeccable/reference/hooks.md +105 -0
  334. package/skills/impeccable/reference/init.md +125 -0
  335. package/skills/impeccable/reference/ios.md +45 -0
  336. package/skills/impeccable/reference/layout.md +84 -0
  337. package/skills/impeccable/reference/live-setup.md +102 -0
  338. package/skills/impeccable/reference/live.md +323 -0
  339. package/skills/impeccable/reference/new-work.md +110 -0
  340. package/skills/impeccable/reference/onboard.md +234 -0
  341. package/skills/impeccable/reference/operate.md +61 -0
  342. package/skills/impeccable/reference/optimize.md +258 -0
  343. package/skills/impeccable/reference/overdrive.md +127 -0
  344. package/skills/impeccable/reference/polish.md +97 -0
  345. package/skills/impeccable/reference/quieter.md +99 -0
  346. package/skills/impeccable/reference/routing.md +18 -0
  347. package/skills/impeccable/reference/shape.md +59 -0
  348. package/skills/impeccable/reference/typeset.md +80 -0
  349. package/skills/impeccable/reference/visualize.md +49 -0
  350. package/skills/impeccable/scripts/command-metadata.json +94 -0
  351. package/skills/impeccable/scripts/concept-seed.mjs +558 -0
  352. package/skills/impeccable/scripts/context-signals.mjs +334 -0
  353. package/skills/impeccable/scripts/context.mjs +1467 -0
  354. package/skills/impeccable/scripts/critique-storage.mjs +213 -0
  355. package/skills/impeccable/scripts/detect-csp.mjs +198 -0
  356. package/skills/impeccable/scripts/detect.mjs +21 -0
  357. package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
  358. package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
  359. package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
  360. package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
  361. package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
  362. package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
  363. package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
  364. package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
  365. package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
  366. package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
  367. package/skills/impeccable/scripts/detector/findings.mjs +18 -0
  368. package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
  369. package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
  370. package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
  371. package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
  372. package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
  373. package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
  374. package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  375. package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
  376. package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
  377. package/skills/impeccable/scripts/doctor.mjs +336 -0
  378. package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
  379. package/skills/impeccable/scripts/generate-image.mjs +240 -0
  380. package/skills/impeccable/scripts/hook-admin.mjs +801 -0
  381. package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
  382. package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
  383. package/skills/impeccable/scripts/hook.mjs +78 -0
  384. package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  385. package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
  386. package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
  387. package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
  388. package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
  389. package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
  390. package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
  391. package/skills/impeccable/scripts/lib/provider.mjs +5 -0
  392. package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
  393. package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
  394. package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  395. package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  396. package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  397. package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
  398. package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  399. package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  400. package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
  401. package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
  402. package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
  403. package/skills/impeccable/scripts/live/completion.mjs +28 -0
  404. package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
  405. package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
  406. package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
  407. package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
  408. package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
  409. package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
  410. package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
  411. package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
  412. package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
  413. package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
  414. package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
  415. package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
  416. package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
  417. package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  418. package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
  419. package/skills/impeccable/scripts/live/instructions.mjs +142 -0
  420. package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
  421. package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
  422. package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
  423. package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  424. package/skills/impeccable/scripts/live/roots.mjs +508 -0
  425. package/skills/impeccable/scripts/live/session-store.mjs +563 -0
  426. package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  427. package/skills/impeccable/scripts/live/source-search.mjs +105 -0
  428. package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
  429. package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
  430. package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
  431. package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  432. package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
  433. package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
  434. package/skills/impeccable/scripts/live-accept.mjs +954 -0
  435. package/skills/impeccable/scripts/live-browser-dom.js +146 -0
  436. package/skills/impeccable/scripts/live-browser-session.js +123 -0
  437. package/skills/impeccable/scripts/live-browser.js +12520 -0
  438. package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
  439. package/skills/impeccable/scripts/live-complete.mjs +107 -0
  440. package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
  441. package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
  442. package/skills/impeccable/scripts/live-inject.mjs +503 -0
  443. package/skills/impeccable/scripts/live-insert.mjs +292 -0
  444. package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
  445. package/skills/impeccable/scripts/live-poll.mjs +429 -0
  446. package/skills/impeccable/scripts/live-resume.mjs +123 -0
  447. package/skills/impeccable/scripts/live-server.mjs +1669 -0
  448. package/skills/impeccable/scripts/live-status.mjs +71 -0
  449. package/skills/impeccable/scripts/live-target.mjs +30 -0
  450. package/skills/impeccable/scripts/live-wrap.mjs +927 -0
  451. package/skills/impeccable/scripts/live.mjs +359 -0
  452. package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  453. package/skills/impeccable/scripts/palette.mjs +628 -0
  454. package/skills/impeccable/scripts/pin.mjs +221 -0
  455. package/skills/impeccable/scripts/serve-question.mjs +932 -0
  456. package/skills/impeccable/scripts/surface-brief.mjs +74 -0
  457. package/skills/inkstone-admin/SKILL.md +66 -0
  458. package/skills/jev-hook-gate/SKILL.md +111 -0
  459. package/skills/keyword-research/SKILL.md +503 -0
  460. package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
  461. package/skills/keyword-research/references/keyword-examples.md +769 -0
  462. package/skills/landing-page-architect/SKILL.md +585 -0
  463. package/skills/landing-page-architect/references/architecture-reference.md +32 -0
  464. package/skills/launch-strategy/SKILL.md +384 -0
  465. package/skills/launch-strategy/evals/evals.json +91 -0
  466. package/skills/launch-strategy/references/launch-checklist.md +209 -0
  467. package/skills/launch-strategy/references/launch-timeline.md +159 -0
  468. package/skills/lead-email-craft/SKILL.md +522 -0
  469. package/skills/lead-magnets/SKILL.md +310 -0
  470. package/skills/lead-magnets/references/benchmarks.md +129 -0
  471. package/skills/lead-magnets/references/format-guide.md +196 -0
  472. package/skills/link-building-seo/SKILL.md +210 -0
  473. package/skills/lint-report.txt +1 -0
  474. package/skills/manifest.json +129 -0
  475. package/skills/marketing-demo/SKILL.md +249 -0
  476. package/skills/marketing-demo/references/remotion-examples.md +281 -0
  477. package/skills/marketing-ideas/SKILL.md +167 -0
  478. package/skills/marketing-ideas/evals/evals.json +90 -0
  479. package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
  480. package/skills/marketing-psychology/SKILL.md +374 -0
  481. package/skills/marketing-psychology/evals/evals.json +88 -0
  482. package/skills/marketing-psychology/references/case-studies.md +148 -0
  483. package/skills/narrative-research-article/SKILL.md +469 -0
  484. package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
  485. package/skills/notebooklm/SKILL.md +674 -0
  486. package/skills/off-page-seo/SKILL.md +219 -0
  487. package/skills/onboarding-cro/SKILL.md +220 -0
  488. package/skills/onboarding-cro/evals/evals.json +92 -0
  489. package/skills/onboarding-cro/references/experiments.md +258 -0
  490. package/skills/original-research/SKILL.md +388 -0
  491. package/skills/page-cro/SKILL.md +269 -0
  492. package/skills/page-cro/references/cro-benchmarks.md +140 -0
  493. package/skills/paper-marketing/SKILL.md +448 -0
  494. package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
  495. package/skills/paper-marketing/references/brand-system-template.md +120 -0
  496. package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
  497. package/skills/paper-marketing/references/platform-conventions.md +43 -0
  498. package/skills/paywall-upgrade-cro/SKILL.md +227 -0
  499. package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
  500. package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
  501. package/skills/platform-formatting/SKILL.md +51 -0
  502. package/skills/popup-cro/SKILL.md +454 -0
  503. package/skills/popup-cro/evals/evals.json +94 -0
  504. package/skills/positioning-angles/SKILL.md +524 -0
  505. package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
  506. package/skills/positioning-angles/references/angle-frameworks.md +187 -0
  507. package/skills/positioning-angles/references/dunford-positioning.md +135 -0
  508. package/skills/positioning-angles/references/hormozi-offer.md +247 -0
  509. package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
  510. package/skills/positioning-angles/references/unique-mechanism.md +162 -0
  511. package/skills/pricing-strategy/SKILL.md +346 -0
  512. package/skills/pricing-strategy/evals/evals.json +90 -0
  513. package/skills/pricing-strategy/references/research-methods.md +152 -0
  514. package/skills/pricing-strategy/references/tier-structure.md +307 -0
  515. package/skills/programmatic-seo/SKILL.md +238 -0
  516. package/skills/programmatic-seo/evals/evals.json +94 -0
  517. package/skills/programmatic-seo/references/playbooks.md +308 -0
  518. package/skills/project-rag/SKILL.md +127 -0
  519. package/skills/quality-gate/SKILL.md +519 -0
  520. package/skills/quality-gate/judge-personas/buyer.md +47 -0
  521. package/skills/quality-gate/judge-personas/expert.md +47 -0
  522. package/skills/quality-gate/judge-personas/outsider.md +47 -0
  523. package/skills/quality-gate/judge-personas/scanner.md +41 -0
  524. package/skills/quality-gate/judge-personas/skeptic.md +40 -0
  525. package/skills/referral-program/SKILL.md +290 -0
  526. package/skills/referral-program/evals/evals.json +89 -0
  527. package/skills/referral-program/references/affiliate-programs.md +163 -0
  528. package/skills/referral-program/references/program-examples.md +143 -0
  529. package/skills/review-sites/SKILL.md +279 -0
  530. package/skills/revops/SKILL.md +343 -0
  531. package/skills/revops/evals/evals.json +91 -0
  532. package/skills/revops/references/automation-playbooks.md +290 -0
  533. package/skills/revops/references/lifecycle-definitions.md +278 -0
  534. package/skills/revops/references/routing-rules.md +203 -0
  535. package/skills/revops/references/scoring-models.md +247 -0
  536. package/skills/saas-product-seo/SKILL.md +324 -0
  537. package/skills/sales-enablement/SKILL.md +349 -0
  538. package/skills/sales-enablement/evals/evals.json +91 -0
  539. package/skills/sales-enablement/references/deck-frameworks.md +263 -0
  540. package/skills/sales-enablement/references/demo-scripts.md +355 -0
  541. package/skills/sales-enablement/references/objection-library.md +270 -0
  542. package/skills/sales-enablement/references/one-pager-templates.md +208 -0
  543. package/skills/schema-markup/SKILL.md +179 -0
  544. package/skills/schema-markup/evals/evals.json +87 -0
  545. package/skills/schema-markup/references/schema-examples.md +398 -0
  546. package/skills/self-improve/SKILL.md +166 -0
  547. package/skills/self-improving-agent/README.md +243 -0
  548. package/skills/self-improving-agent/SKILL.md +437 -0
  549. package/skills/self-improving-agent/scripts/__init__.py +16 -0
  550. package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
  551. package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
  552. package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
  553. package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
  554. package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
  555. package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
  556. package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
  557. package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
  558. package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
  559. package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
  560. package/skills/send-email/SKILL.md +426 -0
  561. package/skills/send-email/references/batch-email-examples.md +807 -0
  562. package/skills/send-email/references/best-practices.md +453 -0
  563. package/skills/send-email/references/installation.md +123 -0
  564. package/skills/send-email/references/single-email-examples.md +470 -0
  565. package/skills/send-email/references/webhooks.md +221 -0
  566. package/skills/seo-audit/SKILL.md +362 -0
  567. package/skills/seo-audit/references/ai-writing-detection.md +200 -0
  568. package/skills/seo-audit/references/architecture-patterns.md +271 -0
  569. package/skills/seo-audit/references/schema-templates.md +427 -0
  570. package/skills/seo-content/SKILL.md +510 -0
  571. package/skills/seo-content/references/anti-ai-detection.md +184 -0
  572. package/skills/seo-content/references/content-structures.md +148 -0
  573. package/skills/seo-content/references/eeat-examples.md +235 -0
  574. package/skills/seo-content/references/on-page-seo.md +261 -0
  575. package/skills/seo-content/references/pseo-playbooks.md +226 -0
  576. package/skills/seo-content/references/schema-templates.md +104 -0
  577. package/skills/seo-content/references/serp-analysis-format.md +151 -0
  578. package/skills/seo-machine/SKILL.md +331 -0
  579. package/skills/seo-machine/assets/brand-template.md +73 -0
  580. package/skills/seo-machine/assets/link-inventory-template.md +74 -0
  581. package/skills/seo-machine/assets/roadmap-template.md +184 -0
  582. package/skills/seo-machine/references/api-stack-recipes.md +230 -0
  583. package/skills/seo-machine/references/exa-recipes.md +260 -0
  584. package/skills/seo-machine/references/manual-research.md +73 -0
  585. package/skills/seo-machine/references/methodology.md +87 -0
  586. package/skills/seo-machine/references/off-page.md +123 -0
  587. package/skills/seo-machine/references/patterns/alternatives.md +176 -0
  588. package/skills/seo-machine/references/patterns/compare.md +105 -0
  589. package/skills/seo-machine/references/patterns/playbooks.md +106 -0
  590. package/skills/seo-machine/references/patterns/use-case.md +109 -0
  591. package/skills/seo-machine/references/quality-bars.md +99 -0
  592. package/skills/seo-machine/references/stacks/astro.md +156 -0
  593. package/skills/seo-machine/references/stacks/detection.md +61 -0
  594. package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
  595. package/skills/seo-machine/references/stacks/nextjs.md +108 -0
  596. package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
  597. package/skills/seo-machine/references/striking-distance.md +116 -0
  598. package/skills/seo-machine/references/technical-audit.md +153 -0
  599. package/skills/seo-machine/scripts/link_audit.py +265 -0
  600. package/skills/seo-machine/scripts/tech_audit.py +221 -0
  601. package/skills/seo-machine/scripts/word_count.py +154 -0
  602. package/skills/sharp-thesis-validator/SKILL.md +393 -0
  603. package/skills/sharp-thesis-validator/examples.md +186 -0
  604. package/skills/signup-flow-cro/SKILL.md +359 -0
  605. package/skills/signup-flow-cro/evals/evals.json +88 -0
  606. package/skills/site-architecture/SKILL.md +357 -0
  607. package/skills/site-architecture/evals/evals.json +88 -0
  608. package/skills/site-architecture/references/mermaid-templates.md +216 -0
  609. package/skills/site-architecture/references/navigation-patterns.md +305 -0
  610. package/skills/site-architecture/references/site-type-templates.md +293 -0
  611. package/skills/skill-self-improvement/SKILL.md +151 -0
  612. package/skills/slideshow-script/SKILL.md +274 -0
  613. package/skills/slideshow-script/references/content-spec-schema.md +77 -0
  614. package/skills/slideshow-script/references/frameworks.md +84 -0
  615. package/skills/slideshow-script/references/paips-framework.md +37 -0
  616. package/skills/social-campaign/SKILL.md +419 -0
  617. package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
  618. package/skills/social-content/SKILL.md +359 -0
  619. package/skills/social-content/evals/evals.json +92 -0
  620. package/skills/social-content/references/platforms.md +170 -0
  621. package/skills/social-content/references/post-templates.md +177 -0
  622. package/skills/social-content/references/reverse-engineering.md +195 -0
  623. package/skills/social-worker/SKILL.md +204 -0
  624. package/skills/startup-launcher/SKILL.md +252 -0
  625. package/skills/startup-launcher/references/file-router.md +64 -0
  626. package/skills/startup-launcher/references/platform-matrix.md +65 -0
  627. package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
  628. package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
  629. package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
  630. package/skills/startup-launcher/references/platforms/betalist.md +98 -0
  631. package/skills/startup-launcher/references/platforms/capterra.md +276 -0
  632. package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
  633. package/skills/startup-launcher/references/platforms/dealify.md +291 -0
  634. package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
  635. package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
  636. package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
  637. package/skills/startup-launcher/references/platforms/devpost.md +448 -0
  638. package/skills/startup-launcher/references/platforms/fazier.md +56 -0
  639. package/skills/startup-launcher/references/platforms/firsto.md +489 -0
  640. package/skills/startup-launcher/references/platforms/g2.md +226 -0
  641. package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
  642. package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
  643. package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
  644. package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
  645. package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
  646. package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
  647. package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
  648. package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
  649. package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
  650. package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
  651. package/skills/startup-launcher/references/platforms/launchit.md +574 -0
  652. package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
  653. package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
  654. package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
  655. package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
  656. package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
  657. package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
  658. package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
  659. package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
  660. package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
  661. package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
  662. package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
  663. package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
  664. package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
  665. package/skills/startup-launcher/references/platforms/saashub.md +205 -0
  666. package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
  667. package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
  668. package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
  669. package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
  670. package/skills/startup-launcher/references/platforms/selected.md +925 -0
  671. package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
  672. package/skills/startup-launcher/references/platforms/softonic.md +240 -0
  673. package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
  674. package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
  675. package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
  676. package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
  677. package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
  678. package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
  679. package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
  680. package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
  681. package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
  682. package/skills/startup-launcher/references/platforms/uneed.md +57 -0
  683. package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
  684. package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
  685. package/skills/startup-launcher/references/templates/product-brief.md +98 -0
  686. package/skills/summarize/.skill-meta.json +13 -0
  687. package/skills/summarize/SKILL.md +170 -0
  688. package/skills/summarize/rules/install.md +157 -0
  689. package/skills/summarize/rules/usage.md +207 -0
  690. package/skills/topical-authority/SKILL.md +307 -0
  691. package/skills/topical-authority/references/jake-ward-framework.md +201 -0
  692. package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
  693. package/skills/topical-authority/scripts/orchestrator.js +367 -0
  694. package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
  695. package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
  696. package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
  697. package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
  698. package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
  699. package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
  700. package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
  701. package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
  702. package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
  703. package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
  704. package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
  705. package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
  706. package/skills/visual-style/SKILL.md +199 -0
  707. package/skills/voice-brand-alignment/SKILL.md +70 -0
  708. package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
  709. package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
  710. package/skills/voice-extraction/SKILL.md +234 -0
  711. package/skills/voice-extraction/references/extraction-prompt.md +155 -0
  712. package/skills/voice-extraction/references/voice-dna-template.md +168 -0
  713. package/skills/voice-extraction/references/voice-elements.md +259 -0
  714. package/skills/voice-extraction/scripts/build-corpus.js +120 -0
  715. package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
  716. package/skills/warm-outbound/SKILL.md +299 -0
  717. package/skills/warm-outbound/templates/warm-message.md +39 -0
  718. package/skills/weekly-newsletter-digest/SKILL.md +78 -0
  719. package/skills/x-playwriter/SKILL.md +428 -0
  720. package/skills/x-playwriter/scripts/x-browser.js +185 -0
  721. package/skills/x-post-generator-openclaw/SKILL.md +138 -0
  722. package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
  723. package/skills/x-posting-playwriter/SKILL.md +203 -0
  724. package/skills/x-research/SKILL.md +129 -0
  725. package/skills/x-research/x-research.sh +85 -0
  726. package/skills/youtube-summarize/SKILL.md +90 -0
  727. package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
  728. package/src/cli.js +349 -172
  729. package/src/harness/deepseek-adapter.js +102 -0
  730. package/src/harness/deepseek.js +225 -0
  731. package/src/harness/opencode-adapter.js +174 -0
  732. package/src/harness/pi-adapter.js +172 -0
  733. package/src/harness/registry.js +121 -0
  734. package/src/harness/telemetry.js +102 -0
  735. package/src/harness/types.js +165 -0
  736. package/src/interview.js +36 -4
  737. package/src/postinstall.js +10 -12
  738. package/templates/AGENTS.md +17 -17
  739. package/templates/ORG.md +1 -1
  740. package/templates/TOOLS.md +7 -2
  741. package/templates/opencode.json +26 -29
  742. package/wiki/doctor.md +54 -0
  743. package/wiki/inkstone.md +4 -4
  744. package/wiki/opencode.md +3 -3
  745. 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.*