Skip to content
Education
Skill

/blog-cover-poster

Turn a blog post, article, notes, or any source material into a set of vertical poster images — one cover plus several coherent content slides that explain the core points. Renders HTML/CSS to exact-size PNGs via headless Chrome. Use whenever the user wants cover art, 讲解图/配图,

BOOST
From plugin
blog
8.6k85 skills
Install
$ npx -y skills add digoal/blog --skill blog-cover-poster --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/blog-cover-poster

Context preview

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

Turn a blog post, article, notes, or any source material into a set of vertical poster images — one cover plus several coherent content slides that explain the core points. Renders HTML/CSS to exact-size PNGs via headless Chrome. Use whenever the user wants cover art, 讲解图/配图,

SKILL.md

blog-cover-poster.SKILL.md
name: blog-cover-poster
description: Turn a blog post, article, notes, or any source material into a set of vertical poster images — one cover plus several coherent content slides that explain the core points. Renders HTML/CSS to exact-size PNGs via headless Chrome. Use whenever the user wants cover art, 讲解图/配图, carousel slides, 封面图, poster series, or "content images" from an article/文章/素材/文件, especially for blog, 公众号, 小红书, or social posts. Default output is 1080×1920 PNG named 1.png (cover), 2.png, 3.png … written to the current working directory (the project the user is in) — never the source file's directory.

Blog Cover Poster

Overview

Generate a **cover image** (`1.png`) plus **N coherent content slides** (`2.png`, `3.png`, …) from source material. Each image is an exact **1080×1920 PNG**. The pipeline authors one HTML file per page using bundled CSS/templates, then renders them to PNG with headless Chrome — this gives precise control over Chinese/English typography, color semantics, and emphasis.

Workflow

1. **Read the source.** Take the file/text the user provides. Extract the title/hook and the core points. **Verify facts against the source only** — do not invent stats, names, or claims that aren't in the material. 2. **Plan the deck** (do this before writing any HTML):

  • Pick a **theme**: `theme-dark` (tech / AI / finance / dev topics) or `theme-light` (knowledge / tutorial / lifestyle / business explainer). Default to the topic fit; honor an explicit user request.
  • Decide **page count automatically** from the number of distinct core points: cover + one slide per point. Typical total is 4–8 images. Merge thin points; split overloaded ones. One idea per content slide.
  • Sketch a one-line outline: `1 cover → 2 <point> → 3 <point> …`. If the user gave a fixed count, follow it.

3. **Set up a scratch working dir** — author intermediate HTML/CSS here, **not** in the source directory and **not** littering the project dir:

   WORK=$(mktemp -d)
   cp <SKILL_DIR>/assets/poster.css "$WORK"/

Author pages as `$WORK/page-1.html` (cover), `$WORK/page-2.html`, … using the templates as a starting point (see **Authoring pages**). The relative `<link href="poster.css">` resolves because the CSS sits beside them. 4. **Render PNGs into the current project directory** (`$PWD` — where the user invoked the skill), never the source file's directory:

   python3 <SKILL_DIR>/scripts/render.py --in "$WORK" --out "$PWD"

This writes `1.png`, `2.png`, … (exact 1080×1920) into `$PWD`. `page-1.html` always becomes the cover `1.png`. If the user names a different output dir, use that instead — but default to `$PWD`. 5. **Inspect every PNG** with the Read tool. Check the checklist below. Fix the HTML in `$WORK` and re-render until clean. 6. **Clean up** the scratch dir (`rm -rf "$WORK"`). Only the `N.png` files remain in the project dir — that is the deliverable. The source directory is never touched.

Authoring pages

Start from the templates and edit — don't write markup from scratch:

  • `assets/template-cover.html` → `page-1.html`
  • `assets/template-content.html` → `page-2.html`, `page-3.html`, …

Keep the same `theme-*` class on `<body>` across all pages.

Content-slide layouts

