PTENES
MODULE 1.4 · TRACK 1

📣 PDF Ad Strategy Report Generator

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


7
Topics
15 min
Reading
orchestrator
Command
Ads
Team

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

When to Use PDF vs. Markdown

FormatBest ForAdvantagesDisadvantages
PDFClient presentations, email attachments, proposals, sales materialsProfessional appearance, charts and gauges, printable, consistent formattingRequires a Python script; harder to edit
MarkdownInternal use, quick reference, iterative editing, version controlEasy to edit, fast generation, Git-compatibleLess 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/null

If 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):

Search command:

ls ADS-*.md 2>/dev/null

For each file found, extract:

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.py

If the script does not exist, generate it inline. The script should produce a PDF with these sections:

PDF Structure and Pages

Page 1: Cover

Page 2: Executive Summary

Page 3: Audience Analysis

Page 4: Creative Direction

Page 5: Campaign Architecture

Page 6: Competitive Positioning

Page 7: Budget Allocation

Page 8: 90-Day Action Plan

Page 9: Appendix (if data is available)

PDF Design Specifications

Layout:

Colors:

Typography:

Charts (ReportLab Drawing):

Step 5: Post-Generation

After generating the PDF:

  1. Check whether the file was created:
ls -la ADS-STRATEGY-REPORT.pdf
  1. Tell the user the file size and location
  2. Suggest next steps:

Missing Data Handling

Not all skills may have run before generating the PDF. Handle this appropriately:

Available DataBehavior
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 onlyGenerate a mini-report (cover + executive summary + action plan)
No data files foundTell 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

--- 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


← Module 1.3 Module 1.5 →