Ad Creative Analysis
Analyze a directory of competitor or reference ad creatives. Produce a per-creative JSON analysis and a cross-creative pattern summary.
Step 1 — Accept Inputs
Expect one of:
- - A directory path containing image files (
.jpg, .jpeg, .png, .webp, .gif) and/or video files (.mp4, .mov, .avi, .webm) - An optional
metadata.json file in that directory with fields per filename: platform, spend, duration_days, impressions, INLINECODE14
If no path is given, ask the user: "Please provide the directory path containing the ad creatives."
List all files in the directory. Separate into image ads and video ads. Log the count of each before proceeding.
Step 2 — Analyze Image Ads
For each image file, use vision/image analysis to evaluate the following.
Design Evaluation
Assess these five dimensions:
- 1. Visual hierarchy — Is the eye drawn to the right element first? Is there a clear focal point?
- Color usage — Does the palette create contrast, evoke emotion, and maintain brand coherence?
- Text overlay readability — Is copy legible at a glance? Font size, contrast, placement?
- CTA prominence — Is the call-to-action visually distinct, clearly placed, and easy to act on?
- Brand consistency — Logo placement, color adherence, font alignment with brand identity.
Image Scores (1-10 each)
- -
attention_grab — How fast and strongly does the creative stop a scroll? - INLINECODE16 — How clearly is the core message communicated without needing context?
- INLINECODE17 — How compelling and action-oriented is the CTA?
Image Extraction
Extract:
- -
primary_message — The single core thing this ad is communicating (one sentence) - INLINECODE19 — One of: fear, aspiration, social_proof, urgency, curiosity, humor, trust, belonging, exclusivity
- INLINECODE20 — Inferred from visuals, copy, and context (e.g., "women 25-35 interested in fitness")
- INLINECODE21 — The first piece of copy the eye lands on (headline or main text)
Step 3 — Analyze Video Ads
For each video file, analyze the video directly using vision. If a transcript file exists alongside the video (same filename, .txt or .srt extension), read and use it.
Video Evaluation
Assess these four dimensions:
- 1. Hook quality (first 3 seconds) — Does it immediately create curiosity, shock, or recognition? Would someone stop scrolling?
- Script structure — Does it follow a logical persuasion arc (problem, solution, proof, CTA)?
- Pacing — Is the editing rhythm appropriate for platform and audience? Not too slow or rushed?
- CTA placement — Is the call-to-action clear, timed well, and repeated if needed?
Video Scale Score (1-10)
Assign a single scale_score representing the ad's viral and engagement potential at scale:
- - 9-10: Exceptional hook, tight script, clear CTA. Likely to perform well at high spend.
- 7-8: Strong fundamentals, minor weaknesses. Good candidate for testing.
- 5-6: Average execution. Needs a stronger hook or clearer CTA before scaling.
- 3-4: Core idea present but poor execution. Requires significant rework.
- 1-2: Unlikely to perform. Fundamental issues with hook, message, or CTA.
See references/analysis-framework.md for detailed scale score rubric.
Video Extraction
Extract:
- -
hook_text — Exact words spoken or shown in the first 3 seconds - INLINECODE27 — One of: question, boldclaim, painpoint, curiositygap, socialproof, beforeafter, demonstration
- INLINECODE28 — The core value proposition stated in the ad
- INLINECODE29 — One of: fear, aspiration, socialproof, urgency, curiosity, humor, trust, belonging, exclusivity
- INLINECODE30 — The exact CTA spoken or shown
- INLINECODE31 — When the CTA appears (e.g., "end", "middle", "repeated throughout")
Step 4 — Universal Metadata (All Ad Types)
For every creative, regardless of type, record:
- -
filename — The file name - INLINECODE33 — One of: single_image, carousel, video, story, reel
- INLINECODE34 — Detected or inferred (e.g.,
1:1, 9:16, 16:9, 4:5) - INLINECODE39 — Width x height in pixels if detectable
- INLINECODE40 — Inferred from content and CTA:
awareness, consideration, or INLINECODE43 - INLINECODE44 — Which platforms this format and ratio suits best (e.g.,
["Instagram Feed", "Facebook Feed"])
Step 5 — Output Per-Creative JSON
Output one JSON object per creative. Print all results together in a single JSON array.
Image ad example structure
CODEBLOCK0
Video ad example structure
CODEBLOCK1
Step 6 — Generate Cross-Creative Summary
After analyzing all creatives, produce a summary object appended to the output. Include:
- -
total_analyzed — Count of creatives analyzed (split by type) - INLINECODE48 — Filenames of the top 3 creatives by score (images by average score, videos by scale score)
- INLINECODE49 — Most frequently detected emotion appeal across all ads
- INLINECODE50 — List of recurring hook patterns or phrases observed
- INLINECODE51 — Most common CTA structures seen (e.g., "verb + free + urgency")
- INLINECODE52 — Most common inferred ad objective
- INLINECODE53 — Count per ad format
- INLINECODE54 — 3-5 actionable observations for improving or scaling these creatives
Summary example structure
CODEBLOCK2
Step 7 — Handle Missing or Unreadable Files
If a file cannot be analyzed (corrupted, unsupported format, too dark/blurry for vision):
- - Include the filename in the output with
"status": "unreadable" and a brief "reason" field - Continue analyzing remaining files, do not stop
Reference Material
Consult skills/ad-creative-analysis/references/analysis-framework.md for:
- - Detailed scoring rubrics per metric
- Ad psychology pattern definitions
- Hook formula templates
- Extended example output
广告创意分析
分析竞品或参考广告创意的目录。生成每个创意的JSON分析结果以及跨创意的模式总结。
第一步 — 接收输入
预期接收以下内容之一:
- - 包含图片文件(.jpg、.jpeg、.png、.webp、.gif)和/或视频文件(.mp4、.mov、.avi、.webm)的目录路径
- 该目录中可选的metadata.json文件,包含每个文件名的字段:platform、spend、duration_days、impressions、format
如果未提供路径,请询问用户:请提供包含广告创意的目录路径。
列出目录中的所有文件。分为图片广告和视频广告。在继续之前记录各自的数量。
第二步 — 分析图片广告
对于每个图片文件,使用视觉/图像分析评估以下内容。
设计评估
评估以下五个维度:
- 1. 视觉层次 — 视线是否首先被正确的元素吸引?是否有清晰的视觉焦点?
- 色彩运用 — 调色板是否创造对比、唤起情感并保持品牌一致性?
- 文字叠加可读性 — 文案是否一目了然?字体大小、对比度、位置?
- CTA突出度 — 行动号召在视觉上是否明显、位置清晰且易于操作?
- 品牌一致性 — Logo位置、色彩遵循、字体与品牌标识的一致性。
图片评分(每项1-10分)
- - attentiongrab — 创意在多大程度上能快速有力地阻止用户滑动?
- messageclarity — 核心信息在不需要上下文的情况下传达得有多清晰?
- cta_strength — CTA的吸引力和行动导向性有多强?
图片提取
提取:
- - primarymessage — 该广告传达的单一核心信息(一句话)
- emotionappeal — 以下之一:恐惧、渴望、社会认同、紧迫感、好奇心、幽默、信任、归属感、独特性
- targetaudience — 从视觉、文案和上下文中推断(例如:25-35岁对健身感兴趣的女性)
- hooktext — 视线首先落到的第一段文案(标题或主要文本)
第三步 — 分析视频广告
对于每个视频文件,使用视觉直接分析视频。如果视频旁边存在转录文件(相同文件名,.txt或.srt扩展名),则读取并使用它。
视频评估
评估以下四个维度:
- 1. 钩子质量(前3秒) — 是否立即创造好奇心、震撼或认同感?是否会有人停止滑动?
- 脚本结构 — 是否遵循逻辑说服弧线(问题、解决方案、证明、CTA)?
- 节奏 — 剪辑节奏是否适合平台和受众?不会太慢或太急促?
- CTA放置 — 行动号召是否清晰、时机恰当,必要时是否重复?
视频规模评分(1-10分)
分配一个单一的scale_score,代表该广告在规模上的病毒式传播和参与潜力:
- - 9-10分:出色的钩子、紧凑的脚本、清晰的CTA。在高投入下可能表现良好。
- 7-8分:基础扎实,存在小缺陷。适合测试的候选。
- 5-6分:执行一般。在规模化之前需要更强的钩子或更清晰的CTA。
- 3-4分:核心创意存在但执行不佳。需要大量返工。
- 1-2分:不太可能表现良好。钩子、信息或CTA存在根本性问题。
参见references/analysis-framework.md了解详细的规模评分标准。
视频提取
提取:
- - hooktext — 前3秒内说出的或显示的准确词语
- hooktype — 以下之一:问题、大胆声明、痛点、好奇心缺口、社会认同、前后对比、演示
- mainmessage — 广告中陈述的核心价值主张
- emotionappeal — 以下之一:恐惧、渴望、社会认同、紧迫感、好奇心、幽默、信任、归属感、独特性
- ctatext — 说出的或显示的准确CTA
- ctatiming — CTA出现的时间(例如:结尾、中间、全程重复)
第四步 — 通用元数据(所有广告类型)
对于每个创意,无论类型如何,记录:
- - filename — 文件名
- adformat — 以下之一:单图、轮播、视频、故事、Reels
- aspectratio — 检测到或推断出的比例(例如:1:1、9:16、16:9、4:5)
- dimensions — 如果可检测,宽度x高度(像素)
- adobjective — 从内容和CTA推断:awareness、consideration或conversion
- platformfit — 此格式和比例最适合哪些平台(例如:[Instagram Feed, Facebook Feed])
第五步 — 输出每个创意的JSON
每个创意输出一个JSON对象。将所有结果一起打印在一个JSON数组中。
图片广告示例结构
json
{
filename: ad_001.jpg,
type: image,
adformat: singleimage,
aspect_ratio: 1:1,
dimensions: 1080x1080,
ad_objective: conversion,
platform_fit: [Instagram Feed, Facebook Feed],
scores: {
attention_grab: 8,
message_clarity: 7,
cta_strength: 9
},
primary_message: 30天减重10公斤,无需放弃你最喜欢的食物,
emotion_appeal: aspiration,
target_audience: 28-45岁曾尝试过减肥的女性,
hook_text: 还在计算卡路里?有更好的方法。
}
视频广告示例结构
json
{
filename: ad_002.mp4,
type: video,
ad_format: video,
aspect_ratio: 9:16,
dimensions: 1080x1920,
ad_objective: consideration,
platform_fit: [TikTok, Instagram Reels, Facebook Reels],
scale_score: 8,
hook_text: 我欠了4万美元债务,直到我发现了这个,
hooktype: beforeafter,
main_message: 这个预算管理应用帮我在18个月内还清了债务,
emotion_appeal: fear,
cta_text: 免费下载 — 链接在简介中,
cta_timing: end
}
第六步 — 生成跨创意总结
分析完所有创意后,生成一个附加到输出中的summary对象。包括:
- - totalanalyzed — 分析的创意数量(按类型拆分)
- topperformers — 评分最高的前3个创意的文件名(图片按平均分,视频按规模评分)
- dominantemotion — 所有广告中最常检测到的情感诉求
- commonhooks — 观察到的重复钩子模式或短语列表
- ctapatterns — 最常见的CTA结构(例如:动词 + 免费 + 紧迫感)
- dominantobjective — 最常见的推断广告目标
- format_breakdown — 每种广告格式的数量
- recommendations — 3-5条用于改进或规模化这些创意的可操作观察建议
总结示例结构
json
{
summary: {
total_analyzed: { images: 5, videos: 3 },
topperformers: [ad004.jpg, ad002.mp4, ad007.jpg],
dominant_emotion: aspiration,
common_hooks: [
基于问题的钩子挑战常见信念,
第一句话中的前后对比框架
],
cta_patterns: [
立即购买 + 稀缺信号,
免费试用 + 无需信用卡
],
dominant_objective: conversion,
formatbreakdown: { singleimage: 4, video: 3, carousel: 1 },
recommendations: [
钩子很强但CTA缺乏紧迫感 — 尝试添加仅限今日或限量数量,
所有视频都以人物出镜开场 — 尝试测试演示钩子以增加多样性,
渴望感占主导 — 测试恐惧/痛点角度以扩大受众反应
]
}
}
第七步 — 处理缺失或不可读文件
如果某个文件无法分析(损坏、格式不支持、太暗/模糊无法进行视觉分析):
- - 在输出中包含该文件名,附带status: un