@jairodri/huckleberry-cli 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +347 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,1748 @@
|
|
|
1
|
+
# Ad Creative Mode
|
|
2
|
+
|
|
3
|
+
depends-on: [hook-generator]
|
|
4
|
+
|
|
5
|
+
Generate performance-optimized paid advertising creative across Meta, Google, LinkedIn, and TikTok. Not generic images resized for ad placements — creative engineered for each platform's ad system, policy requirements, and conversion psychology.
|
|
6
|
+
|
|
7
|
+
**Loaded by:** `creative/SKILL.md` when user selects Ad Creative mode (option 5).
|
|
8
|
+
**Model selection:** Handled by `brand/stack.md` — never hardcode model IDs in prompts or workflows.
|
|
9
|
+
**Brand consistency:** Reads from `./brand/creative-kit.md` before every generation.
|
|
10
|
+
**File output:** Saves to `./campaigns/{campaign}/ads/{platform}/` for organized delivery.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Why This Mode Exists
|
|
15
|
+
|
|
16
|
+
**The problem:** Paid ad creative is where most marketing budgets burn:
|
|
17
|
+
1. Each platform has different ad specs, safe zones, and policy rules
|
|
18
|
+
2. Creative fatigue kills performance — you need constant variants
|
|
19
|
+
3. A/B testing requires structured variation, not random guessing
|
|
20
|
+
4. Policy violations waste time and delay launches
|
|
21
|
+
5. Most teams produce 2-3 ad variants when they need 12+
|
|
22
|
+
6. Image generation prompts that work for organic fail for paid (different rules)
|
|
23
|
+
7. No systematic approach to hook testing across formats
|
|
24
|
+
|
|
25
|
+
**The solution:** A complete ad creative production system that:
|
|
26
|
+
- Knows every ad placement spec across four major platforms
|
|
27
|
+
- Generates structured testing matrices (4 hooks x 3 formats = 12 ads minimum)
|
|
28
|
+
- Produces A/B variants per concept for systematic testing
|
|
29
|
+
- Includes platform-specific policy compliance checklists
|
|
30
|
+
- Outputs image generation prompts optimized for ad requirements
|
|
31
|
+
- Organizes deliverables by platform, placement, and test variant
|
|
32
|
+
- Integrates with the brand kit for visual consistency across all ads
|
|
33
|
+
|
|
34
|
+
**The ROI multiplier:** One well-structured ad testing matrix produces more actionable performance data than 50 randomly created ads. This mode builds the matrix.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Model Selection
|
|
39
|
+
|
|
40
|
+
**Do NOT hardcode model IDs.** Always refer to `brand/stack.md` for the current default image model and its verified API payload.
|
|
41
|
+
|
|
42
|
+
As of this writing, the models used in this mode are:
|
|
43
|
+
|
|
44
|
+
### Image Ads
|
|
45
|
+
|
|
46
|
+
| Role | Model | Registry Section | Estimated Cost |
|
|
47
|
+
|------|-------|-----------------|---------------|
|
|
48
|
+
| **All static ad creative** | the configured image model | Image Generation > Default Model | ~$0.02-0.04 per image |
|
|
49
|
+
|
|
50
|
+
### Video Ads
|
|
51
|
+
|
|
52
|
+
| Role | Model | Registry Section | Estimated Cost |
|
|
53
|
+
|------|-------|-----------------|---------------|
|
|
54
|
+
| **Default video ads** | Kling 2.5 Turbo Pro | Video Generation > Default Model | ~$0.40 per 5s clip |
|
|
55
|
+
| **Hero video ads** | Veo 3.1 / Sora 2 | Video Generation > Comparison Models | ~$0.80-1.50 per clip |
|
|
56
|
+
|
|
57
|
+
### How to Call
|
|
58
|
+
|
|
59
|
+
1. Open `brand/stack.md`
|
|
60
|
+
2. Find the **Image Generation** section (for static ads) or **Video Generation** section (for video ads)
|
|
61
|
+
3. Copy the verified payload structure
|
|
62
|
+
4. Insert your constructed prompt and desired aspect ratio
|
|
63
|
+
5. Execute the API call via your configured generation provider
|
|
64
|
+
|
|
65
|
+
### Why the configured image model for Ad Creative
|
|
66
|
+
|
|
67
|
+
the configured image model handles all static ad generation because:
|
|
68
|
+
- **Typography rendering:** CTA buttons, headlines, offer text directly in the image
|
|
69
|
+
- **Product placement:** Clean product integration into lifestyle and studio contexts
|
|
70
|
+
- **Aspect ratio control:** Native support for every ad placement ratio
|
|
71
|
+
- **Speed:** 15-40 seconds per image enables rapid iteration across a full testing matrix
|
|
72
|
+
- **Consistency:** Same model across all variants ensures controlled testing (only the creative variable changes, not the model)
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Platform Specifications
|
|
77
|
+
|
|
78
|
+
### Meta / Instagram Ads
|
|
79
|
+
|
|
80
|
+
Meta's ad system serves across Facebook, Instagram, Messenger, and the Audience Network. Each placement has distinct specs.
|
|
81
|
+
|
|
82
|
+
#### Feed Ads (Facebook + Instagram)
|
|
83
|
+
|
|
84
|
+
| Spec | Value |
|
|
85
|
+
|------|-------|
|
|
86
|
+
| **Recommended ratio** | 1:1 (square) or 4:5 (portrait) |
|
|
87
|
+
| **Minimum resolution** | 1080x1080 (1:1) or 1080x1350 (4:5) |
|
|
88
|
+
| **Max file size** | 30MB |
|
|
89
|
+
| **Formats** | JPG, PNG |
|
|
90
|
+
| **Text-to-image ratio** | Keep below 20% text coverage for best delivery |
|
|
91
|
+
| **Safe zone** | Full frame usable; bottom 10% may be covered by CTA button overlay |
|
|
92
|
+
|
|
93
|
+
**Feed Ad Prompt Formula:**
|
|
94
|
+
```
|
|
95
|
+
[Product/service] in [context], commercial advertising photography,
|
|
96
|
+
[brand color palette] color scheme, clean professional composition,
|
|
97
|
+
prominent product placement, space for headline overlay in [position],
|
|
98
|
+
CTA-ready layout with clear visual hierarchy,
|
|
99
|
+
[1:1 or 4:5] composition, high-end advertising quality,
|
|
100
|
+
scroll-stopping visual impact, bright well-lit professional
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### Stories / Reels Ads (Facebook + Instagram)
|
|
104
|
+
|
|
105
|
+
| Spec | Value |
|
|
106
|
+
|------|-------|
|
|
107
|
+
| **Ratio** | 9:16 (vertical full-screen) |
|
|
108
|
+
| **Resolution** | 1080x1920 |
|
|
109
|
+
| **Safe zone — top** | Avoid top 14% (250px) — profile icon, brand name, "Sponsored" label |
|
|
110
|
+
| **Safe zone — bottom** | Avoid bottom 10% (200px) — CTA button, swipe-up area |
|
|
111
|
+
| **Safe zone — usable** | Middle 76% of the frame (250px to 1720px from top) |
|
|
112
|
+
| **Max file size** | 30MB (image), 4GB (video) |
|
|
113
|
+
| **Video duration** | 1-120 seconds (recommend 5-15s for ads) |
|
|
114
|
+
|
|
115
|
+
**Stories/Reels Ad Prompt Formula:**
|
|
116
|
+
```
|
|
117
|
+
[Product/service] vertical full-screen composition for Stories ad,
|
|
118
|
+
subject centered in middle 76% of frame (avoiding top and bottom),
|
|
119
|
+
9:16 vertical format, immersive full-bleed visual,
|
|
120
|
+
[brand colors], bold attention-grabbing,
|
|
121
|
+
native story aesthetic blended with professional quality,
|
|
122
|
+
space for CTA button at bottom, space for brand label at top,
|
|
123
|
+
scroll-stopping first impression, commercial quality
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Carousel Ads
|
|
127
|
+
|
|
128
|
+
| Spec | Value |
|
|
129
|
+
|------|-------|
|
|
130
|
+
| **Ratio** | 1:1 (square) — all cards must match |
|
|
131
|
+
| **Resolution** | 1080x1080 per card |
|
|
132
|
+
| **Cards** | 2-10 cards per carousel |
|
|
133
|
+
| **Strategy** | Each card should work standalone AND as part of the sequence |
|
|
134
|
+
|
|
135
|
+
**Carousel Strategy:**
|
|
136
|
+
```
|
|
137
|
+
Card 1: Hook — the scroll-stopper (curiosity, bold claim, or visual intrigue)
|
|
138
|
+
Card 2: Problem — what the audience struggles with
|
|
139
|
+
Card 3: Solution — how your product/service solves it
|
|
140
|
+
Card 4: Proof — social proof, results, testimonials
|
|
141
|
+
Card 5: CTA — clear next step with urgency
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### Advantage+ Creative Requirements
|
|
145
|
+
|
|
146
|
+
Meta's Advantage+ system automatically optimizes ad creative. To work well with it:
|
|
147
|
+
- Provide multiple text variants (headline, primary text, description)
|
|
148
|
+
- Supply images at multiple ratios (1:1, 4:5, 9:16) — Advantage+ will select per placement
|
|
149
|
+
- Avoid text baked into images (Advantage+ cannot modify it)
|
|
150
|
+
- Keep visuals clean so auto-enhancements (brightness, contrast, cropping) improve rather than degrade
|
|
151
|
+
- Generate at highest quality — Advantage+ may compress further
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### Google Ads
|
|
156
|
+
|
|
157
|
+
Google's ad ecosystem spans Search, Display, YouTube, Shopping, and Discovery.
|
|
158
|
+
|
|
159
|
+
#### Display Ad Sizes
|
|
160
|
+
|
|
161
|
+
| Size (px) | Name | Where It Appears | Aspect Ratio | Model Ratio |
|
|
162
|
+
|-----------|------|-----------------|--------------|-------------|
|
|
163
|
+
| 300x250 | Medium Rectangle | Most common display placement | ~6:5 | `5:4` |
|
|
164
|
+
| 728x90 | Leaderboard | Top of page, wide banner | ~8:1 | `21:9` then crop |
|
|
165
|
+
| 160x600 | Wide Skyscraper | Sidebar, tall vertical | ~3:11 | `2:3` then crop |
|
|
166
|
+
| 336x280 | Large Rectangle | In-content, article pages | ~6:5 | `5:4` |
|
|
167
|
+
| 320x50 | Mobile Leaderboard | Mobile banner, bottom of screen | ~6:1 | `21:9` then crop |
|
|
168
|
+
| 970x250 | Billboard | Premium top-of-page | ~4:1 | `21:9` then crop |
|
|
169
|
+
| 250x250 | Square | Various placements | 1:1 | `1:1` |
|
|
170
|
+
| 200x200 | Small Square | Various placements | 1:1 | `1:1` |
|
|
171
|
+
|
|
172
|
+
**Display Ad Strategy:**
|
|
173
|
+
```
|
|
174
|
+
Priority generation order (by impression volume):
|
|
175
|
+
1. 300x250 — generates the most impressions
|
|
176
|
+
2. 728x90 — second most common
|
|
177
|
+
3. 160x600 — sidebar standard
|
|
178
|
+
4. 320x50 — mobile standard
|
|
179
|
+
5. Remaining sizes as needed
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Display Ad Prompt Formula (Square/Rectangle):**
|
|
183
|
+
```
|
|
184
|
+
[Product/service] digital display advertisement, clean commercial layout,
|
|
185
|
+
[brand colors] color scheme, bold headline space,
|
|
186
|
+
product prominently featured, professional advertising design,
|
|
187
|
+
clear visual hierarchy: product > headline > CTA,
|
|
188
|
+
sharp crisp rendering suitable for small display sizes,
|
|
189
|
+
high contrast for banner visibility, [aspect ratio] composition,
|
|
190
|
+
advertising quality, clean edges, no bleed
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Display Ad Prompt Formula (Banner/Leaderboard):**
|
|
194
|
+
```
|
|
195
|
+
[Product/service] horizontal banner advertisement, ultra-wide composition,
|
|
196
|
+
product on [left/right] with text space on opposite side,
|
|
197
|
+
[brand colors], high contrast for banner visibility,
|
|
198
|
+
must read clearly at small physical size,
|
|
199
|
+
clean professional commercial design, sharp rendering,
|
|
200
|
+
21:9 ultrawide composition, advertising quality
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
#### Responsive Display Ads
|
|
204
|
+
|
|
205
|
+
Google's responsive display ads auto-assemble from provided assets. Supply:
|
|
206
|
+
|
|
207
|
+
| Asset | Spec | Count |
|
|
208
|
+
|-------|------|-------|
|
|
209
|
+
| **Landscape image** | 1200x628 (1.91:1) | 1-5 images |
|
|
210
|
+
| **Square image** | 1200x1200 (1:1) | 1-5 images |
|
|
211
|
+
| **Logo (landscape)** | 1200x300 (4:1) | 1 |
|
|
212
|
+
| **Logo (square)** | 1200x1200 (1:1) | 1 |
|
|
213
|
+
| **Short headline** | 30 characters max | 1-5 |
|
|
214
|
+
| **Long headline** | 90 characters max | 1 |
|
|
215
|
+
| **Description** | 90 characters max | 1-5 |
|
|
216
|
+
| **Business name** | 25 characters max | 1 |
|
|
217
|
+
|
|
218
|
+
**Responsive Display Prompt Formula:**
|
|
219
|
+
```
|
|
220
|
+
[Product/service] in [context], clean professional advertising photography,
|
|
221
|
+
no text overlays (Google adds text automatically),
|
|
222
|
+
product as clear focal point, clean uncluttered background,
|
|
223
|
+
[brand colors] accents, professional studio-quality lighting,
|
|
224
|
+
commercial product photography, [1:1 or 16:9] composition,
|
|
225
|
+
sharp focus, high contrast, advertising-grade quality
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**Critical rule for responsive display:** Do NOT include text in the image. Google overlays headlines, descriptions, and CTAs dynamically. Text in the image creates visual collision.
|
|
229
|
+
|
|
230
|
+
#### YouTube Ads
|
|
231
|
+
|
|
232
|
+
| Placement | Spec | Notes |
|
|
233
|
+
|-----------|------|-------|
|
|
234
|
+
| **Thumbnail (custom)** | 1280x720 (16:9) | Must be compelling — users decide to watch or skip |
|
|
235
|
+
| **End screen** | 1280x720 (16:9) | Last 5-20 seconds; avoid bottom-right 30% (subscribe button area) |
|
|
236
|
+
| **Companion banner** | 300x60 | Displays beside video on desktop |
|
|
237
|
+
| **Video ad** | 1920x1080 or 1080x1920 | Pre-roll, mid-roll, or bumper (6s) |
|
|
238
|
+
|
|
239
|
+
**YouTube Thumbnail Prompt (for video ads):**
|
|
240
|
+
```
|
|
241
|
+
YouTube ad thumbnail, [subject/product] with compelling visual hook,
|
|
242
|
+
dramatic lighting, bold vibrant colors, high contrast,
|
|
243
|
+
face with [emotion] expression if person present,
|
|
244
|
+
clean space on [left/right] for text overlay,
|
|
245
|
+
click-worthy composition, extreme visual clarity,
|
|
246
|
+
16:9 landscape, must read at small sidebar size
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### LinkedIn Ads
|
|
252
|
+
|
|
253
|
+
LinkedIn's professional audience demands different creative standards than consumer platforms.
|
|
254
|
+
|
|
255
|
+
#### Sponsored Content (Single Image)
|
|
256
|
+
|
|
257
|
+
| Spec | Value |
|
|
258
|
+
|------|-------|
|
|
259
|
+
| **Recommended ratio** | 1.91:1 (landscape) or 1:1 (square) |
|
|
260
|
+
| **Resolution** | 1200x627 (landscape) or 1080x1080 (square) |
|
|
261
|
+
| **Max file size** | 5MB |
|
|
262
|
+
| **Format** | JPG, PNG |
|
|
263
|
+
| **Visual language** | Professional, clean, authoritative — not salesy |
|
|
264
|
+
|
|
265
|
+
**LinkedIn Sponsored Content Prompt Formula:**
|
|
266
|
+
```
|
|
267
|
+
[Product/service/concept] professional advertising visual,
|
|
268
|
+
sophisticated clean aesthetic, corporate-grade quality,
|
|
269
|
+
[brand colors] with professional restraint,
|
|
270
|
+
thought-leadership positioning, business context,
|
|
271
|
+
not salesy — authoritative and credible,
|
|
272
|
+
clean composition with space for headline,
|
|
273
|
+
[1:1 or 16:9] composition, LinkedIn-appropriate professional tone,
|
|
274
|
+
high-end commercial photography or clean illustration
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
#### InMail Banner Ads
|
|
278
|
+
|
|
279
|
+
| Spec | Value |
|
|
280
|
+
|------|-------|
|
|
281
|
+
| **Size** | 300x250 |
|
|
282
|
+
| **Max file size** | 2MB |
|
|
283
|
+
| **Format** | JPG, PNG |
|
|
284
|
+
| **Context** | Appears within sponsored InMail messages |
|
|
285
|
+
|
|
286
|
+
**InMail Banner Prompt:**
|
|
287
|
+
```
|
|
288
|
+
Professional display banner for B2B advertising,
|
|
289
|
+
[product/offer] clean commercial layout,
|
|
290
|
+
[brand colors], high contrast for small display,
|
|
291
|
+
clear single message, professional business aesthetic,
|
|
292
|
+
sharp rendering at 300x250 display size,
|
|
293
|
+
5:4 composition, advertising quality
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
#### Carousel Ads
|
|
297
|
+
|
|
298
|
+
| Spec | Value |
|
|
299
|
+
|------|-------|
|
|
300
|
+
| **Card ratio** | 1:1 (square) |
|
|
301
|
+
| **Card resolution** | 1080x1080 |
|
|
302
|
+
| **Cards** | 2-10 per carousel |
|
|
303
|
+
| **Card headline** | 45 characters max |
|
|
304
|
+
| **Strategy** | Progressive narrative — each card builds on the last |
|
|
305
|
+
|
|
306
|
+
**LinkedIn Carousel Strategy:**
|
|
307
|
+
```
|
|
308
|
+
Card 1: Industry insight or provocative stat (hook)
|
|
309
|
+
Card 2: The hidden problem (pain amplification)
|
|
310
|
+
Card 3: Your approach / methodology (differentiation)
|
|
311
|
+
Card 4: Results / proof points (credibility)
|
|
312
|
+
Card 5: CTA with clear value proposition
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
#### Document Ads
|
|
316
|
+
|
|
317
|
+
| Spec | Value |
|
|
318
|
+
|------|-------|
|
|
319
|
+
| **Format** | PDF |
|
|
320
|
+
| **Strategy** | Lead magnet preview — show enough value to generate leads |
|
|
321
|
+
| **Cover image** | First page acts as the ad creative — must be compelling |
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
### TikTok Ads
|
|
326
|
+
|
|
327
|
+
TikTok ads must feel native. Over-produced creative underperforms because it breaks the feed experience.
|
|
328
|
+
|
|
329
|
+
#### In-Feed Ads
|
|
330
|
+
|
|
331
|
+
| Spec | Value |
|
|
332
|
+
|------|-------|
|
|
333
|
+
| **Ratio** | 9:16 (vertical), 1:1 (square), 16:9 (landscape) |
|
|
334
|
+
| **Recommended** | 9:16 for best performance |
|
|
335
|
+
| **Resolution** | 1080x1920 (9:16) |
|
|
336
|
+
| **Video duration** | 5-60 seconds (recommend 9-15s for conversion) |
|
|
337
|
+
| **Safe zone — top** | Avoid top 130px (brand name, music label) |
|
|
338
|
+
| **Safe zone — bottom** | Avoid bottom 170px (CTA, captions, engagement buttons) |
|
|
339
|
+
| **Safe zone — right** | Avoid right 80px (like/comment/share icons) |
|
|
340
|
+
| **Usable area** | Left-center portion of middle 70% |
|
|
341
|
+
|
|
342
|
+
**TikTok In-Feed Image Prompt:**
|
|
343
|
+
```
|
|
344
|
+
[Product/service] in authentic native social media style,
|
|
345
|
+
NOT over-produced or corporate, real and relatable aesthetic,
|
|
346
|
+
vertical 9:16 full-screen composition,
|
|
347
|
+
subject in center-left of frame (avoiding right-side UI zone),
|
|
348
|
+
content in middle 70% (avoiding top and bottom UI),
|
|
349
|
+
bold engaging, trend-aware styling, phone-captured feeling,
|
|
350
|
+
high contrast, immediate visual impact,
|
|
351
|
+
native TikTok aesthetic, scroll-stopping
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
#### Spark Ads
|
|
355
|
+
|
|
356
|
+
Spark ads use existing organic posts as ad creative. Requirements:
|
|
357
|
+
- Must be a published TikTok video (organic post)
|
|
358
|
+
- Creator must authorize via Spark ad authorization code
|
|
359
|
+
- Ad inherits the organic post's engagement metrics
|
|
360
|
+
- Best practice: test organic first, then boost winners as Spark ads
|
|
361
|
+
|
|
362
|
+
**Spark Ad Strategy:**
|
|
363
|
+
```
|
|
364
|
+
1. Generate organic-style TikTok content
|
|
365
|
+
2. Publish as organic post
|
|
366
|
+
3. Monitor for 24-48 hours
|
|
367
|
+
4. Boost top performers as Spark ads
|
|
368
|
+
5. Creative that earns organic engagement converts better as paid
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### TopView Ads
|
|
372
|
+
|
|
373
|
+
| Spec | Value |
|
|
374
|
+
|------|-------|
|
|
375
|
+
| **Ratio** | 9:16 |
|
|
376
|
+
| **Duration** | 5-60 seconds |
|
|
377
|
+
| **Position** | First thing users see when opening TikTok |
|
|
378
|
+
| **Premium** | Highest-impact TikTok placement |
|
|
379
|
+
| **Creative standard** | Must be highest quality — this is a premium placement |
|
|
380
|
+
|
|
381
|
+
**TopView Prompt Addition:**
|
|
382
|
+
```
|
|
383
|
+
Add to base TikTok prompt:
|
|
384
|
+
"premium production value while maintaining native TikTok aesthetic,
|
|
385
|
+
cinematic quality blended with authentic feel,
|
|
386
|
+
highest-impact first impression, brand-defining visual moment"
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## The 12-Ad Testing Matrix
|
|
392
|
+
|
|
393
|
+
This is the core methodology for systematic ad creative testing. Instead of guessing what works, structure your creative around a matrix that isolates variables.
|
|
394
|
+
|
|
395
|
+
### The Concept: 4 Hooks x 3 Formats = 12 Ads
|
|
396
|
+
|
|
397
|
+
Every ad needs a **hook** (what stops the scroll and compels attention) and a **format** (how the message is visually delivered). By crossing 4 hook angles with 3 visual formats, you produce 12 unique ad combinations that let you test systematically.
|
|
398
|
+
|
|
399
|
+
### Step 1: Generate 4 Hooks via hook-generator
|
|
400
|
+
|
|
401
|
+
Spawn 4 parallel subagents — one per core hook type — via the `task` tool with `subagent_type: general`. Each subagent loads hook-generator and executes the full Phase 1-6 pipeline.
|
|
402
|
+
|
|
403
|
+
**Subagent prompt template (one per hook type):**
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
Load the hook-generator skill and execute the full Phase 1-6 pipeline with this context.
|
|
407
|
+
|
|
408
|
+
Context:
|
|
409
|
+
- WHO: <target audience>
|
|
410
|
+
- WHAT/WHY: <value proposition / core offer>
|
|
411
|
+
- Knife: <pain point>
|
|
412
|
+
- Platform: <Meta | Google | LinkedIn | TikTok>
|
|
413
|
+
- Brand: <brand name>
|
|
414
|
+
- Target Score: 85
|
|
415
|
+
- Hook Type: <Pain Point | Transformation | Social Proof | Curiosity Gap>
|
|
416
|
+
|
|
417
|
+
Return ONLY this JSON array with 1-2 hooks:
|
|
418
|
+
[{"hook":"...","score":<0-100>,"pattern":"...","formula":"..."}]
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
The 4 hook types and their psychology:
|
|
422
|
+
|
|
423
|
+
| Hook Type | Psychology | Hook-generator Formula Bias |
|
|
424
|
+
|-----------|-----------|----------------------------|
|
|
425
|
+
| **Pain Point** | Loss aversion — people act to avoid pain | Negative / Contrarian |
|
|
426
|
+
| **Transformation** | Before/after — show the change | Outcome |
|
|
427
|
+
| **Social Proof** | Conformity — others validate the choice | Time Frame / Mechanism |
|
|
428
|
+
| **Curiosity Gap** | Information gap — must know the answer | Contrarian |
|
|
429
|
+
|
|
430
|
+
**Advanced Hook Types (for subsequent rounds of testing):**
|
|
431
|
+
|
|
432
|
+
| Hook Type | Psychology | Hook-generator Formula Bias |
|
|
433
|
+
|-----------|-----------|----------------------------|
|
|
434
|
+
| **Urgency/Scarcity** | Fear of missing out | Time Frame |
|
|
435
|
+
| **Contrarian** | Pattern interrupt — challenges beliefs | Contrarian |
|
|
436
|
+
| **Specificity** | Precision signals credibility | Outcome |
|
|
437
|
+
| **Identity** | Self-concept — who you are/want to be | Outcome / Negative |
|
|
438
|
+
|
|
439
|
+
### Step 2: Define Your 3 Formats
|
|
440
|
+
|
|
441
|
+
Formats are visual structures for delivering the hook. Each must look different in the feed.
|
|
442
|
+
|
|
443
|
+
| Format | Description | Best For |
|
|
444
|
+
|--------|-------------|----------|
|
|
445
|
+
| **Product Hero** | Product prominently featured, clean background, lifestyle or studio context | Showcasing the product itself, e-commerce, physical goods |
|
|
446
|
+
| **UGC/Testimonial Style** | Person-centric, authentic feel, "real person" aesthetic | Building trust, service businesses, app demos |
|
|
447
|
+
| **Bold Typography** | Text-dominant with supporting visual, high contrast, statement-style | Offers, announcements, stat-based claims |
|
|
448
|
+
|
|
449
|
+
### Step 3: Generate the Matrix
|
|
450
|
+
|
|
451
|
+
For each cell in the matrix, define:
|
|
452
|
+
|
|
453
|
+
```
|
|
454
|
+
┌─────────────────┬──────────────────┬──────────────────┬──────────────────┐
|
|
455
|
+
│ │ Product Hero │ UGC/Testimonial │ Bold Typography │
|
|
456
|
+
├─────────────────┼──────────────────┼──────────────────┼──────────────────┤
|
|
457
|
+
│ Pain Point │ Ad 1 │ Ad 2 │ Ad 3 │
|
|
458
|
+
│ Transformation │ Ad 4 │ Ad 5 │ Ad 6 │
|
|
459
|
+
│ Social Proof │ Ad 7 │ Ad 8 │ Ad 9 │
|
|
460
|
+
│ Curiosity Gap │ Ad 10 │ Ad 11 │ Ad 12 │
|
|
461
|
+
└─────────────────┴──────────────────┴──────────────────┴──────────────────┘
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### Step 4: Per-Ad Specification
|
|
465
|
+
|
|
466
|
+
For each of the 12 ads, define:
|
|
467
|
+
|
|
468
|
+
```markdown
|
|
469
|
+
### Ad [N]: [Hook Type] x [Format]
|
|
470
|
+
|
|
471
|
+
**Hook angle:** [specific hook text/concept]
|
|
472
|
+
**Visual spec:** [detailed visual description for this combination]
|
|
473
|
+
**On-image text:** [exact text rendered in the image, 6 words or fewer]
|
|
474
|
+
**Headline:** [ad platform headline field, character limit per platform]
|
|
475
|
+
**Primary text:** [ad platform body copy field]
|
|
476
|
+
**CTA:** [call-to-action button text]
|
|
477
|
+
**Tracking name:** [systematic name for analytics: {campaign}-{hook}-{format}-v1]
|
|
478
|
+
|
|
479
|
+
**Image generation prompt:**
|
|
480
|
+
[Complete prompt optimized for this specific ad, referencing MODEL_REGISTRY.md payload format]
|
|
481
|
+
|
|
482
|
+
**Platform ratios to generate:**
|
|
483
|
+
- Meta Feed: 1:1 and 4:5
|
|
484
|
+
- Meta Stories: 9:16
|
|
485
|
+
- Google Display: 1:1 and 16:9
|
|
486
|
+
- LinkedIn: 1:1
|
|
487
|
+
- TikTok: 9:16
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Matrix Output Template
|
|
491
|
+
|
|
492
|
+
Generate the full matrix as a deliverable document:
|
|
493
|
+
|
|
494
|
+
```markdown
|
|
495
|
+
## Ad Testing Matrix: {campaign}
|
|
496
|
+
|
|
497
|
+
**Brand:** {brand name}
|
|
498
|
+
**Product/Service:** {what is being advertised}
|
|
499
|
+
**Target Audience:** {who we are reaching}
|
|
500
|
+
**Campaign Objective:** {awareness / consideration / conversion}
|
|
501
|
+
**Date Generated:** {date}
|
|
502
|
+
|
|
503
|
+
### Hook Definitions
|
|
504
|
+
|
|
505
|
+
1. **Pain Point:** "{specific pain hook for this product}"
|
|
506
|
+
2. **Transformation:** "{specific transformation hook}"
|
|
507
|
+
3. **Social Proof:** "{specific proof hook}"
|
|
508
|
+
4. **Curiosity Gap:** "{specific curiosity hook}"
|
|
509
|
+
|
|
510
|
+
### Format Definitions
|
|
511
|
+
|
|
512
|
+
A. **Product Hero:** {specific visual approach for this product}
|
|
513
|
+
B. **UGC/Testimonial:** {specific person/style for this brand}
|
|
514
|
+
C. **Bold Typography:** {specific typography approach matching brand kit}
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
### Ad 1: Pain Point x Product Hero
|
|
519
|
+
[full spec per template above]
|
|
520
|
+
|
|
521
|
+
### Ad 2: Pain Point x UGC/Testimonial
|
|
522
|
+
[full spec per template above]
|
|
523
|
+
|
|
524
|
+
[... continue for all 12 ...]
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
### Testing Plan
|
|
529
|
+
|
|
530
|
+
**Phase 1 (Week 1-2):** Run all 12 ads with equal budget split
|
|
531
|
+
**Phase 2 (Week 3-4):** Kill bottom 6, redistribute budget to top 6
|
|
532
|
+
**Phase 3 (Week 5+):** Generate A/B variants of top 3 performers
|
|
533
|
+
**Tracking:** UTM parameter = tracking_name field from each ad
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
---
|
|
537
|
+
|
|
538
|
+
## A/B Variant Generation
|
|
539
|
+
|
|
540
|
+
Once you have a winning ad concept (from the matrix or from existing performance data), generate structured variants to optimize further.
|
|
541
|
+
|
|
542
|
+
### What to Vary
|
|
543
|
+
|
|
544
|
+
Each variant should change ONE variable at a time. If you change multiple things, you cannot attribute the performance difference.
|
|
545
|
+
|
|
546
|
+
| Variable | How to Vary | Example |
|
|
547
|
+
|----------|-------------|---------|
|
|
548
|
+
| **Background color** | Same composition, different background | White bg vs. brand color bg vs. lifestyle bg |
|
|
549
|
+
| **Product angle** | Same scene, different product view | Front-facing vs. 45-degree vs. in-use |
|
|
550
|
+
| **Emotion/expression** | Same person, different mood | Smiling vs. serious vs. surprised (for UGC-style) |
|
|
551
|
+
| **Text treatment** | Same message, different typography | Large bold vs. subtle vs. no text |
|
|
552
|
+
| **Color temperature** | Same scene, different grading | Warm/golden vs. cool/blue vs. neutral |
|
|
553
|
+
| **Composition** | Same elements, different arrangement | Centered vs. rule-of-thirds vs. close-up |
|
|
554
|
+
| **CTA text** | Same visual, different call to action | "Shop Now" vs. "Learn More" vs. "Get Started" |
|
|
555
|
+
| **Headline** | Same visual, different headline copy | Benefit-focused vs. feature-focused vs. question |
|
|
556
|
+
|
|
557
|
+
### Variant Generation Workflow
|
|
558
|
+
|
|
559
|
+
```
|
|
560
|
+
Step 1: Identify the winning ad from the matrix (or provide the base concept)
|
|
561
|
+
Step 2: Select the variable to test
|
|
562
|
+
Step 3: Generate 3-5 variants of that variable
|
|
563
|
+
Step 4: Keep all other elements identical
|
|
564
|
+
Step 5: Name variants systematically: {base-name}-var-{variable}-{option}
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
### Variant Prompt Construction
|
|
568
|
+
|
|
569
|
+
When generating variants, use the SAME base prompt and modify only the variable:
|
|
570
|
+
|
|
571
|
+
**Base prompt (the winner):**
|
|
572
|
+
```
|
|
573
|
+
Product bottle on clean white marble surface, soft natural window lighting,
|
|
574
|
+
premium skincare advertising photography, brand blue accent colors,
|
|
575
|
+
text "Transform Your Skin" in bold modern sans-serif,
|
|
576
|
+
centered composition, 4:5 portrait, commercial quality
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
**Variant A — warm background:**
|
|
580
|
+
```
|
|
581
|
+
Product bottle on warm terracotta surface, soft golden hour lighting,
|
|
582
|
+
premium skincare advertising photography, brand blue accent colors,
|
|
583
|
+
text "Transform Your Skin" in bold modern sans-serif,
|
|
584
|
+
centered composition, 4:5 portrait, commercial quality
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
**Variant B — dark background:**
|
|
588
|
+
```
|
|
589
|
+
Product bottle on dark slate surface, dramatic studio lighting,
|
|
590
|
+
premium skincare advertising photography, brand blue accent colors,
|
|
591
|
+
text "Transform Your Skin" in bold modern sans-serif,
|
|
592
|
+
centered composition, 4:5 portrait, commercial quality
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
**Variant C — lifestyle background:**
|
|
596
|
+
```
|
|
597
|
+
Product bottle on bathroom vanity with morning light, real environment,
|
|
598
|
+
premium skincare advertising photography, brand blue accent colors,
|
|
599
|
+
text "Transform Your Skin" in bold modern sans-serif,
|
|
600
|
+
centered composition, 4:5 portrait, commercial quality
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
### Variant Output Template
|
|
604
|
+
|
|
605
|
+
```markdown
|
|
606
|
+
## A/B Variant Set: {base ad name}
|
|
607
|
+
|
|
608
|
+
**Base Ad:** {reference to the winning ad}
|
|
609
|
+
**Variable Being Tested:** {what is different}
|
|
610
|
+
**Variants Generated:** {count}
|
|
611
|
+
|
|
612
|
+
### Control (Original)
|
|
613
|
+
- **Image URL:** [URL]
|
|
614
|
+
- **Saved To:** ./campaigns/{campaign}/ads/{platform}/control.png
|
|
615
|
+
- **Tracking:** {campaign}-{hook}-{format}-control
|
|
616
|
+
|
|
617
|
+
### Variant A: {description of change}
|
|
618
|
+
- **Image URL:** [URL]
|
|
619
|
+
- **Saved To:** ./campaigns/{campaign}/ads/{platform}/var-a-{change}.png
|
|
620
|
+
- **Tracking:** {campaign}-{hook}-{format}-var-a
|
|
621
|
+
- **What changed:** {specific change from control}
|
|
622
|
+
|
|
623
|
+
### Variant B: {description of change}
|
|
624
|
+
[... same structure ...]
|
|
625
|
+
|
|
626
|
+
### Variant C: {description of change}
|
|
627
|
+
[... same structure ...]
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
**Test recommendation:**
|
|
632
|
+
- Run control + all variants with equal budget split
|
|
633
|
+
- Statistical significance threshold: 95% confidence
|
|
634
|
+
- Minimum sample: 1000 impressions per variant before judging
|
|
635
|
+
- Primary metric: [CTR / conversion rate / ROAS]
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
---
|
|
639
|
+
|
|
640
|
+
## Policy Compliance
|
|
641
|
+
|
|
642
|
+
Every ad platform has content policies. Violations waste time, delay campaigns, and can get accounts restricted. Run through the applicable checklist BEFORE generating creative.
|
|
643
|
+
|
|
644
|
+
### Meta Ad Policy Checklist
|
|
645
|
+
|
|
646
|
+
Before submitting any ad to Meta (Facebook/Instagram):
|
|
647
|
+
|
|
648
|
+
```
|
|
649
|
+
CONTENT RESTRICTIONS
|
|
650
|
+
- [ ] No "before and after" images that depict unlikely results
|
|
651
|
+
- [ ] No personal attributes assertion ("You are overweight" — instead: "Looking to get fit?")
|
|
652
|
+
- [ ] No misleading claims about product capabilities
|
|
653
|
+
- [ ] No implied endorsement by Meta/Facebook/Instagram
|
|
654
|
+
- [ ] No discriminatory content (race, ethnicity, gender, age, disability, etc.)
|
|
655
|
+
- [ ] No sensational or shocking content designed to provoke
|
|
656
|
+
|
|
657
|
+
HEALTH & WELLNESS
|
|
658
|
+
- [ ] No unrealistic health claims ("Lose 30lbs in 7 days")
|
|
659
|
+
- [ ] No before/after body images for weight loss
|
|
660
|
+
- [ ] No claims about curing diseases
|
|
661
|
+
- [ ] Supplement ads include proper disclaimers
|
|
662
|
+
|
|
663
|
+
FINANCIAL
|
|
664
|
+
- [ ] No guaranteed financial returns ("Make $10,000/month guaranteed")
|
|
665
|
+
- [ ] No misleading income claims
|
|
666
|
+
- [ ] Crypto/financial ads follow regional regulations
|
|
667
|
+
|
|
668
|
+
IMAGE QUALITY
|
|
669
|
+
- [ ] Text overlay below 20% of image area (not policy but affects delivery)
|
|
670
|
+
- [ ] No excessive skin exposure beyond platform norms
|
|
671
|
+
- [ ] No violent, graphic, or disturbing imagery
|
|
672
|
+
- [ ] Image is not misleading about the product/service
|
|
673
|
+
|
|
674
|
+
VIDEO
|
|
675
|
+
- [ ] No disruptive audio (sudden volume, jarring sounds) for auto-play
|
|
676
|
+
- [ ] Closed captions recommended (many users watch with sound off)
|
|
677
|
+
|
|
678
|
+
LANDING PAGE
|
|
679
|
+
- [ ] Ad creative matches landing page content (no bait-and-switch)
|
|
680
|
+
- [ ] Landing page is functional and matches ad claims
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### Google Ads Policy Checklist
|
|
684
|
+
|
|
685
|
+
```
|
|
686
|
+
CONTENT RESTRICTIONS
|
|
687
|
+
- [ ] No misleading content or false claims
|
|
688
|
+
- [ ] No counterfeit goods promotion
|
|
689
|
+
- [ ] No dangerous products or services (without proper certification)
|
|
690
|
+
- [ ] No inappropriate content (shocking, hateful, exploitative)
|
|
691
|
+
- [ ] No unrealistic promises
|
|
692
|
+
|
|
693
|
+
EDITORIAL STANDARDS
|
|
694
|
+
- [ ] Correct spelling and grammar in all text
|
|
695
|
+
- [ ] No excessive capitalization ("FREE AMAZING DEAL TODAY")
|
|
696
|
+
- [ ] No gimmicky use of symbols or punctuation ("$$$ Save Big $$$")
|
|
697
|
+
- [ ] No vague CTAs ("Click here" — instead: specific value proposition)
|
|
698
|
+
- [ ] Display URL matches landing page domain
|
|
699
|
+
|
|
700
|
+
IMAGE QUALITY (Display Ads)
|
|
701
|
+
- [ ] Images are clear and sharp at display size
|
|
702
|
+
- [ ] No blurry, distorted, or pixelated images
|
|
703
|
+
- [ ] No strobing, flashing, or distracting animation
|
|
704
|
+
- [ ] Image fills the ad space (no excessive white space with tiny centered image)
|
|
705
|
+
- [ ] Text in image is legible at actual display size
|
|
706
|
+
|
|
707
|
+
RESPONSIVE DISPLAY
|
|
708
|
+
- [ ] Images do not contain text (Google overlays text dynamically)
|
|
709
|
+
- [ ] Product is the clear focal point
|
|
710
|
+
- [ ] Background is clean enough for dynamic text overlay
|
|
711
|
+
- [ ] Works at multiple sizes without critical content being cropped
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
### LinkedIn Ads Policy Checklist
|
|
715
|
+
|
|
716
|
+
```
|
|
717
|
+
PROFESSIONAL STANDARDS
|
|
718
|
+
- [ ] Content appropriate for professional context
|
|
719
|
+
- [ ] No sensational or clickbait-style creative
|
|
720
|
+
- [ ] Tone is authoritative, not aggressive or pushy
|
|
721
|
+
- [ ] Avoids hyperbole ("The BEST product EVER created")
|
|
722
|
+
|
|
723
|
+
ACCURACY
|
|
724
|
+
- [ ] Claims are verifiable and accurate
|
|
725
|
+
- [ ] Statistics include source attribution
|
|
726
|
+
- [ ] Testimonials are from real, identifiable people (or clearly marked as illustrative)
|
|
727
|
+
- [ ] Job ads comply with employment advertising laws
|
|
728
|
+
|
|
729
|
+
IMAGE STANDARDS
|
|
730
|
+
- [ ] Professional quality imagery
|
|
731
|
+
- [ ] No stock photos with watermarks
|
|
732
|
+
- [ ] No overly edited or unrealistic imagery
|
|
733
|
+
- [ ] No provocative or inappropriate imagery for professional context
|
|
734
|
+
|
|
735
|
+
B2B SPECIFIC
|
|
736
|
+
- [ ] Company claims are verifiable
|
|
737
|
+
- [ ] No implied LinkedIn endorsement
|
|
738
|
+
- [ ] ROI/performance claims include methodology or footnote
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
### TikTok Ads Policy Checklist
|
|
742
|
+
|
|
743
|
+
```
|
|
744
|
+
AUTHENTICITY
|
|
745
|
+
- [ ] Creative feels native to TikTok (not repurposed TV/Facebook ads)
|
|
746
|
+
- [ ] No misleading content or fake interactivity (fake "close" buttons, fake UI elements)
|
|
747
|
+
- [ ] No unauthorized use of TikTok branding or interface elements
|
|
748
|
+
|
|
749
|
+
CONTENT RESTRICTIONS
|
|
750
|
+
- [ ] No unrealistic beauty/body standards being promoted
|
|
751
|
+
- [ ] No dangerous stunts or challenges
|
|
752
|
+
- [ ] No misleading pricing (hidden fees, unclear terms)
|
|
753
|
+
- [ ] No weight loss claims with unrealistic promises
|
|
754
|
+
- [ ] Meets age-gating requirements for restricted categories
|
|
755
|
+
|
|
756
|
+
DISCLOSURE
|
|
757
|
+
- [ ] AI-generated content clearly labeled where required by law
|
|
758
|
+
- [ ] Sponsored/partnership content properly disclosed
|
|
759
|
+
- [ ] Influencer/creator relationships transparently identified
|
|
760
|
+
- [ ] Testimonials clearly marked as paid if applicable
|
|
761
|
+
|
|
762
|
+
CREATIVE QUALITY
|
|
763
|
+
- [ ] Audio quality acceptable (no distortion, no copyrighted music without license)
|
|
764
|
+
- [ ] No watermarks from other platforms (Instagram logo, YouTube logo)
|
|
765
|
+
- [ ] No low-resolution or heavily compressed visuals
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
### Universal AI-Generated Content Disclosure
|
|
769
|
+
|
|
770
|
+
When using AI-generated imagery in ads, follow these disclosure guidelines:
|
|
771
|
+
|
|
772
|
+
```
|
|
773
|
+
REQUIRED BY PLATFORM (evolving — check current rules):
|
|
774
|
+
- Meta: AI-generated content may require "Made with AI" label
|
|
775
|
+
- TikTok: Synthetic media policies require disclosure
|
|
776
|
+
- Google: Follow Google Ads AI content policies
|
|
777
|
+
- LinkedIn: Transparency expected for AI-generated visuals
|
|
778
|
+
|
|
779
|
+
BEST PRACTICE (regardless of platform requirements):
|
|
780
|
+
- Include "Image generated with AI" in ad description when using AI-generated visuals
|
|
781
|
+
- For AI-generated people/testimonials: clearly indicate they are AI-generated
|
|
782
|
+
- Never use AI-generated imagery to fabricate endorsements from real people
|
|
783
|
+
- Keep records of all AI-generated assets and the prompts used to create them
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
---
|
|
787
|
+
|
|
788
|
+
## Platform-Specific Prompt Templates
|
|
789
|
+
|
|
790
|
+
### Meta Feed Ad — Product Hero
|
|
791
|
+
|
|
792
|
+
```
|
|
793
|
+
[Product] commercial advertising photography for Instagram/Facebook feed ad,
|
|
794
|
+
product prominently displayed in [lifestyle/studio] setting,
|
|
795
|
+
[brand colors] color scheme, clean professional composition,
|
|
796
|
+
soft professional lighting, commercial product photography,
|
|
797
|
+
space in [top/bottom] for headline overlay text,
|
|
798
|
+
scroll-stopping visual impact, high-end advertising quality,
|
|
799
|
+
4:5 portrait composition, sharp focus on product,
|
|
800
|
+
background [clean/lifestyle context], premium brand positioning
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
### Meta Feed Ad — UGC/Testimonial Style
|
|
804
|
+
|
|
805
|
+
```
|
|
806
|
+
Authentic-feeling social media content for Facebook/Instagram feed ad,
|
|
807
|
+
person [demographic] genuinely using/holding [product],
|
|
808
|
+
natural casual lighting, real-life setting,
|
|
809
|
+
relatable and trustworthy aesthetic, not over-produced,
|
|
810
|
+
candid moment captured naturally, warm authentic feel,
|
|
811
|
+
4:5 portrait composition, user-generated content style,
|
|
812
|
+
person looking at camera or product, genuine expression,
|
|
813
|
+
lifestyle context that matches target audience
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
### Meta Feed Ad — Bold Typography
|
|
817
|
+
|
|
818
|
+
```
|
|
819
|
+
Bold text-driven advertising graphic for Facebook/Instagram feed,
|
|
820
|
+
text "[HOOK TEXT — 6 words max]" in [bold/condensed/impact] font,
|
|
821
|
+
[brand colors] background, high contrast typography,
|
|
822
|
+
supporting visual element [product silhouette/abstract/pattern],
|
|
823
|
+
text dominates the frame, clean readable design,
|
|
824
|
+
commercial advertising quality, strong visual hierarchy,
|
|
825
|
+
1:1 square composition, professional graphic design aesthetic
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
### Meta Stories Ad
|
|
829
|
+
|
|
830
|
+
```
|
|
831
|
+
[Product/subject] for Instagram/Facebook Stories ad placement,
|
|
832
|
+
vertical 9:16 full-screen immersive composition,
|
|
833
|
+
content centered in middle 76% of frame,
|
|
834
|
+
avoiding top 14% (UI overlay) and bottom 10% (CTA button),
|
|
835
|
+
[brand colors], bold engaging visual, native stories aesthetic,
|
|
836
|
+
swipe-up ready with clear visual flow downward,
|
|
837
|
+
commercial quality blended with platform-native feel,
|
|
838
|
+
immediate impact in first moment of viewing
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
### Google Responsive Display Ad
|
|
842
|
+
|
|
843
|
+
```
|
|
844
|
+
[Product/service] clean commercial photography for Google display network,
|
|
845
|
+
NO text overlays (Google adds text dynamically),
|
|
846
|
+
product as clear focal point with clean background,
|
|
847
|
+
[brand colors] in product and setting only,
|
|
848
|
+
professional studio-quality lighting, advertising grade,
|
|
849
|
+
works when cropped to various aspect ratios,
|
|
850
|
+
sharp focus, high contrast, clean edges,
|
|
851
|
+
[1:1 or 16:9] composition, white or neutral background
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
### Google Display Banner (Leaderboard)
|
|
855
|
+
|
|
856
|
+
```
|
|
857
|
+
[Product/service] horizontal banner advertisement layout,
|
|
858
|
+
ultra-wide panoramic composition, product on [left/right],
|
|
859
|
+
open space on opposite side for text overlay,
|
|
860
|
+
[brand colors], high contrast for small display rendering,
|
|
861
|
+
must read clearly at 728x90 pixel display size,
|
|
862
|
+
clean sharp professional commercial design,
|
|
863
|
+
21:9 ultrawide composition, advertising banner quality
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
### LinkedIn Sponsored Content
|
|
867
|
+
|
|
868
|
+
```
|
|
869
|
+
[Product/service/concept] professional B2B advertising visual,
|
|
870
|
+
sophisticated clean aesthetic appropriate for LinkedIn,
|
|
871
|
+
[brand colors] with professional restraint,
|
|
872
|
+
thought-leadership positioning, business credibility,
|
|
873
|
+
not pushy or salesy — authoritative and valuable,
|
|
874
|
+
clean composition with space for headline copy,
|
|
875
|
+
1:1 square composition, corporate-appropriate professional tone,
|
|
876
|
+
high-end commercial photography or clean modern illustration
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
### TikTok In-Feed Ad
|
|
880
|
+
|
|
881
|
+
```
|
|
882
|
+
[Product/service] in authentic TikTok-native style,
|
|
883
|
+
NOT corporate or over-produced, real and relatable,
|
|
884
|
+
vertical 9:16 full-screen composition,
|
|
885
|
+
subject center-left of frame (right side has UI icons),
|
|
886
|
+
content in middle 70% (top and bottom have UI overlays),
|
|
887
|
+
bold engaging, trend-aware contemporary styling,
|
|
888
|
+
phone-camera aesthetic with good lighting,
|
|
889
|
+
high contrast, immediate scroll-stopping impact,
|
|
890
|
+
feels like organic content, not a traditional advertisement
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
---
|
|
894
|
+
|
|
895
|
+
## Video Ad Specifications
|
|
896
|
+
|
|
897
|
+
### Meta Video Ads
|
|
898
|
+
|
|
899
|
+
| Placement | Ratio | Duration | Notes |
|
|
900
|
+
|-----------|-------|----------|-------|
|
|
901
|
+
| Feed | 1:1, 4:5, 16:9 | 1-240s (recommend 15-30s) | Auto-plays muted; lead with visual hook |
|
|
902
|
+
| Stories/Reels | 9:16 | 1-120s (recommend 5-15s) | Full-screen vertical; capture attention in first 3s |
|
|
903
|
+
| In-stream | 16:9 | 5-15s (non-skippable) or 15-600s (skippable) | Hook in first 5 seconds is critical |
|
|
904
|
+
|
|
905
|
+
### Google/YouTube Video Ads
|
|
906
|
+
|
|
907
|
+
| Format | Duration | Skippable | Notes |
|
|
908
|
+
|--------|----------|-----------|-------|
|
|
909
|
+
| Bumper | 6 seconds | No | One message, one visual — tight and focused |
|
|
910
|
+
| Pre-roll | 15-30s | After 5s | Must hook before skip button appears |
|
|
911
|
+
| Mid-roll | 15-60s | After 5s | Users more engaged (already watching content) |
|
|
912
|
+
| Discovery | N/A | N/A | Thumbnail + headline drives click-through |
|
|
913
|
+
|
|
914
|
+
### TikTok Video Ads
|
|
915
|
+
|
|
916
|
+
| Format | Duration | Notes |
|
|
917
|
+
|--------|----------|-------|
|
|
918
|
+
| In-Feed | 5-60s | Recommend 9-15s; hook in first 2 seconds |
|
|
919
|
+
| TopView | 5-60s | Premium placement; higher production value |
|
|
920
|
+
| Branded Effect | Variable | Interactive AR filters/effects |
|
|
921
|
+
|
|
922
|
+
### Video Ad Prompt Construction (Image-to-Video)
|
|
923
|
+
|
|
924
|
+
When generating video ads from still images, reference MODEL_REGISTRY.md for the correct I2V payload:
|
|
925
|
+
|
|
926
|
+
```
|
|
927
|
+
Step 1: Generate the key frame using image prompt templates above
|
|
928
|
+
Step 2: Write a MOTION prompt (describe what moves, not the static scene):
|
|
929
|
+
|
|
930
|
+
Good motion prompt:
|
|
931
|
+
"Product slowly rotates to reveal label, camera gently pulls back,
|
|
932
|
+
soft particles float in background, lighting subtly shifts warmer"
|
|
933
|
+
|
|
934
|
+
Bad motion prompt:
|
|
935
|
+
"A bottle of skincare product on a marble surface with nice lighting"
|
|
936
|
+
(This describes the scene, not the motion — the model can already see the image)
|
|
937
|
+
|
|
938
|
+
Step 3: Choose video model from MODEL_REGISTRY.md based on content type:
|
|
939
|
+
- Standard ads: Kling 2.5 (default, fastest, most cost-effective)
|
|
940
|
+
- Hero/flagship: Run Kling 2.5 + Veo 3.1 + Sora 2 in parallel
|
|
941
|
+
|
|
942
|
+
Step 4: Set duration:
|
|
943
|
+
- Bumper ads: 5s (Kling) or 6s (Veo)
|
|
944
|
+
- Standard ads: 5-10s (Kling) or 8s (Veo/Sora)
|
|
945
|
+
|
|
946
|
+
Step 5: Set aspect ratio:
|
|
947
|
+
- Feed: "16:9" or "1:1" (Kling/Veo) / "landscape" (Sora)
|
|
948
|
+
- Stories/Reels/TikTok: "9:16" (Kling/Veo) / "portrait" (Sora)
|
|
949
|
+
```
|
|
950
|
+
|
|
951
|
+
---
|
|
952
|
+
|
|
953
|
+
## Ad Creative for Advantage+ and Performance Max
|
|
954
|
+
|
|
955
|
+
Meta's Advantage+ and Google's Performance Max use machine learning to assemble and optimize creative from supplied assets. Generating assets for these systems requires a different approach than standard ad creative.
|
|
956
|
+
|
|
957
|
+
### Asset Supply Strategy
|
|
958
|
+
|
|
959
|
+
Instead of generating one "perfect" ad, generate a library of components:
|
|
960
|
+
|
|
961
|
+
```
|
|
962
|
+
IMAGE ASSETS (generate all of these):
|
|
963
|
+
├── Product shots (3-5 variants)
|
|
964
|
+
│ ├── Clean white background — 1:1
|
|
965
|
+
│ ├── Lifestyle context — 4:5
|
|
966
|
+
│ ├── Close-up detail — 1:1
|
|
967
|
+
│ ├── In-use / action — 4:5
|
|
968
|
+
│ └── Flat lay / group — 1:1
|
|
969
|
+
│
|
|
970
|
+
├── Lifestyle / contextual (3-5 variants)
|
|
971
|
+
│ ├── Target audience using product — 4:5
|
|
972
|
+
│ ├── Environmental / setting shot — 16:9
|
|
973
|
+
│ └── Aspirational outcome — 4:5
|
|
974
|
+
│
|
|
975
|
+
├── Bold graphic variants (2-3 variants)
|
|
976
|
+
│ ├── Stat/number highlighted — 1:1
|
|
977
|
+
│ ├── Testimonial quote — 1:1
|
|
978
|
+
│ └── Offer/promotion — 1:1
|
|
979
|
+
│
|
|
980
|
+
└── All images at MULTIPLE ratios:
|
|
981
|
+
├── 1:1 (Meta feed, Google display, LinkedIn)
|
|
982
|
+
├── 4:5 (Meta feed optimal, maximum real estate)
|
|
983
|
+
├── 9:16 (Stories, Reels, TikTok)
|
|
984
|
+
└── 16:9 (Google display, YouTube)
|
|
985
|
+
|
|
986
|
+
TEXT ASSETS (write all of these):
|
|
987
|
+
├── Short headlines (5): 30 chars max each, varied hooks
|
|
988
|
+
├── Long headlines (5): 90 chars max each, expanded value props
|
|
989
|
+
├── Descriptions (5): 90 chars max each, different benefits
|
|
990
|
+
├── Primary text (5): 125 chars max each, varied angles
|
|
991
|
+
└── CTA options: ["Shop Now", "Learn More", "Get Started", "Sign Up", "Book Now"]
|
|
992
|
+
```
|
|
993
|
+
|
|
994
|
+
### Key Rules for Algorithm-Optimized Creative
|
|
995
|
+
|
|
996
|
+
1. **No text in images** for responsive/automated placements — the algorithm adds text
|
|
997
|
+
2. **Multiple ratios** per concept — let the algorithm choose the best placement
|
|
998
|
+
3. **Visual diversity** — give the algorithm options to test, not 5 near-identical images
|
|
999
|
+
4. **Clean backgrounds** — automated text overlay needs space and contrast to be legible
|
|
1000
|
+
5. **Product as focal point** — cropping at various ratios should not lose the product
|
|
1001
|
+
|
|
1002
|
+
---
|
|
1003
|
+
|
|
1004
|
+
## Style Exploration for Ad Creative
|
|
1005
|
+
|
|
1006
|
+
Before generating a full 12-ad matrix, explore visual directions. Ad creative has different style requirements than organic content.
|
|
1007
|
+
|
|
1008
|
+
### Ad-Specific Style Exploration
|
|
1009
|
+
|
|
1010
|
+
```
|
|
1011
|
+
Direction 1: Clean Commercial — Studio lighting, white/neutral backgrounds,
|
|
1012
|
+
product-focused, premium but approachable, classic advertising look
|
|
1013
|
+
|
|
1014
|
+
Direction 2: Lifestyle Native — Real-world context, natural lighting,
|
|
1015
|
+
in-use scenarios, feels like editorial content rather than ad
|
|
1016
|
+
|
|
1017
|
+
Direction 3: Bold Graphic — Strong typography, graphic design-forward,
|
|
1018
|
+
high contrast color blocks, statement-making, text-dominant
|
|
1019
|
+
|
|
1020
|
+
Direction 4: Social Proof Led — Person-centric, testimonial-style,
|
|
1021
|
+
authentic UGC aesthetic, trustworthy, relatable
|
|
1022
|
+
|
|
1023
|
+
Direction 5: Category Disruptor — Breaks conventions of your category's
|
|
1024
|
+
typical ad style, unexpected visual language, pattern interrupt
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1027
|
+
### Style Decision for Ads
|
|
1028
|
+
|
|
1029
|
+
| If your goal is... | Start with... | Why |
|
|
1030
|
+
|---------------------|---------------|-----|
|
|
1031
|
+
| E-commerce conversions | Clean Commercial | Product clarity drives purchase |
|
|
1032
|
+
| Brand awareness | Category Disruptor | Standing out drives memory |
|
|
1033
|
+
| Lead generation | Social Proof Led | Trust drives form fills |
|
|
1034
|
+
| App installs | Lifestyle Native | Context shows value |
|
|
1035
|
+
| Retargeting | Bold Graphic | Direct offer, no subtlety needed |
|
|
1036
|
+
|
|
1037
|
+
---
|
|
1038
|
+
|
|
1039
|
+
## Execution Workflow
|
|
1040
|
+
|
|
1041
|
+
### Full Campaign Workflow
|
|
1042
|
+
|
|
1043
|
+
```
|
|
1044
|
+
Step 1: BRAND CONTEXT
|
|
1045
|
+
├── Read ./brand/creative-kit.md
|
|
1046
|
+
├── Load brand colors, typography, style direction
|
|
1047
|
+
├── Identify product/service being advertised
|
|
1048
|
+
└── Confirm campaign objective (awareness/consideration/conversion)
|
|
1049
|
+
|
|
1050
|
+
Step 2: DEFINE TARGET PLATFORMS
|
|
1051
|
+
├── Which platforms? (Meta, Google, LinkedIn, TikTok)
|
|
1052
|
+
├── Which placements per platform?
|
|
1053
|
+
├── Budget allocation across platforms
|
|
1054
|
+
└── Confirm aspect ratios needed per placement
|
|
1055
|
+
|
|
1056
|
+
Step 3: STYLE EXPLORATION (if new campaign)
|
|
1057
|
+
├── Generate 5 visual directions
|
|
1058
|
+
├── User selects direction or combines elements
|
|
1059
|
+
├── Lock style principles for the campaign
|
|
1060
|
+
└── Document in campaign brief
|
|
1061
|
+
|
|
1062
|
+
Step 4: GENERATE HOOKS VIA SUBAGENT
|
|
1063
|
+
├── Spawn 4 parallel hook-generator subagents (one per hook type)
|
|
1064
|
+
├── Subagent prompt: pass product context + hook type
|
|
1065
|
+
├── Each returns 1-2 scored hooks
|
|
1066
|
+
├── Assign highest-scoring hook per type
|
|
1067
|
+
├── Pain Point: [from subagent result]
|
|
1068
|
+
├── Transformation: [from subagent result]
|
|
1069
|
+
├── Social Proof: [from subagent result]
|
|
1070
|
+
└── Curiosity Gap: [from subagent result]
|
|
1071
|
+
|
|
1072
|
+
Step 5: GENERATE 12-AD MATRIX
|
|
1073
|
+
├── 4 hooks x 3 formats = 12 unique ads
|
|
1074
|
+
├── Each ad: prompt, on-image text, headline, primary text, CTA, tracking name
|
|
1075
|
+
├── Generate at primary ratio first (usually 4:5 for Meta)
|
|
1076
|
+
├── Generate platform-specific ratio variants for each winning ad
|
|
1077
|
+
└── Batch generate using parallel task agents
|
|
1078
|
+
|
|
1079
|
+
Step 6: POLICY COMPLIANCE CHECK
|
|
1080
|
+
├── Run applicable platform policy checklist
|
|
1081
|
+
├── Flag any potential violations
|
|
1082
|
+
├── Adjust creative before submission
|
|
1083
|
+
└── Document compliance review
|
|
1084
|
+
|
|
1085
|
+
Step 7: ORGANIZE DELIVERABLES
|
|
1086
|
+
├── Save to ./campaigns/{campaign}/ads/{platform}/
|
|
1087
|
+
├── Generate ad matrix document
|
|
1088
|
+
├── Include tracking names for analytics setup
|
|
1089
|
+
└── Package for upload to each platform
|
|
1090
|
+
|
|
1091
|
+
Step 8: A/B VARIANT GENERATION (after initial results)
|
|
1092
|
+
├── Identify top 3 performers from matrix
|
|
1093
|
+
├── Select variable to test for each
|
|
1094
|
+
├── Generate 3-5 variants per winner
|
|
1095
|
+
└── Name systematically for tracking
|
|
1096
|
+
```
|
|
1097
|
+
|
|
1098
|
+
### Quick Workflow: Single Platform Ad
|
|
1099
|
+
|
|
1100
|
+
```
|
|
1101
|
+
1. Load brand kit
|
|
1102
|
+
2. Identify platform + placement
|
|
1103
|
+
3. Select hook and format
|
|
1104
|
+
4. Generate using platform-specific prompt template
|
|
1105
|
+
5. Run policy checklist
|
|
1106
|
+
6. Save to campaign directory
|
|
1107
|
+
7. Provide ad copy (headline, primary text, CTA)
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1110
|
+
### Quick Workflow: Multi-Platform Adaptation
|
|
1111
|
+
|
|
1112
|
+
```
|
|
1113
|
+
1. Generate primary ad for primary platform (usually Meta Feed)
|
|
1114
|
+
2. Approve the creative concept
|
|
1115
|
+
3. Adapt for each additional platform:
|
|
1116
|
+
- Adjust aspect ratio
|
|
1117
|
+
- Modify safe zones in prompt
|
|
1118
|
+
- Adjust visual language for platform culture
|
|
1119
|
+
- Adjust policy compliance per platform
|
|
1120
|
+
4. Save all variants to platform-specific directories
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
---
|
|
1124
|
+
|
|
1125
|
+
## File Output Structure
|
|
1126
|
+
|
|
1127
|
+
### Directory Convention
|
|
1128
|
+
|
|
1129
|
+
```
|
|
1130
|
+
./campaigns/{campaign-name}/ads/
|
|
1131
|
+
├── matrix/
|
|
1132
|
+
│ └── ad-testing-matrix.md # The 12-ad matrix document
|
|
1133
|
+
│
|
|
1134
|
+
├── meta/
|
|
1135
|
+
│ ├── feed/
|
|
1136
|
+
│ │ ├── {hook}-{format}-1x1-v1.png
|
|
1137
|
+
│ │ ├── {hook}-{format}-4x5-v1.png
|
|
1138
|
+
│ │ └── ...
|
|
1139
|
+
│ ├── stories/
|
|
1140
|
+
│ │ ├── {hook}-{format}-9x16-v1.png
|
|
1141
|
+
│ │ └── ...
|
|
1142
|
+
│ ├── carousel/
|
|
1143
|
+
│ │ ├── card-1-hook-1x1.png
|
|
1144
|
+
│ │ ├── card-2-problem-1x1.png
|
|
1145
|
+
│ │ └── ...
|
|
1146
|
+
│ └── video/
|
|
1147
|
+
│ ├── {hook}-{format}-4x5-v1.mp4
|
|
1148
|
+
│ └── ...
|
|
1149
|
+
│
|
|
1150
|
+
├── google/
|
|
1151
|
+
│ ├── display/
|
|
1152
|
+
│ │ ├── {concept}-300x250.png
|
|
1153
|
+
│ │ ├── {concept}-728x90.png
|
|
1154
|
+
│ │ ├── {concept}-160x600.png
|
|
1155
|
+
│ │ └── ...
|
|
1156
|
+
│ ├── responsive/
|
|
1157
|
+
│ │ ├── {concept}-landscape-16x9.png
|
|
1158
|
+
│ │ ├── {concept}-square-1x1.png
|
|
1159
|
+
│ │ └── ...
|
|
1160
|
+
│ └── youtube/
|
|
1161
|
+
│ ├── thumbnail-{concept}-16x9.png
|
|
1162
|
+
│ └── ...
|
|
1163
|
+
│
|
|
1164
|
+
├── linkedin/
|
|
1165
|
+
│ ├── sponsored/
|
|
1166
|
+
│ │ ├── {concept}-landscape-16x9.png
|
|
1167
|
+
│ │ ├── {concept}-square-1x1.png
|
|
1168
|
+
│ │ └── ...
|
|
1169
|
+
│ ├── inmail/
|
|
1170
|
+
│ │ └── banner-{concept}-300x250.png
|
|
1171
|
+
│ └── carousel/
|
|
1172
|
+
│ ├── card-1-{concept}-1x1.png
|
|
1173
|
+
│ └── ...
|
|
1174
|
+
│
|
|
1175
|
+
├── tiktok/
|
|
1176
|
+
│ ├── in-feed/
|
|
1177
|
+
│ │ ├── {hook}-{format}-9x16-v1.png
|
|
1178
|
+
│ │ └── ...
|
|
1179
|
+
│ └── video/
|
|
1180
|
+
│ ├── {hook}-{format}-9x16-v1.mp4
|
|
1181
|
+
│ └── ...
|
|
1182
|
+
│
|
|
1183
|
+
├── variants/
|
|
1184
|
+
│ ├── {base-ad}-var-a-{change}.png
|
|
1185
|
+
│ ├── {base-ad}-var-b-{change}.png
|
|
1186
|
+
│ └── ...
|
|
1187
|
+
│
|
|
1188
|
+
└── exports/
|
|
1189
|
+
└── {platform}-upload-ready/ # Final packaged per platform
|
|
1190
|
+
```
|
|
1191
|
+
|
|
1192
|
+
### File Naming Convention
|
|
1193
|
+
|
|
1194
|
+
```
|
|
1195
|
+
{hook-type}-{format-type}-{ratio}-v{version}.{ext}
|
|
1196
|
+
|
|
1197
|
+
Examples:
|
|
1198
|
+
pain-product-hero-4x5-v1.png
|
|
1199
|
+
transform-ugc-style-9x16-v1.png
|
|
1200
|
+
social-proof-bold-type-1x1-v1.png
|
|
1201
|
+
curiosity-product-hero-16x9-v1.png
|
|
1202
|
+
pain-product-hero-4x5-var-a-warm-bg.png
|
|
1203
|
+
transform-ugc-style-9x16-var-b-diff-person.png
|
|
1204
|
+
```
|
|
1205
|
+
|
|
1206
|
+
### Tracking Name Convention
|
|
1207
|
+
|
|
1208
|
+
Every ad gets a systematic tracking name for analytics:
|
|
1209
|
+
|
|
1210
|
+
```
|
|
1211
|
+
{campaign}-{hook}-{format}-{platform}-v{version}
|
|
1212
|
+
|
|
1213
|
+
Examples:
|
|
1214
|
+
skincare-q1-pain-hero-meta-v1
|
|
1215
|
+
skincare-q1-transform-ugc-meta-v1
|
|
1216
|
+
skincare-q1-proof-bold-google-v1
|
|
1217
|
+
skincare-q1-curiosity-hero-tiktok-v1
|
|
1218
|
+
skincare-q1-pain-hero-meta-var-a
|
|
1219
|
+
```
|
|
1220
|
+
|
|
1221
|
+
Use these as UTM campaign parameters, ad names in platform dashboards, and file identifiers.
|
|
1222
|
+
|
|
1223
|
+
---
|
|
1224
|
+
|
|
1225
|
+
## Cross-Platform Adaptation Rules
|
|
1226
|
+
|
|
1227
|
+
When the same ad concept needs to work across platforms, adapt rather than simply resize.
|
|
1228
|
+
|
|
1229
|
+
### Meta to Google
|
|
1230
|
+
|
|
1231
|
+
| Change | Why |
|
|
1232
|
+
|--------|-----|
|
|
1233
|
+
| Remove baked-in text for responsive display ads | Google overlays text dynamically |
|
|
1234
|
+
| Increase contrast and sharpness | Display ads render at small sizes |
|
|
1235
|
+
| Simplify composition | Must read at 300x250 or smaller |
|
|
1236
|
+
| Generate at multiple fixed sizes | Google display needs specific pixel dimensions |
|
|
1237
|
+
|
|
1238
|
+
### Meta to LinkedIn
|
|
1239
|
+
|
|
1240
|
+
| Change | Why |
|
|
1241
|
+
|--------|-----|
|
|
1242
|
+
| Tone down aggressive urgency | Professional audience rejects pushy |
|
|
1243
|
+
| Replace emotional hooks with data/insight hooks | LinkedIn values substance |
|
|
1244
|
+
| Shift from lifestyle to business context | Professional environment |
|
|
1245
|
+
| Increase sophistication of visual treatment | LinkedIn expects polished |
|
|
1246
|
+
|
|
1247
|
+
### Meta to TikTok
|
|
1248
|
+
|
|
1249
|
+
| Change | Why |
|
|
1250
|
+
|--------|-----|
|
|
1251
|
+
| Reduce production polish | Over-produced = ad blindness on TikTok |
|
|
1252
|
+
| Shift to phone-camera aesthetic | Native content outperforms |
|
|
1253
|
+
| Move subject center-left | Right side has UI icons |
|
|
1254
|
+
| Adjust safe zones | Different UI overlay zones than Meta Stories |
|
|
1255
|
+
| Lead with movement/personality | Static polished images underperform |
|
|
1256
|
+
|
|
1257
|
+
### Google to Meta
|
|
1258
|
+
|
|
1259
|
+
| Change | Why |
|
|
1260
|
+
|--------|-----|
|
|
1261
|
+
| Add text overlays (keep under 20%) | Meta allows and benefits from headline text |
|
|
1262
|
+
| Increase emotional appeal | Social feed rewards emotional response |
|
|
1263
|
+
| Shift from product-only to lifestyle | Social context drives engagement |
|
|
1264
|
+
| Expand from standard sizes to social ratios | 4:5, 9:16 instead of 300x250 |
|
|
1265
|
+
|
|
1266
|
+
### LinkedIn to TikTok (extreme adaptation)
|
|
1267
|
+
|
|
1268
|
+
| Change | Why |
|
|
1269
|
+
|--------|-----|
|
|
1270
|
+
| Complete visual language shift | Opposite ends of the formality spectrum |
|
|
1271
|
+
| Replace authority positioning with authenticity | TikTok values realness over credibility |
|
|
1272
|
+
| Shift from business value to personal benefit | Different motivation framework |
|
|
1273
|
+
| Move from polished to raw aesthetic | TikTok native style |
|
|
1274
|
+
|
|
1275
|
+
---
|
|
1276
|
+
|
|
1277
|
+
## Ad Copy Integration
|
|
1278
|
+
|
|
1279
|
+
Each ad creative needs accompanying copy. Generate these text assets alongside the visual.
|
|
1280
|
+
|
|
1281
|
+
### Meta Ad Copy Fields
|
|
1282
|
+
|
|
1283
|
+
```markdown
|
|
1284
|
+
**Primary Text (125 chars for first line before "See More"):**
|
|
1285
|
+
[Hook that stops the scroll — same angle as the visual hook]
|
|
1286
|
+
|
|
1287
|
+
**Headline (40 chars recommended):**
|
|
1288
|
+
[Benefit-driven, specific, no clickbait]
|
|
1289
|
+
|
|
1290
|
+
**Description (30 chars):**
|
|
1291
|
+
[Supporting detail or urgency element]
|
|
1292
|
+
|
|
1293
|
+
**CTA Button:**
|
|
1294
|
+
[Shop Now / Learn More / Sign Up / Book Now / Download / Get Offer]
|
|
1295
|
+
```
|
|
1296
|
+
|
|
1297
|
+
### Google Ad Copy Fields
|
|
1298
|
+
|
|
1299
|
+
```markdown
|
|
1300
|
+
**Short Headlines (30 chars max each, provide 5):**
|
|
1301
|
+
1. [Benefit-focused]
|
|
1302
|
+
2. [Feature-focused]
|
|
1303
|
+
3. [Social proof]
|
|
1304
|
+
4. [Question/curiosity]
|
|
1305
|
+
5. [Direct CTA]
|
|
1306
|
+
|
|
1307
|
+
**Long Headlines (90 chars max each, provide 2):**
|
|
1308
|
+
1. [Expanded value proposition]
|
|
1309
|
+
2. [Problem-solution format]
|
|
1310
|
+
|
|
1311
|
+
**Descriptions (90 chars max each, provide 5):**
|
|
1312
|
+
1. [Primary benefit]
|
|
1313
|
+
2. [Feature detail]
|
|
1314
|
+
3. [Social proof / authority]
|
|
1315
|
+
4. [Urgency / offer]
|
|
1316
|
+
5. [Different audience angle]
|
|
1317
|
+
```
|
|
1318
|
+
|
|
1319
|
+
### LinkedIn Ad Copy Fields
|
|
1320
|
+
|
|
1321
|
+
```markdown
|
|
1322
|
+
**Introductory Text (600 chars max, recommend 150):**
|
|
1323
|
+
[Insight-led opening, professional tone, value proposition]
|
|
1324
|
+
|
|
1325
|
+
**Headline (70 chars recommended):**
|
|
1326
|
+
[Outcome-focused, professional, no hype]
|
|
1327
|
+
|
|
1328
|
+
**Description (100 chars):**
|
|
1329
|
+
[Supporting proof or detail]
|
|
1330
|
+
|
|
1331
|
+
**CTA Button:**
|
|
1332
|
+
[Learn More / Download / Sign Up / Register / Apply Now]
|
|
1333
|
+
```
|
|
1334
|
+
|
|
1335
|
+
### TikTok Ad Copy Fields
|
|
1336
|
+
|
|
1337
|
+
```markdown
|
|
1338
|
+
**Ad Text (100 chars for best engagement):**
|
|
1339
|
+
[Short, punchy, native voice, emoji OK, trend-aware]
|
|
1340
|
+
|
|
1341
|
+
**Display Name:**
|
|
1342
|
+
[Brand name or campaign-specific handle]
|
|
1343
|
+
|
|
1344
|
+
**CTA Button:**
|
|
1345
|
+
[Shop Now / Learn More / Sign Up / Download / Book Now]
|
|
1346
|
+
```
|
|
1347
|
+
|
|
1348
|
+
---
|
|
1349
|
+
|
|
1350
|
+
## Batch Generation Pattern
|
|
1351
|
+
|
|
1352
|
+
For producing a full 12-ad matrix efficiently, use parallel generation.
|
|
1353
|
+
|
|
1354
|
+
### Parallel Generation Strategy
|
|
1355
|
+
|
|
1356
|
+
```
|
|
1357
|
+
Wave 1 (Ads 1-4): Pain Point hook x all 3 formats + 1 extra
|
|
1358
|
+
├── Task 1: Pain Point x Product Hero — generate at 4:5
|
|
1359
|
+
├── Task 2: Pain Point x UGC/Testimonial — generate at 4:5
|
|
1360
|
+
├── Task 3: Pain Point x Bold Typography — generate at 1:1
|
|
1361
|
+
├── Task 4: Transformation x Product Hero — generate at 4:5
|
|
1362
|
+
[Wait for wave 1 to complete — review quality]
|
|
1363
|
+
|
|
1364
|
+
Wave 2 (Ads 5-8): Remaining Transformation + Social Proof
|
|
1365
|
+
├── Task 5: Transformation x UGC/Testimonial — generate at 4:5
|
|
1366
|
+
├── Task 6: Transformation x Bold Typography — generate at 1:1
|
|
1367
|
+
├── Task 7: Social Proof x Product Hero — generate at 4:5
|
|
1368
|
+
├── Task 8: Social Proof x UGC/Testimonial — generate at 4:5
|
|
1369
|
+
[Wait for wave 2 to complete — review quality]
|
|
1370
|
+
|
|
1371
|
+
Wave 3 (Ads 9-12): Remaining Social Proof + Curiosity Gap
|
|
1372
|
+
├── Task 9: Social Proof x Bold Typography — generate at 1:1
|
|
1373
|
+
├── Task 10: Curiosity Gap x Product Hero — generate at 4:5
|
|
1374
|
+
├── Task 11: Curiosity Gap x UGC/Testimonial — generate at 4:5
|
|
1375
|
+
├── Task 12: Curiosity Gap x Bold Typography — generate at 1:1
|
|
1376
|
+
[Wait for wave 3 to complete — review quality]
|
|
1377
|
+
|
|
1378
|
+
Wave 4 (Ratio Variants): Top performers at additional ratios
|
|
1379
|
+
├── Generate top 6 ads at 1:1 (if primary was 4:5)
|
|
1380
|
+
├── Generate top 6 ads at 9:16 (Stories/TikTok)
|
|
1381
|
+
├── Generate top 6 ads at 16:9 (YouTube/Google)
|
|
1382
|
+
└── Generate Google Display sizes for top 3
|
|
1383
|
+
```
|
|
1384
|
+
|
|
1385
|
+
### Batch Cost Estimate
|
|
1386
|
+
|
|
1387
|
+
| Scope | Asset Count | Estimated Cost | Estimated Time |
|
|
1388
|
+
|-------|-------------|---------------|----------------|
|
|
1389
|
+
| 12-ad matrix (primary ratio only) | 12 images | ~$0.36-0.48 | ~3-5 min |
|
|
1390
|
+
| 12-ad matrix + 3 additional ratios | 48 images | ~$1.44-1.92 | ~10-15 min |
|
|
1391
|
+
| Matrix + ratio variants + A/B variants (3 per top 3) | ~60 images | ~$1.80-2.40 | ~12-18 min |
|
|
1392
|
+
| Full production (matrix + variants + video ads) | ~70 images + 6 videos | ~$5-10 | ~20-30 min |
|
|
1393
|
+
|
|
1394
|
+
---
|
|
1395
|
+
|
|
1396
|
+
## Integration with Creative Engine
|
|
1397
|
+
|
|
1398
|
+
```
|
|
1399
|
+
AD CREATIVE PIPELINE
|
|
1400
|
+
|
|
1401
|
+
┌─────────────────────────────────────────┐
|
|
1402
|
+
│ Request: "ad creative" / "paid ads" │
|
|
1403
|
+
│ -> Route from creative/SKILL.md │
|
|
1404
|
+
└─────────────────────────────────────────┘
|
|
1405
|
+
│
|
|
1406
|
+
v
|
|
1407
|
+
┌─────────────────────────────────────────┐
|
|
1408
|
+
│ LOAD BRAND CONTEXT │
|
|
1409
|
+
│ -> Read ./brand/creative-kit.md │
|
|
1410
|
+
│ -> Extract brand colors, style, tone │
|
|
1411
|
+
│ -> Identify product/service │
|
|
1412
|
+
│ -> Confirm campaign objective │
|
|
1413
|
+
└─────────────────────────────────────────┘
|
|
1414
|
+
│
|
|
1415
|
+
v
|
|
1416
|
+
┌─────────────────────────────────────────┐
|
|
1417
|
+
│ ad-creative mode (THIS FILE) │
|
|
1418
|
+
│ -> Define target platforms │
|
|
1419
|
+
│ -> Run style exploration (if new) │
|
|
1420
|
+
│ -> Build 4 hooks for this product │
|
|
1421
|
+
│ -> Generate 12-ad testing matrix │
|
|
1422
|
+
│ -> Generate platform ratio variants │
|
|
1423
|
+
│ -> Run policy compliance checks │
|
|
1424
|
+
│ -> Save all to campaign directory │
|
|
1425
|
+
└─────────────────────────────────────────┘
|
|
1426
|
+
│
|
|
1427
|
+
┌───────────┼───────────┐
|
|
1428
|
+
v v v
|
|
1429
|
+
┌──────────────┐ ┌──────────┐ ┌──────────────┐
|
|
1430
|
+
│ Static Ads │ │ Video Ads│ │ Copy Package │
|
|
1431
|
+
│ -> Nano │ │ -> Kling │ │ -> Headlines │
|
|
1432
|
+
│ Banana │ │ 2.5 │ │ -> Primary │
|
|
1433
|
+
│ Pro for │ │ for │ │ text │
|
|
1434
|
+
│ all │ │ default │ │ -> CTAs │
|
|
1435
|
+
│ stills │ │ -> Hero: │ │ -> Per │
|
|
1436
|
+
│ │ │ parallel│ │ platform │
|
|
1437
|
+
│ │ │ 3-model │ │ │
|
|
1438
|
+
└──────────────┘ └──────────┘ └──────────────┘
|
|
1439
|
+
│ │ │
|
|
1440
|
+
v v v
|
|
1441
|
+
┌─────────────────────────────────────────┐
|
|
1442
|
+
│ DELIVERABLES │
|
|
1443
|
+
│ -> ./campaigns/{campaign}/ads/ │
|
|
1444
|
+
│ -> Ad testing matrix document │
|
|
1445
|
+
│ -> Platform-organized assets │
|
|
1446
|
+
│ -> Tracking names for analytics │
|
|
1447
|
+
│ -> A/B variant sets (post-results) │
|
|
1448
|
+
└─────────────────────────────────────────┘
|
|
1449
|
+
```
|
|
1450
|
+
|
|
1451
|
+
---
|
|
1452
|
+
|
|
1453
|
+
## Handoff Protocols
|
|
1454
|
+
|
|
1455
|
+
### Receiving from creative/SKILL.md
|
|
1456
|
+
|
|
1457
|
+
```yaml
|
|
1458
|
+
Receive:
|
|
1459
|
+
campaign_name: "{campaign identifier}"
|
|
1460
|
+
product_or_service: "{what is being advertised}"
|
|
1461
|
+
target_audience: "{who the ads are reaching}"
|
|
1462
|
+
campaign_objective: "awareness / consideration / conversion"
|
|
1463
|
+
platforms: ["Meta", "Google", "LinkedIn", "TikTok"]
|
|
1464
|
+
budget_level: "low / medium / high"
|
|
1465
|
+
existing_creative: "{path to any existing creative to reference}"
|
|
1466
|
+
brand_kit: "./brand/creative-kit.md"
|
|
1467
|
+
specific_offer: "{if promoting a specific offer/discount}"
|
|
1468
|
+
competitor_ads: "{any competitor ad references}"
|
|
1469
|
+
```
|
|
1470
|
+
|
|
1471
|
+
### Returning
|
|
1472
|
+
|
|
1473
|
+
```yaml
|
|
1474
|
+
Return:
|
|
1475
|
+
status: "complete"
|
|
1476
|
+
matrix_document: "./campaigns/{campaign}/ads/matrix/ad-testing-matrix.md"
|
|
1477
|
+
deliverables:
|
|
1478
|
+
meta:
|
|
1479
|
+
feed: ["./campaigns/{campaign}/ads/meta/feed/{files}"]
|
|
1480
|
+
stories: ["./campaigns/{campaign}/ads/meta/stories/{files}"]
|
|
1481
|
+
google:
|
|
1482
|
+
display: ["./campaigns/{campaign}/ads/google/display/{files}"]
|
|
1483
|
+
responsive: ["./campaigns/{campaign}/ads/google/responsive/{files}"]
|
|
1484
|
+
linkedin:
|
|
1485
|
+
sponsored: ["./campaigns/{campaign}/ads/linkedin/sponsored/{files}"]
|
|
1486
|
+
tiktok:
|
|
1487
|
+
in_feed: ["./campaigns/{campaign}/ads/tiktok/in-feed/{files}"]
|
|
1488
|
+
ad_copy_package:
|
|
1489
|
+
meta: "{headlines, primary text, descriptions, CTAs}"
|
|
1490
|
+
google: "{short headlines, long headlines, descriptions}"
|
|
1491
|
+
linkedin: "{intro text, headline, description}"
|
|
1492
|
+
tiktok: "{ad text, CTA}"
|
|
1493
|
+
tracking_names: ["{list of all tracking names for analytics setup}"]
|
|
1494
|
+
variant_sets_available: true
|
|
1495
|
+
policy_review: "passed / flagged items: [list]"
|
|
1496
|
+
total_assets_generated: "{count}"
|
|
1497
|
+
estimated_cost: "{total generation cost}"
|
|
1498
|
+
```
|
|
1499
|
+
|
|
1500
|
+
### Receiving from Other Skills
|
|
1501
|
+
|
|
1502
|
+
The ad creative mode can receive briefs from:
|
|
1503
|
+
|
|
1504
|
+
```yaml
|
|
1505
|
+
# From brand-voice skill
|
|
1506
|
+
voice_direction:
|
|
1507
|
+
tone: "{brand tone for ad copy}"
|
|
1508
|
+
vocabulary: "{preferred/avoided words}"
|
|
1509
|
+
messaging_pillars: ["{key messages}"]
|
|
1510
|
+
|
|
1511
|
+
# From direct-response-copy skill
|
|
1512
|
+
copy_brief:
|
|
1513
|
+
hooks: ["{pre-written hooks to use}"]
|
|
1514
|
+
value_propositions: ["{key selling points}"]
|
|
1515
|
+
social_proof_points: ["{testimonials, stats, awards}"]
|
|
1516
|
+
offers: ["{specific offers with terms}"]
|
|
1517
|
+
|
|
1518
|
+
# From positioning-angles skill
|
|
1519
|
+
positioning:
|
|
1520
|
+
primary_angle: "{main positioning}"
|
|
1521
|
+
differentiators: ["{what makes this unique}"]
|
|
1522
|
+
competitor_weaknesses: ["{gaps to exploit}"]
|
|
1523
|
+
audience_pain_points: ["{validated pain points}"]
|
|
1524
|
+
```
|
|
1525
|
+
|
|
1526
|
+
---
|
|
1527
|
+
|
|
1528
|
+
## Output Format
|
|
1529
|
+
|
|
1530
|
+
### Single Ad Output
|
|
1531
|
+
|
|
1532
|
+
```markdown
|
|
1533
|
+
## Ad Generated
|
|
1534
|
+
|
|
1535
|
+
**Platform:** [platform]
|
|
1536
|
+
**Placement:** [feed/stories/display/etc.]
|
|
1537
|
+
**Aspect Ratio:** [ratio]
|
|
1538
|
+
**Hook:** [hook type]
|
|
1539
|
+
**Format:** [format type]
|
|
1540
|
+
|
|
1541
|
+
**Image URL:** [URL]
|
|
1542
|
+
**Saved To:** ./campaigns/{campaign}/ads/{platform}/{placement}/{filename}.png
|
|
1543
|
+
|
|
1544
|
+
**On-Image Text:** [text rendered in the image]
|
|
1545
|
+
**Headline:** [platform headline field]
|
|
1546
|
+
**Primary Text:** [body copy]
|
|
1547
|
+
**CTA:** [button text]
|
|
1548
|
+
**Tracking Name:** [systematic tracking name]
|
|
1549
|
+
|
|
1550
|
+
**Policy Check:**
|
|
1551
|
+
- [x] Content compliant
|
|
1552
|
+
- [x] No misleading claims
|
|
1553
|
+
- [x] Proper disclosure
|
|
1554
|
+
- [x] Image quality meets platform standards
|
|
1555
|
+
|
|
1556
|
+
**Feedback?**
|
|
1557
|
+
- Does the hook stop your scroll?
|
|
1558
|
+
- Does the visual match the hook angle?
|
|
1559
|
+
- Generate variants of this concept?
|
|
1560
|
+
- Adapt to additional platforms?
|
|
1561
|
+
```
|
|
1562
|
+
|
|
1563
|
+
### Full Matrix Output
|
|
1564
|
+
|
|
1565
|
+
```markdown
|
|
1566
|
+
## Ad Testing Matrix Generated
|
|
1567
|
+
|
|
1568
|
+
**Campaign:** {campaign-name}
|
|
1569
|
+
**Product:** {product/service}
|
|
1570
|
+
**Platforms:** {list}
|
|
1571
|
+
**Total Ads:** 12 (4 hooks x 3 formats)
|
|
1572
|
+
**Total Assets:** {count including ratio variants}
|
|
1573
|
+
**Estimated Generation Cost:** {cost}
|
|
1574
|
+
|
|
1575
|
+
### Matrix Overview
|
|
1576
|
+
|
|
1577
|
+
| # | Hook | Format | Primary Ratio | Tracking Name |
|
|
1578
|
+
|---|------|--------|--------------|---------------|
|
|
1579
|
+
| 1 | Pain Point | Product Hero | 4:5 | {tracking} |
|
|
1580
|
+
| 2 | Pain Point | UGC/Testimonial | 4:5 | {tracking} |
|
|
1581
|
+
| 3 | Pain Point | Bold Typography | 1:1 | {tracking} |
|
|
1582
|
+
| 4 | Transformation | Product Hero | 4:5 | {tracking} |
|
|
1583
|
+
| 5 | Transformation | UGC/Testimonial | 4:5 | {tracking} |
|
|
1584
|
+
| 6 | Transformation | Bold Typography | 1:1 | {tracking} |
|
|
1585
|
+
| 7 | Social Proof | Product Hero | 4:5 | {tracking} |
|
|
1586
|
+
| 8 | Social Proof | UGC/Testimonial | 4:5 | {tracking} |
|
|
1587
|
+
| 9 | Social Proof | Bold Typography | 1:1 | {tracking} |
|
|
1588
|
+
| 10 | Curiosity Gap | Product Hero | 4:5 | {tracking} |
|
|
1589
|
+
| 11 | Curiosity Gap | UGC/Testimonial | 4:5 | {tracking} |
|
|
1590
|
+
| 12 | Curiosity Gap | Bold Typography | 1:1 | {tracking} |
|
|
1591
|
+
|
|
1592
|
+
### All Assets
|
|
1593
|
+
|
|
1594
|
+
**Matrix Document:** ./campaigns/{campaign}/ads/matrix/ad-testing-matrix.md
|
|
1595
|
+
**Meta Assets:** ./campaigns/{campaign}/ads/meta/
|
|
1596
|
+
**Google Assets:** ./campaigns/{campaign}/ads/google/
|
|
1597
|
+
**LinkedIn Assets:** ./campaigns/{campaign}/ads/linkedin/
|
|
1598
|
+
**TikTok Assets:** ./campaigns/{campaign}/ads/tiktok/
|
|
1599
|
+
|
|
1600
|
+
### Testing Recommendation
|
|
1601
|
+
|
|
1602
|
+
Phase 1: Run all 12 with equal budget (1-2 weeks)
|
|
1603
|
+
Phase 2: Kill bottom 6, redistribute to top 6 (1-2 weeks)
|
|
1604
|
+
Phase 3: A/B variants of top 3 performers (ongoing)
|
|
1605
|
+
|
|
1606
|
+
### Next Steps
|
|
1607
|
+
- [ ] Upload assets to platform ad managers
|
|
1608
|
+
- [ ] Set up tracking with provided tracking names
|
|
1609
|
+
- [ ] Configure A/B tests
|
|
1610
|
+
- [ ] Request A/B variants after Phase 1 results
|
|
1611
|
+
```
|
|
1612
|
+
|
|
1613
|
+
---
|
|
1614
|
+
|
|
1615
|
+
## Common Issues and Solutions
|
|
1616
|
+
|
|
1617
|
+
| Issue | Cause | Solution |
|
|
1618
|
+
|-------|-------|----------|
|
|
1619
|
+
| Text too large / covers too much image | Prompt does not constrain text size | Add "small subtle text" or "text in lower third only" |
|
|
1620
|
+
| Ad looks like organic content, not an ad | Missing commercial quality markers | Add "commercial advertising photography, professional" |
|
|
1621
|
+
| Ad looks too much like a traditional ad | Over-produced for platform | Add "native, authentic, blended with organic content" |
|
|
1622
|
+
| Policy rejection for text-to-image ratio | Too much text baked into image | Reduce on-image text to 6 words max, use ad platform text fields instead |
|
|
1623
|
+
| Google responsive ad has text collision | Text baked into image + Google overlay | Generate clean images WITHOUT text for responsive placements |
|
|
1624
|
+
| Safe zone violation | Content in UI overlay area | Specify safe zone avoidance explicitly in the prompt |
|
|
1625
|
+
| All 12 matrix ads look similar | Not enough variation between formats | Make Product Hero, UGC, and Bold Typography genuinely different visual approaches |
|
|
1626
|
+
| A/B variants change too many things | Multiple variables changed at once | Strictly change ONE element per variant |
|
|
1627
|
+
| TikTok ad feels like a Facebook ad | Same visual language across platforms | Rewrite prompt with TikTok-native aesthetic descriptors |
|
|
1628
|
+
| LinkedIn ad too aggressive | Consumer marketing tone in B2B context | Shift to insight-led, authoritative, non-pushy language |
|
|
1629
|
+
| Display ads unreadable at small sizes | Composition too complex | Simplify to ONE focal point and high contrast |
|
|
1630
|
+
| Tracking names inconsistent | No naming convention followed | Use: {campaign}-{hook}-{format}-{platform}-v{version} |
|
|
1631
|
+
|
|
1632
|
+
---
|
|
1633
|
+
|
|
1634
|
+
## Tips from Experience
|
|
1635
|
+
|
|
1636
|
+
### What Works
|
|
1637
|
+
1. **Matrix over random** — structured testing reveals patterns that random creation cannot
|
|
1638
|
+
2. **Hook variation matters most** — the psychological angle of the hook drives more performance difference than visual format
|
|
1639
|
+
3. **Native over polished on social** — especially TikTok and Instagram Stories
|
|
1640
|
+
4. **Text outside the image** — use platform text fields rather than baking text into images, especially for Advantage+ and Performance Max
|
|
1641
|
+
5. **Multiple ratios from the start** — generating at one ratio then cropping produces worse results than generating natively at each ratio
|
|
1642
|
+
6. **Policy check before generation** — cheaper to adjust a prompt than regenerate a rejected ad
|
|
1643
|
+
7. **Tracking names from day one** — you cannot optimize what you cannot measure
|
|
1644
|
+
8. **Parallel generation** — batch producing the full matrix is faster and cheaper than one-at-a-time
|
|
1645
|
+
|
|
1646
|
+
### What Does Not Work
|
|
1647
|
+
1. **One ad, one platform** — the minimum viable test is 4 ads (4 hooks x 1 format)
|
|
1648
|
+
2. **Resizing instead of adapting** — a great Meta ad is a bad TikTok ad if you just resize it
|
|
1649
|
+
3. **Ignoring safe zones** — your headline covered by the CTA button is a wasted impression
|
|
1650
|
+
4. **Testing everything at once** — change one variable per A/B test or learn nothing
|
|
1651
|
+
5. **Skipping the brand kit** — inconsistent visual identity across ads looks unprofessional
|
|
1652
|
+
6. **Generic hooks** — "Check this out!" is not a hook. Be specific to the audience pain/desire
|
|
1653
|
+
7. **Copy/paste across platforms** — what is professional on LinkedIn is boring on TikTok
|
|
1654
|
+
8. **Perfect is the enemy of tested** — a shipped 12-ad matrix beats a single "perfect" ad that took three weeks
|
|
1655
|
+
|
|
1656
|
+
### The 80/20
|
|
1657
|
+
|
|
1658
|
+
80% of ad creative performance comes from:
|
|
1659
|
+
1. **The right hook** for the right audience
|
|
1660
|
+
2. **Platform-native visual language** (not resized generic creative)
|
|
1661
|
+
3. **Clean product/value clarity** (viewers know what they are looking at instantly)
|
|
1662
|
+
4. **Systematic testing** (structured matrix, not random guessing)
|
|
1663
|
+
|
|
1664
|
+
Get these four right and your paid creative will outperform most competitors regardless of budget.
|
|
1665
|
+
|
|
1666
|
+
---
|
|
1667
|
+
|
|
1668
|
+
## Quick Reference: Common Workflows
|
|
1669
|
+
|
|
1670
|
+
### "Generate ads for my product across all platforms"
|
|
1671
|
+
|
|
1672
|
+
```
|
|
1673
|
+
1. Load brand kit
|
|
1674
|
+
2. Define 4 hooks specific to the product
|
|
1675
|
+
3. Generate 12-ad matrix (4 hooks x 3 formats)
|
|
1676
|
+
4. Primary generation at Meta Feed ratio (4:5)
|
|
1677
|
+
5. Generate ratio variants for each platform
|
|
1678
|
+
6. Run policy checklists per platform
|
|
1679
|
+
7. Write ad copy per platform
|
|
1680
|
+
8. Save to ./campaigns/{campaign}/ads/{platform}/
|
|
1681
|
+
9. Deliver matrix document with tracking names
|
|
1682
|
+
```
|
|
1683
|
+
|
|
1684
|
+
### "I need Meta ads specifically"
|
|
1685
|
+
|
|
1686
|
+
```
|
|
1687
|
+
1. Load brand kit
|
|
1688
|
+
2. Define 4 hooks
|
|
1689
|
+
3. Generate 12-ad matrix at 4:5 (feed) and 9:16 (stories)
|
|
1690
|
+
4. Run Meta policy checklist
|
|
1691
|
+
5. Write primary text, headlines, descriptions, CTAs
|
|
1692
|
+
6. Save to ./campaigns/{campaign}/ads/meta/
|
|
1693
|
+
7. Include Advantage+ asset variants if requested
|
|
1694
|
+
```
|
|
1695
|
+
|
|
1696
|
+
### "Generate Google Display ads"
|
|
1697
|
+
|
|
1698
|
+
```
|
|
1699
|
+
1. Load brand kit
|
|
1700
|
+
2. Generate at priority sizes: 300x250, 728x90, 160x600
|
|
1701
|
+
3. Use clean product images WITHOUT text for responsive
|
|
1702
|
+
4. Generate at 1:1 and 16:9 for responsive display
|
|
1703
|
+
5. Run Google policy checklist
|
|
1704
|
+
6. Write short/long headlines and descriptions
|
|
1705
|
+
7. Save to ./campaigns/{campaign}/ads/google/display/
|
|
1706
|
+
```
|
|
1707
|
+
|
|
1708
|
+
### "Create TikTok ad creative"
|
|
1709
|
+
|
|
1710
|
+
```
|
|
1711
|
+
1. Load brand kit
|
|
1712
|
+
2. Define hooks (emphasize authenticity/relatability over authority)
|
|
1713
|
+
3. Generate at 9:16 with TikTok-native aesthetic
|
|
1714
|
+
4. Ensure safe zones are respected (top, bottom, right)
|
|
1715
|
+
5. Run TikTok policy checklist
|
|
1716
|
+
6. Write punchy, native-voice ad text
|
|
1717
|
+
7. Save to ./campaigns/{campaign}/ads/tiktok/in-feed/
|
|
1718
|
+
8. Consider video ads for best TikTok performance
|
|
1719
|
+
```
|
|
1720
|
+
|
|
1721
|
+
### "Generate A/B variants of my winning ad"
|
|
1722
|
+
|
|
1723
|
+
```
|
|
1724
|
+
1. Identify the winning ad and its exact prompt
|
|
1725
|
+
2. Decide which variable to test (background, angle, text, color, etc.)
|
|
1726
|
+
3. Generate 3-5 variants changing ONLY that variable
|
|
1727
|
+
4. Keep all other prompt elements identical
|
|
1728
|
+
5. Name with variant convention: {base}-var-{letter}-{change}
|
|
1729
|
+
6. Save to ./campaigns/{campaign}/ads/variants/
|
|
1730
|
+
7. Set up tracking for each variant
|
|
1731
|
+
```
|
|
1732
|
+
|
|
1733
|
+
### "I need an ad for a specific platform and placement"
|
|
1734
|
+
|
|
1735
|
+
```
|
|
1736
|
+
1. Load brand kit
|
|
1737
|
+
2. Look up platform specs in this file (ratios, safe zones, policies)
|
|
1738
|
+
3. Select hook and format
|
|
1739
|
+
4. Use the platform-specific prompt template
|
|
1740
|
+
5. Generate at the correct ratio
|
|
1741
|
+
6. Run platform policy checklist
|
|
1742
|
+
7. Write platform-appropriate ad copy
|
|
1743
|
+
8. Save to ./campaigns/{campaign}/ads/{platform}/{placement}/
|
|
1744
|
+
```
|
|
1745
|
+
|
|
1746
|
+
---
|
|
1747
|
+
|
|
1748
|
+
*This mode is the paid advertising creative system for Vibe Marketing Skills v2. Every ad image, every video ad, every testing matrix, and every A/B variant flows through this engine. Feed it a product and an audience — it produces a structured, policy-compliant, platform-optimized ad testing program.*
|