Skip to content
Marketing
Skill

/market-report-pdf

Generate a professional, visually polished PDF marketing report using the Python script `scripts/generate_pdf_report.py`. This skill collects all available audit and analysis data, structures it into the expected JSON format, invokes the script, and produces a branded PDF with

From plugin
ai-marketing-claude
2.3k14 skills5 agents
Install
$ npx -y skills add zubair-trabzada/ai-marketing-claude --skill market-report-pdf --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/market-report-pdf

Context preview

The summary Claude sees to decide when to auto-load this skill.

Generate a professional, visually polished PDF marketing report using the Python script `scripts/generate_pdf_report.py`. This skill collects all available audit and analysis data, structures it into the expected JSON format, invokes the script, and produces a branded PDF with

SKILL.md

market-report-pdf.SKILL.md

PDF Marketing Report Generator

Skill Purpose

Generate a professional, visually polished PDF marketing report using the Python script `scripts/generate_pdf_report.py`. This skill collects all available audit and analysis data, structures it into the expected JSON format, invokes the script, and produces a branded PDF with score gauges, bar charts, comparison tables, findings, and a prioritized action plan.

When to Use

  • User wants a PDF version of the marketing report (not just Markdown)
  • User is preparing a deliverable for a client presentation
  • User asks for a "polished report", "client-ready report", or "PDF report"
  • User wants a visual report with charts and scores
  • Triggered by `/market report-pdf` or `/market report-pdf <domain>`

When to Use PDF vs Markdown

| Format | Best For | Pros | Cons | |---|---|---|---| | **PDF** | Client presentations, email attachments, sales collateral | Professional appearance, consistent formatting, visual charts, printable | Harder to edit, requires Python script | | **Markdown** | Internal use, quick reference, iterative editing, version control | Easy to edit, readable in any editor, git-friendly | Less visually polished, no charts |

**Rule of thumb:** If the report is going to a client or prospect, use PDF. If it is for internal use or further editing, use Markdown.

How to Execute

Step 1: Collect All Available Data

Gather data from all previous skill runs. Check for these files in the project directory:

**Primary data sources:**

  • `MARKETING-AUDIT.md` -- Overall audit results
  • `LANDING-CRO.md` -- Landing page conversion analysis
  • `SEO-AUDIT.md` -- SEO findings
  • `BRAND-VOICE.md` -- Brand voice analysis
  • `COMPETITOR-ANALYSIS.md` -- Competitor comparison data
  • `FUNNEL-ANALYSIS.md` -- Funnel analysis
  • `SOCIAL-AUDIT.md` -- Social media audit
  • `EMAIL-AUDIT.md` -- Email marketing audit
  • `AD-AUDIT.md` -- Advertising audit

**If no previous data exists:** 1. Recommend the user run `/market audit <url>` first for the best results 2. If the user insists on generating a report without prior audits, analyze the provided URL directly and build the data structure from scratch 3. Use the analyze_page.py script to gather automated data: `python scripts/analyze_page.py <url>`

Step 2: Build the JSON Data Structure

The `scripts/generate_pdf_report.py` script expects a JSON file as input with this exact structure:

{
  "url": "https://example.com",
  "date": "March 1, 2026",
  "brand_name": "Example Co",
  "overall_score": 62,
  "executive_summary": "A 2-4 sentence summary of the overall marketing health, key opportunities, and estimated revenue impact of implementing recommendations.",
  "categories": {
    "Content & Messaging": {
      "score": 68,
      "weight": "25%"
    },
    "Conversion Optimization": {
      "score": 52,
      "weight": "20%"
    },
    "SEO & Discoverability": {
      "score": 74,
      "weight": "20%"
    },
    "Competitive Positioning": {
      "score": 48,
      "weight": "15%"
    },
    "Brand & Trust": {
      "score": 70,
      "weight": "10%"
    },
    "Growth & Strategy": {
      "score": 55,
      "weight": "10%"
    }
  },
  "findings": [
    {
      "severity": "Critical",
      "finding": "Description of the most important finding"
    },
    {
      "severity": "High",
      "finding": "Description of a high-priority finding"
    },
    {
      "severity": "Medium",
      "finding": "Description of a medium-priority finding"
    },
    {
      "severity": "Low",
      "finding": "Description of a lower-priority finding"
    }
  ],
  "quick_wins": [
    "First quick win action item",
    "Second quick win action item",
    "Third quick win action item"
  ],
  "medium_term": [
    "First medium-term action item",
    "Second medium-term action item",
    "Third medium-term action item"
  ],
  "strategic": [
    "First strategic action item",
    "Second strategic action item",
    "Third strategic action item"
  ],
  "competitors": [
    {
      "name": "Competitor A",
      "positioning": "Their market position",
      "pricing": "Their pricing model",
      "social_proof": "Their trust signals",
      "content": "Their content approach"
    },
    {
      "name": "Competitor B",
      "positioning": "Their market position",
      "pricing": "Their pricing model",
      "social_proof": "Their trust signals",
      "content": "Their content approach"
    }
  ]
}

Step 3: Field-by-Field Data Assembly Guide

`url` (string, required)

The target website URL. Use the full URL including protocol.

`date` (string, required)

The report generation date. Format: "Month DD, YYYY" (e.g., "March 1, 2026").

`brand_name` (string, required)

The company or brand name. Used in competitor comparison table headers.

`overall_score` (integer, 0-100, required)

The weighted average of all category scores. Calculate as:

overall_score = (content * 0.25) + (conversion * 0.20) + (seo * 0.20) + (competitive * 0.15) + (brand * 0.10) + (growth * 0.10)

`executive_summary` (string, required)

A 2-4 sentence summary covering:

  • Current marketing health assessment
  • Top 1-2 most impactful findings
  • Estimated revenue impact of implementing recommendations
  • Recommended first step

Keep it concise and impactful. This appears on the cover page right below the score gauge.

`categories` (object, required)

Exactly 6 categories with their scores. The categories map to these evaluation areas:

| Category | What It Measures | Scoring Guidance | |---|---|---| | Content & Messaging | Copy quality, value proposition, headline clarity, CTA text, brand voice consistency | 80+: Clear, benefit-driven, specific. 60-79: Adequate but generic. <60: Vague, feature-focused, unclear | | Conversion Optimization | Social proof, form design, CTA placement, objection handling, urgency | 80+: Multiple proof types, optimized forms, clear CTAs. 60-79: Some elements present. <60: Missing critica

Read more
Ships withai-marketing-claude

A comprehensive marketing analysis and automation skill system for Claude Code. Audit any website's marketing, generate copy, build email sequences, create content calendars, analyze competitors, and produce client-ready PDF reports — all from your terminal.

Get the whole plugin

Other skills on ai-marketing-claude.