From SEO Agency & Freelancer Starter
Build a clean, brand-compliant PDF from an analysis or offer. Use when the user asks to generate, render, or export a client-ready PDF presentation or document with their corporate identity — cover page, header/footer, section bars, tables, ROI boxes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/seo-starter:visibly-seo-pdf-buildThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Render a **brand-compliant, client-ready PDF** with fpdf2 (or a PDF MCP if one is
Render a brand-compliant, client-ready PDF with fpdf2 (or a PDF MCP if one is connected — prefer it when available).
Import the reusable CIPDF class from
claude_tools/ci_pdf.py — it already implements cover,
header/footer, section bars, body, bullets, wrapping tables and KPI/ROI boxes, and pulls
all brand colours/fonts from templates/ci/brand.py
(one source of truth). Don't reinvent the layout or re-declare the CI.
from claude_tools.ci_pdf import CIPDF
pdf = CIPDF()
pdf.cover("SEO Strategy & Offer", "Example GmbH", "2026-06-13")
pdf.add_page(); pdf.section("1. Executive Summary"); pdf.body("…")
pdf.kpi_box("ROI (realistic)", "233 %", "good")
pdf.output("clients/<domain>/<date>_Offer/offer.pdf")
Run via the venv: .\claude_tools_venv\Scripts\python.exe your_build_script.py
(setup once with .\claude_tools\setup.ps1). templates/pdf_example.py remains a
standalone, zero-config reference if you want a copy to hack on without the package.
CIPDF registers the brand fonts for you (always with uni=True, so ä ö ü ß é ñ
render) if templates/ci/brand.py points FONTS at real .ttf files that exist —
otherwise it falls back to Helvetica so the build never crashes. So the one-time job is:
drop the brand TTFs in fonts/ and set their paths in brand.py. Headings and body
should use distinct brand fonts.
If you build a PDF outside CIPDF, register fonts the same way — always uni=True:
pdf.add_font("Heading", "", f"{FONT_DIR}/Heading-Regular.ttf", uni=True)
pdf.add_font("Heading", "B", f"{FONT_DIR}/Heading-Bold.ttf", uni=True)
pdf.add_font("Body", "", f"{FONT_DIR}/Body-Regular.ttf", uni=True)
Cover → table of contents → content sections → investment / ROI / next steps → contact footer.
für, not fuer).® ™ ©, never (R) / (TM) / (C).multi_cell layout so the text wraps and stays readable.Open the rendered PDF and check cover, fonts, accents, table wrapping, and page breaks. Never hand over a PDF you haven't looked at.
A4 PDF in the client's task folder. Slash command: /visibly-seo-pdf-build <script.py>.
Best practices: docs/best-practices.md.
npx claudepluginhub antonioblago/claude-code-seo-starter --plugin seo-starterGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.