Install
$ agentstack add skill-zubair-trabzada-ai-marketing-claude-market-report-pdf ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
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-pdfor/market report-pdf
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 resultsLANDING-CRO.md-- Landing page conversion analysisSEO-AUDIT.md-- SEO findingsBRAND-VOICE.md-- Brand voice analysisCOMPETITOR-ANALYSIS.md-- Competitor comparison dataFUNNEL-ANALYSIS.md-- Funnel analysisSOCIAL-AUDIT.md-- Social media auditEMAIL-AUDIT.md-- Email marketing auditAD-AUDIT.md-- Advertising audit
If no previous data exists:
- Recommend the user run
/market auditfirst for the best results - If the user insists on generating a report without prior audits, analyze the provided URL directly and build the data structure from scratch
- Use the analyze_page.py script to gather automated data:
python scripts/analyze_page.py
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. /tmp/report_data.json /dev/null || pip3 install reportlab
**Generate the report:**
```bash
python3 scripts/generate_pdf_report.py /tmp/report_data.json "MARKETING-REPORT-.pdf"
Replace `` with the target website's domain name (without protocol or www), using hyphens instead of dots. For example:
example.combecomesMARKETING-REPORT-example-com.pdfmyapp.iobecomesMARKETING-REPORT-myapp-io.pdf
Demo mode (no arguments): Running the script without arguments generates a sample report with placeholder data:
python3 scripts/generate_pdf_report.py
# Creates: MARKETING-REPORT-sample.pdf
Step 6: Verify the Output
After generation, verify the PDF was created:
ls -la "MARKETING-REPORT-.pdf"
Report the file path and size to the user.
Step 7: Clean Up
Remove the temporary JSON file:
rm /tmp/report_data.json
PDF Report Contents
The generated PDF includes the following pages:
Page 1: Cover Page
- Report title: "Marketing Audit Report"
- Target URL
- Generation date
- Overall score gauge (circular visualization with color coding)
- Grade letter (A+ through F)
- Executive summary paragraph
Page 2: Score Breakdown
- Horizontal bar chart showing all 6 category scores with color coding
- Score table with category names, scores, weights, and status labels
- Color coding: Green (80+), Blue (60-79), Yellow (40-59), Red (` -- Generates comprehensive audit data
- Run
/market competitors-- Adds competitor comparison data - Run
/market seo-- Adds detailed SEO findings - Run
/market landing-- Adds CRO analysis - Run
/market report-pdf-- Compiles everything into a PDF
The PDF report skill will automatically look for output files from these skills and incorporate their data into the report JSON.
Output
- File:
MARKETING-REPORT-.pdf - Location: Project root directory
- Size: Typically 200KB-500KB depending on content volume
- Pages: 5-7 pages depending on whether competitor data and additional sections are included
Key Principles
- The PDF report is the most client-facing deliverable in the toolkit. Quality matters.
- Always verify the JSON data is complete and accurate before generating. Garbage in, garbage out.
- Use the PDF for initial client impressions and sales conversations. Follow up with the more detailed Markdown report if the client engages.
- Every score should be justifiable. If a client asks "why did I get a 52 in Conversion Optimization?", the findings should provide clear evidence.
- Round scores to whole numbers. Decimals imply false precision.
- Keep the executive summary tight -- 2-4 sentences maximum. Clients skim cover pages.
- If generating for a prospect (not yet a client), the report serves as a sales tool. Make the opportunities compelling and the action plan achievable.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: zubair-trabzada
- Source: zubair-trabzada/ai-marketing-claude
- License: MIT
- Homepage: https://www.skool.com/aiworkshop
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.