Skill Purpose
Generate a client-ready PDF ad strategy report using the Python ReportLab library. This skill scans the current working directory for all ad output files, extracts scores, audience personas, campaign structure, budget allocation, and competitive intelligence, compiles them into structured JSON, and produces a professional PDF with a cover page featuring an Ad Readiness Score gauge, audience persona cards, campaign funnel diagram, budget allocation chart, competitive positioning map, creative direction summary, and a prioritized 90-day action plan.
When to Use
- The user wants a PDF version of the ad strategy report (not just Markdown)
- The user is preparing a deliverable for a client or stakeholder presentation
- The user requests a "polished report," "client-ready report," or "PDF report"
- The user wants a visual report with charts, scores, and professional formatting
- Triggered by
/ads report-pdfor/ads report-pdf <nome do negĂłcio>
When to Use PDF vs. Markdown
| Format | Best For | Advantages | Disadvantages |
|---|---|---|---|
| Client presentations, email attachments, proposals, sales materials | Professional appearance, charts and gauges, printable, consistent formatting | Requires a Python script; harder to edit | |
| Markdown | Internal use, quick reference, iterative editing, version control | Easy to edit, fast generation, Git-compatible | Less visual polish, no charts |
General rule: If the report will be sent to a client, prospect, or executive, use PDF. If it is for internal use or later editing, use Markdown.
How to Run
Step 1: Check the PDF Generation Script
First, check whether the dedicated PDF generation script exists:
ls ~/.claude/skills/ads/scripts/generate_ads_pdf.py 2>/dev/nullIf the script exists: Use it directly (skip to Step 4). If the script doesn't exist: Generate the PDF inline using ReportLab (follow all steps).
Stage 2: Collect All Available Data
Scan the current working directory for all outputs from the ads skill. Look for these files:
Primary data sources (search all of these):
ADS-STRATEGY-*.mdâ Complete strategy report (composite scores, all sections)ADS-AUDIENCE*.mdâ Audience personas, targeting parametersADS-COPY-*.mdâ Platform-specific ad copyADS-HOOKS*.mdâ Scroll-stopping hooksADS-CREATIVE-BRIEF*.mdâ Creative briefs for all formatsADS-VIDEO-SCRIPTS*.mdâ Video ad scriptsADS-FUNNEL*.mdâ Campaign funnel architectureADS-BUDGET*.mdâ Budget allocation planADS-COMPETITORS*.mdâ Competitive intelligenceADS-KEYWORDS*.mdâ Keyword strategy (Google Ads)ADS-TESTING-PLAN*.mdâ A/B testing planADS-LANDING*.mdâ Landing page auditADS-AUDIT*.mdâ Performance audit results
Search command:
ls ADS-*.md 2>/dev/nullFor each file found, extract:
- Scores and ratings
- Key findings and recommendations
- Audience personas and segments
- Campaign structure details
- Budget allocations and projections
- Competitive Positioning Data
- Best ad copy and hooks
- Action Items and Timelines
Stage 3: Structure the Data in JSON
Compile all extracted data into a structured JSON object for the PDF generator:
{
"report_metadata": {
"business_name": "[Nome do NegĂłcio]",
"website_url": "[URL]",
"industry": "[IndĂșstria]",
"report_date": "[AAAA-MM-DD]",
"generated_by": "Estrategista de AnĂșncios IA"
},
"ad_readiness_score": {
"composite_score": 0,
"audience_clarity": {"score": 0, "weight": 25, "findings": []},
"creative_quality": {"score": 0, "weight": 20, "findings": []},
"funnel_architecture": {"score": 0, "weight": 20, "findings": []},
"competitive_position": {"score": 0, "weight": 15, "findings": []},
"budget_efficiency": {"score": 0, "weight": 20, "findings": []}
},
"audience_personas": [
{
"name": "[Nome da Persona]",
"age_range": "[Faixa EtĂĄria]",
"role_title": "[Cargo/TĂtulo]",
"pain_points": [],
"motivations": [],
"platforms": [],
"targeting_params": {}
}
],
"campaign_structure": {
"funnel_stages": [],
"campaigns": [],
"retargeting_flows": []
},
"budget_allocation": {
"total_monthly_budget": 0,
"platform_split": {},
"funnel_stage_split": {},
"projected_metrics": {
"estimated_impressions": 0,
"estimated_clicks": 0,
"estimated_conversions": 0,
"projected_cpa": 0,
"projected_roas": 0
}
},
"competitive_intelligence": {
"competitors_analyzed": [],
"positioning_gaps": [],
"messaging_opportunities": []
},
"top_ad_copy": {
"best_hooks": [],
"top_headlines": [],
"best_ctas": []
},
"action_plan": {
"week_1": [],
"week_2_4": [],
"month_2_3": []
},
"critical_findings": [],
"quick_wins": []
}Step 4: Generate the PDF
Run the PDF generation script with the compiled JSON data:
python3 ~/.claude/skills/ads/scripts/generate_ads_pdf.pyIf the script does not exist, generate it inline. The script should produce a PDF with these sections:
PDF Structure and Pages
Page 1: Cover
- Report title: "Ad Strategy Report"
- Business name and logo placeholder
- Website URL
- Report date
- "Prepared by AI Ad Strategist"
- Ad Readiness Score Gauge (large, centered) â color-coded:
- 80-100: Green (#059669)
- 60-79: Blue (#2563EB)
- 40-59: Yellow (#D97706)
- 20-39: Orange (#EA580C)
- 0-19: Red (#DC2626)
Page 2: Executive Summary
- Ad Readiness Score Breakdown (5 categories with individual scores)
- Horizontal bar chart showing each category's score relative to the maximum
- 3 critical findings (in bullet points, in bold)
- 3 quick wins (in bullet points, with estimated impact)
- Overall verdict statement
Page 3: Audience Analysis
- Audience Clarity Score: X/100
- Persona cards (2-3 personas), each containing:
- Persona name and demographic summary
- Top 3 pain points
- Top 3 motivations
- Preferred platforms
- Targeting Parameters Summary
- Platform presence chart (bar chart by platform)
Page 4: Creative Direction
- Creative Quality Score: X/100
- Top 5 hooks with platform recommendations
- Examples of better headlines/copy (3-5)
- Creative format recommendations table
- A/B Testing Priorities
Page 5: Campaign Architecture
- Funnel Architecture Score: X/100
- Funnel diagram (visual flow): ``
CONSCIĂNCIA â CONSIDERAĂĂO â CONVERSĂO â RETENĂĂO [Campanha] [Campanha] [Campanha] [Campanha] [% Orçamento] [% Orçamento] [% Orçamento] [% Orçamento]`` - Campaign structure table (campaign name, objective, audience, platform)
- Retargeting flow description
Page 6: Competitive Positioning
- Competitive Positioning Score: X/100
- Competitor comparison table (name, estimated spend, key message, gap)
- Positioning Opportunities (in Bullet Points)
- Message differentiation recommendations
Page 7: Budget Allocation
- Budget Efficiency Score: X/100
- Pie chart: Budget allocation by platform
- Bar chart: Budget allocation by funnel stage
- Projected metrics table: | Metric | Month 1 | Month 2 | Month 3 | |--------|---------|---------|---------| | Spend | $X | $X | $X | | Impressions | X | X | X | | Clicks | X | X | X | | Conversions | X | X | X | | CPA | $X | $X | $X | | ROAS | Xx | Xx | Xx |
- Scaling Map (when to increase the budget and by how much)
Page 8: 90-Day Action Plan
- Color-coded priority table:
- Week 1 (Red/Urgent): Immediate setup actions
- Weeks 2â4 (Orange/Important): Launch and initial optimization
- Months 2â3 (Blue/Strategic): Scale and Expansion
- Each action item includes: task, owner, platform, estimated impact
- Key milestones and checkpoints
Page 9: Appendix (if data is available)
- Complete keyword list (if
/ads keywordswas executed) - Complete library of ad copy (if
/ads copywas executed) - Landing page audit summary (if
/ads landingwas executed) - A/B testing plan (if
/ads testingwas executed)
PDF Design Specifications
Layout:
- Page size: Letter (8.5" x 11")
- Margins: 0.75" on all sides
- Header: Business name (left), page number (right)
- Footer: "Generated by AI Ad Strategist" (center)
Colors:
- Primary: #1E3A5F (dark navy blue â headings, titles)
- Secondary: #2563EB (blue â accents, highlights, links)
- Background: #F8FAFC (light gray â section backgrounds)
- Text: #1F2937 (dark gray â body text)
- Success: #059669 (green â positive scores, strengths)
- Notice: #D97706 (amber â average scores, caution)
- Danger: #DC2626 (red â low scores, critical issues)
Typography:
- Titles: Helvetica-Bold, 16pt (h1), 13pt (h2), 11pt (h3)
- Body: Helvetica, 10pt
- Tables: Helvetica, 9pt
- Captions: Helvetica, 8pt, gray
Charts (ReportLab Drawing):
- Score gauge: Arc/donut chart with the score number centered
- Bar charts: Horizontal bars with value labels
- Pie charts: With percentage labels and legend
- Funnel diagram: Trapezoid shapes with labels
Step 5: Post-Generation
After generating the PDF:
- Check whether the file was created:
ls -la ADS-STRATEGY-REPORT.pdf- Tell the user the file size and location
- Suggest next steps:
- Review the PDF and share it with the client or team
- Run
/ads auditafter 7 days of campaign data - Use individual skills to regenerate specific sections
Missing Data Handling
Not all skills may have run before generating the PDF. Handle this appropriately:
| Available Data | Behavior |
|---|---|
| Full strategy execution (all 5 agents) | Generate a complete report with all pages |
| Partial Data (some agents) | Generate a report with the available sections, marking missing sections as "Not Yet Analyzed" |
| Quick snapshot only | Generate a mini-report (cover + executive summary + action plan) |
| No data files found | Tell the user to run /ads strategy <url> first |
Minimum Data Needed: At least one file ADS-*.md must exist. If none is found, display:
Nenhum dado de estratĂ©gia de anĂșncios encontrado no diretĂłrio atual.
Execute '/ads strategy <url>' primeiro para gerar a anĂĄlise,
e entĂŁo use '/ads report-pdf' para criar o relatĂłrio em PDF.Output
The final output is a single PDF file: ADS-STRATEGY-REPORT.pdf
Saved in the current working directory, alongside the source Markdown files.
Important Rules
- Always check existing data files before generatingânever create a PDF with empty data/placeholders
- The PDF must be client-ready without any editing
- Score gauges should use color coding to make performance instantly visible
- Charts should have clear labels â no unlabeled axes or legends
- If the script fails, provide the exact error message and suggest installing ReportLab:
pip3 install reportlab - The score gauge on the cover page is the most important visualâit must be prominent and accurate
- Budget projections should be labeled as estimates, not guarantees
- Always include the 90-day action planâitâs the most actionable section for clients
- Page numbers and headers/footers should be consistent across all pages
- If the data is partial, clearly mark which sections have complete data vs. estimates
- The PDF file name must always be
ADS-STRATEGY-REPORT.pdffor consistency - The file size must be under 5 MBâoptimize chart rendering if needed
--- skills/ads-audit/SKILL.md ---
name: ads-audit description: Ad Performance Auditor â analyze existing ad campaigns and identify optimization opportunities version: 1.0.0 author: AI Ads Strategist tags: [ads, audit, performance, optimization, analytics] trigger: /ads audit output: ADS-AUDIT.md