Visibly seo pdf build
Skill AntonioBlago/claude-code-seo-starter/.claude/skills/visibly-seo-pdf-build
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.From its SKILL.md
npx -y skills add AntonioBlago/claude-code-seo-starter --skill visibly-seo-pdf-buildAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.4 KB, as published. Nobody here has run it
CI-Compliant PDF Build
Render a brand-compliant, client-ready PDF with fpdf2 (or a PDF MCP if one is connected — prefer it when available).
Step 1 — Start from the Python template
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.
Step 2 — Register fonts correctly
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)
Step 3 — Apply the CI
- Cover: dark background, accent bar, white title, brand + client + date + contact.
- Header/footer: dark bar + accent line; brand left, contact centred.
- Section titles: accent bar + bold heading font.
- Tables: accent header row (white text), alternating white / light-gray body rows.
- KPI / ROI boxes: colour-coded (good / warning / critical) — avoid pure red-green only; add a second cue so it survives grayscale and colour-blind readers.
Step 4 — Standard structure
Cover → table of contents → content sections → investment / ROI / next steps → contact footer.
Step 5 — Typography & correctness rules
- Real accented characters, never ASCII (
für, notfuer). - Real symbols:
® ™ ©, never(R)/(TM)/(C). - Break wide tables: when a cell exceeds ~50 characters, switch from a simple table
row to manual
multi_celllayout so the text wraps and stays readable.
Step 6 — Verify before shipping
Open the rendered PDF and check cover, fonts, accents, table wrapping, and page breaks. Never hand over a PDF you haven't looked at.
Output
A4 PDF in the client's task folder. Slash command: /visibly-seo-pdf-build <script.py>.
Best practices: docs/best-practices.md.