Source Code
Video Ad Deconstructor
AI-powered deconstruction of video ad creatives into actionable marketing insights.
What This Skill Does
- Generate Summaries: Product, features, audience, CTA extraction
- Deconstruct Marketing Dimensions: Hooks, social proof, urgency, emotion, etc.
- Support Multiple Content Types: Consumer products and gaming ads
- Progress Tracking: Callback support for long analyses
- JSON Output: Structured data for downstream processing
Setup
1. Environment Variables
# Required for Gemini
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
2. Dependencies
pip install vertexai
Usage
Basic Ad Deconstruction
from scripts.deconstructor import AdDeconstructor
from scripts.models import ExtractedVideoContent
import vertexai
from vertexai.generative_models import GenerativeModel
# Initialize Vertex AI
vertexai.init(project="your-project-id", location="us-central1")
gemini_model = GenerativeModel("gemini-1.5-flash")
# Create deconstructor
deconstructor = AdDeconstructor(gemini_model=gemini_model)
# Create extracted content (from video-ad-analyzer or manually)
content = ExtractedVideoContent(
video_path="ad.mp4",
duration=30.0,
transcript="Tired of messy cables? Meet CableFlow...",
text_timeline=[{"at": 0.0, "text": ["50% OFF TODAY"]}],
scene_timeline=[{"timestamp": 0.0, "description": "Person frustrated with tangled cables"}]
)
# Generate summary
summary = deconstructor.generate_summary(
transcript=content.transcript,
scenes="0.0s: Person frustrated with tangled cables",
text_overlays="50% OFF TODAY"
)
print(summary)
Full Deconstruction
# Deconstruct all marketing dimensions
def on_progress(fraction, dimension):
print(f"Progress: {fraction*100:.0f}% - Analyzed {dimension}")
analysis = deconstructor.deconstruct(
extracted_content=content,
summary=summary,
is_gaming=False, # Set True for gaming ads
on_progress=on_progress
)
# Access dimensions
for dimension, data in analysis.dimensions.items():
print(f"\n{dimension}:")
print(data)
Output Structure
Summary Output
Product/App: CableFlow Cable Organizer
Key Features:
Magnetic design: Keeps cables organized automatically
Universal fit: Works with all cable types
Premium materials: Durable silicone construction
Target Audience: Tech users frustrated with cable management
Call to Action: Order now and get 50% off
Deconstruction Output
{
"spoken_hooks": {
"elements": [
{
"hook_text": "Tired of messy cables?",
"timestamp": "0:00",
"hook_type": "Problem Question",
"effectiveness": "High - directly addresses pain point"
}
]
},
"social_proof": {
"elements": [
{
"proof_type": "User Count",
"claim": "Over 1 million happy customers",
"credibility_score": 7
}
]
},
# ... more dimensions
}
Marketing Dimensions Deconstructed
| Dimension | What It Extracts |
|---|---|
spoken_hooks |
Opening hooks from transcript |
visual_hooks |
Attention-grabbing visuals |
text_hooks |
On-screen text hooks |
social_proof |
Testimonials, user counts, reviews |
urgency_scarcity |
Limited time offers, stock warnings |
emotional_triggers |
Fear, desire, belonging, etc. |
problem_solution |
Pain points and solutions |
cta_analysis |
Call-to-action effectiveness |
target_audience |
Who the ad targets |
unique_mechanism |
What makes product special |
Customizing Prompts
Edit prompts in prompts/marketing_analysis.md to customize:
- What dimensions to analyze
- Output format
- Scoring criteria
- Gaming vs consumer product focus
Common Questions This Answers
- "What hooks does this ad use?"
- "What's the emotional appeal?"
- "How does this ad create urgency?"
- "Who is this ad targeting?"
- "What social proof is shown?"
- "Deconstruct this competitor's ad"