The content template ships three layout blocks — **keep one per page, delete the rest**:

  • **Points** (`ul.points`): 2–4 scannable items, best default for "reasons / steps / features".
  • **Paragraph** (`.body`): 2–3 short sentences for a concept that needs prose.
  • **Big stat** (`.stat`): one large number for a data point that deserves a full slide.

Emphasis rules (semantic coloring & sizing)

Emphasis must track **meaning and importance**, not decoration:

  • `.hl` / `.hl2` — filled color chip. **At most ONE per page**, on the single most important term. `.hl2` (warm) for contrast/warning/payoff; `.hl` (cool) otherwise.
  • `.ul` — underline. Softer emphasis, for 1–2 secondary terms.
  • `.accent` — colored text, for the **lead word** of each list item.
  • `.muted` — de-emphasized text (subtitles, footers, labels).
  • Type hierarchy is pre-tuned in the CSS: cover title 132px, content heading 84px, body 50–52px. Bigger = more important. If text overflows the 1920px height, **cut words or split into another slide — do not shrink below the template sizes**.

Copywriting for posters

  • Cover title: a punchy hook, ≤ ~14 CJK chars per line, ≤ 2 lines.
  • Content headings: short, one idea. Content body: fragments over full paragraphs — these are read in seconds.
  • Number the deck in the content `.index` (e.g. `01 / 05`) so the series reads as coherent.

Verification checklist (per image)

  • [ ] Size is exactly 1080×1920 (render.py enforces & prints this).
  • [ ] No text is clipped at edges or overflows the bottom.
  • [ ] Exactly one filled highlight chip per page, on the right term.
  • [ ] Emphasis reflects the actual key point, not random words.
  • [ ] Theme is consistent across all pages; contrast is readable.
  • [ ] Content slides read as a coherent, ordered series (indices match count).
  • [ ] Every claim traces to the source material.

Notes

  • `<SKILL_DIR>` is this skill's folder. `render.py` needs Python 3 with Pillow and a Chrome/Chromium install (it auto-detects common locations).
  • To regenerate a single slide, edit its `page-N.html` and re-run render.py — it overwrites all `N.png` deterministically from the current HTML set.
  • For custom fonts, brand colors, or logos: adjust `assets/poster.css` tokens (`--d-accent`, `--l-accent`, etc.) or add an `<img>` in the template.
Read more
Ships withblog

AI,Opensource,Database,Business,Finance,Minds. git clone --depth 1 https://github.com/digoal/blog

Get the whole plugin

Other skills on blog.

a-stock-prediction
Skill

a-stock-prediction

A股个股次日(T+1)走势预测 skill。当用户输入A股股票代码(如 600519、000858、300750、688981、430090)或公司名称(如"贵州茅台"、"宁德时代"、"比亚迪"),并要求预测次日走势、给出交易计划、评估盈亏概率时,触发本…

@digoal@digoalInstall Skill
andres-freund-perspective
Skill

andres-freund-perspect…

PostgreSQL 核心 committer Andres Freund 的思维框架与表达方式。基于 6 个调研维度(著作、对话、表达 DNA、他者视角、决策、时间线) 共 2957 行 / 200 KB 一手资料的深度调研,提炼 6 个核心心智模型、10…

@digoal@digoalInstall Skill
article-fact-checker
Skill

article-fact-checker

三层审查模型,逐段逐句验证文章真伪、证据链与逻辑结构。Use when the user asks to fact-check, verify, audit, or evaluate the credibility of an article, essay,…

@digoal@digoalInstall Skill
axiom-explainer
Skill

axiom-explainer

Write Chinese Markdown articles for university students and adults with social experience that explain one viewpoint, axiom,…

@digoal@digoalInstall Skill
buffett
Skill

buffett

Activates Warren Buffett's complete investment thinking system. The following scenarios must trigger it: analyzing any stock or…

@digoal@digoalInstall Skill