Turn data reports into 16:9 web-based slide decks — a Claude Code skill / standalone project template.
$ npx -y skills add myunwang/ppt-report-skills --agent claude-code
FAQ
ppt-report-skills is a Claude Code plugin with 1 hand-picked skill for content work, indexed on Flowy. Install it with the command on its page. It includes ppt-report-skills. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Repo: myunwang/ppt-report-skills
English | 中文
Turn data reports into 16:9 web-based slide decks — a Claude Code skill / standalone project template. One file per slide · physical data separation · ECharts · 5 themes · one-click PDF export
Recommender-system layered architecture (landscape-map template, no ECharts — pure CSS structure graph):

Industry landscape map (3-tier nested + logo wall; public entities replace sensitive data):

Human silhouette portrait (human-portrait template — data-driven, one-pass: a consulting-grade human silhouette with leader-line anchors auto-connecting to surrounding labels; born from "OpenAI IPO" deck, OpenClipart CC0):

Central silhouette stays clean — colored dots (real SVG elements) on the silhouette mark body parts, and dashed leader lines auto-connect from each dot to its label card on the slide edges. You write only one block of
labelsdata (each bound to a bodypartlike head / heart / legs / shoulder / rightHand); the silhouette, anchor coordinates, dots, and leader lines are all computed automatically — no hand-drawn silhouette, no coordinate calibration, no manual leader-line placement. Works for user persona, anthropomorphic capability maps, job-risk heatmaps, and team pictograms.
Value-flow chain (value-chain template — framework diagram for physical industries; horizontal value flow with self-operated / outsourced badges and a color gradient along the chain, pure CSS):

Vertical / portrait — for phone & social (portrait format — scenario-driven, low content density; one deck exports to any platform size: 小红书 3:4 / WeChat long-image / Stories 9:16 …):
A template that engineers the "data report → web slide deck" workflow. Two ways to use it:
~/.claude/skills/ppt-report-generator/ and let Claude build reports following this spec automaticallyassets/ to src/ and run python3 build.py to bundle a single HTMLSlide tools (Keynote / Lark Docs / Google Slides) have a few chronic pain points for data reporting:
ppt-report-generator solves this with an engineering approach:
<style>/<script>, so you just copy a template over and it plugs in (no need to split the style block into a separate css file)assets/slides-templates/):
kpi-overview — multi-section × multi-card overviewtwo-country — two-subject side-by-side comparison (KPI + metric table)three-phase — three-phase timeline + multiple chartsmulti-trend — multi-subject trend comparisonsupply-bars — categorical bars + trend lineslandscape-map — industry / competitor landscape (12-grid 3-tier nested + logo wall; fully static pure CSS, JS only injects logos)matrix-2x2 — McKinsey / BCG-style 2×2 strategic matrix (4 quadrants + bubble positioning + 3 strategic insights; pure CSS, not ECharts scatter)human-portrait — consulting-grade human silhouette portraits, data-driven one-pass (male businessman with briefcase + female long-haired professional, OpenClipart CC0; central silhouette + body-part colored dots as real SVG elements + leader lines auto-connecting to surrounding label cards). You write only one block of labels data — each bound to a body part (head / heart / legs / shoulder / rightHand) — and the silhouette, coordinates, dots, and leader lines are all computed automatically (no hand-drawn silhouette, no coordinate calibration, no manual leader-line placement). Use for user persona / anthropomorphic capability map / job-risk heatmap / team pictogram. Pre-baked into scripts/silhouette.js as window.SILHOUETTE + injectSilhouette() + renderHumanPortrait() — drop-in shared across all slidesvalue-chain — NEW ⭐ value-flow horizontal axis (physical-industry framework diagram) — the B skeleton from landscape-skeleton, for physical industries / asset-heavy businesses (commercial space, energy, manufacturing, consumer goods) to express "how value flows along the chain". 5–6 stage cards chained left-to-right with ▶ arrows, each carrying a core number + key activities + an own-vs-outsource badge, colors deepening along the chain. Fully static pure CSS, zero JSreferences/): architecture · design system · layout principles · chart selection · components · themes · landscape-skeleton · landscape-qa · matrix-2x2 · svg-aesthetics · human-portrait# 1. Clone the repo
git clone https://github.com/<your-username>/ppt-report-generator.git
cd ppt-report-generator
# 2. One-click init a new project
./quickstart.sh ../my-report
# 3. Enter the project and start editing
cd ../my-report
# Edit src/slides/slide-1.html / src/data/slide-1.json ...
python3 build.py
open *.html # Open in browser, ← / → to navigate
# 4. (Optional) Export PDF
pip install playwright img2pdf
playwright install chromium
python3 export_pdf.py
# macOS / Linux
mkdir -p ~/.claude/skills
git clone https://github.com/<your-username>/ppt-report-generator.git ~/.claude/skills/ppt-report-generator
Then in Claude Code just say "make a monthly report" / "turn this data into a slide deck", and Claude will follow this skill's workflow automatically: pick a page template → organize data in src/data/slide-N.xlsx → lay out using the 8 font-size levels + the "Golden 11" principles → call the matching ECharts template function → output via build.py.
Language: the skill spec and reference docs ship in two languages. The repo root (
SKILL.md,references/) is Chinese; a fully English version lives ini18n/en/(i18n/en/SKILL.md+i18n/en/references/, with an English trigger description). For English use, clone with that path as the skill root, e.g. point Claude Code ati18n/en/SKILL.md.
See SKILL.md for details.
Business data already lives in Excel — don't retype it into JSON:
src/data/
├── slide-1.xlsx ← recommended — multiple sheets auto-convert to multiple JSON keys
├── slide-2.csv ← single-table data
└── slide-3.json ← complex nested structure / machine-generated
xlsx conversion rule: each sheet → one top-level JSON key, each row → one object ({header: value}). Sheets/columns starting with _ are skipped.
Example: slide-3.xlsx contains sheet kpis (columns label/value/unit) and trend (columns week/na/eu); after build it's injected as:
window.__DATA_3__ = {
kpis: [{label: 'DAU', value: 12.4, unit: '万'}, {label: 'ARR', value: 48, unit: 'M USD'}],
trend: [{week: 'W1', na: 12.1, eu: 8.4}, {week: 'W2', na: 12.4, eu: 8.6}]
}
xlsx dependency: pip install openpyxl (csv / json use the standard library, no dependency). See references/architecture.md.
ppt-report-generator/
├── SKILL.md # Skill entry (Claude Code loads this)
├── README.md # The file you're reading
├── LICENSE # MIT
├── quickstart.sh # One-click init for a new project
├── references/ # Design philosophy & rules (11 docs)
│ ├── architecture.md # Split architecture + build.py internals + adaptive scaling
│ ├── design-system.md # 8 font-size levels / weights / colors / spacing hard rules
│ ├── layout-principles.md # 14 classic slide layout rules (incl. card-boundary alignment)
│ ├── chart-mapping.md # Data shape ↔ chart selection decision table + ECharts config templates
│ ├── components.md # Common component library (KPI / Phase / Mini-bar etc.)
│ ├── themes.md # 5 preset themes + customization
│ ├── landscape-skeleton.md # Skeleton picker for industry-landscape pages (which framework fits)
│ ├── landscape-qa.md # Landscape-map render & QA checklist
│ ├── matrix-2x2.md # 2×2 strategic-matrix build rules
│ ├── svg-aesthetics.md # Hand-written inline-SVG aesthetics (5 anti-ugly principles)
│ └── human-portrait.md # Human-portrait template build rules
└── assets/ # Ready-to-copy production files
├── shell.html # HTML skeleton (placeholders)
├── build.py # Bundle script (auto-detects N slides + xlsx/csv/json data; auto-extracts templates' inline <style>/<script>)
├── export_pdf.py # PDF export
├── xlsx2json.py # Excel/CSV → JSON converter (called by build, also runs standalone)
├── styles/
│ ├── common.css # 5 theme variables + adaptive scaling
│ └── components.css # Common components
├── scripts/
│ ├── common.js # Adaptive + navigation + 5 ECharts template functions
│ ├── silhouette.js # Human silhouette paths + body-part coords + renderHumanPortrait (used by human-portrait, auto-injected by build)
│ └── theme-switcher.js # Theme switching
└── slides-templates/ # 9 page templates (copy → rename slide-N.html)
├── kpi-overview.html # Multi-section × multi-card overview
├── two-country.html # Two-subject side-by-side comparison
├── three-phase.html # Three-phase timeline + multiple charts
├── multi-trend.html # Multi-subject trend comparison
├── supply-bars.html # Categorical bars + trend lines
├── landscape-map.html # Industry / competitor landscape (3-tier nested + logo wall)
├── matrix-2x2.html # McKinsey / BCG-style 2×2 strategic matrix
├── human-portrait.html # Data-driven human silhouette portrait + leader lines
└── value-chain.html # Value-flow horizontal axis (physical-industry framework)
The data directory
src/data/is created per-project byquickstart.shat init time; no sample data is preset.
data/slide-N.jsonvar(--fs-*); don't add new sizes ad hocvar(--accent*) theme variablessrc/, never the build output1fr 1fr + flex:1 1 0; min-height:0 + flexible spacer to absorb differences; never hardcode heightSee references/ for details.
MIT — use, modify, and distribute freely.
Every rule grew out of a pitfall hit while making real reports.
Issues / PRs welcome:
See CONTRIBUTING.md.
English | 中文
把数据汇报做成 16:9 网页版 PPT 的 Claude Code skill / 独立工程模板。 每页一个文件 · 数据物理分离 · ECharts · 5 套主题 · 一键导出 PDF
推荐系统分层架构(landscape-map 模板,纯 CSS 结构图,不依赖 ECharts):

产业图谱全景(3-tier 嵌套 + logo 墙;用公开实体替代敏感数据):

人体剪影画像(human-portrait 模板 — 数据驱动一次成:咨询报告级西装提包剪影 + 引线自动锚定周边标签;源自"OpenAI IPO"deck,OpenClipart CC0):

中央剪影保持干净 — 剪影身上以可见色点(真实 SVG 元素)标识部位,虚线引线从色点自动连接到 slide 边缘的标签卡片。只写一段 labels 数据(每个标签绑定一个身体 part 名,如 head / heart / legs / shoulder / rightHand),剪影、坐标、色点、引线全部自动算出 —— 无需手画剪影、无需校准坐标、无需手摆引线。不用背景高亮圆。适合用户画像、拟人化能力地图、职业风险热图、团队 pictogram。
价值流横轴(value-chain 模板 — 实体产业框架图:横向价值链 + 自营/外采徽章 + 沿链渐变色,纯 CSS 全静态):

竖屏 · 手机 / 小红书 / 公众号(portrait 格式 — 场景驱动、低内容密度;一套内容精准导出多平台规格:小红书 3:4 / 公众号长图 / 朋友圈 4:5 / 手机全屏 9:16 …):
一套把"数据汇报 → 网页 PPT"工程化的模板。两种用法:
~/.claude/skills/ppt-report-generator/,让 Claude 自动按这套规范帮你做汇报assets/ 拷成 src/,运行 python3 build.py 合成单 HTMLPPT 工具(Keynote / 飞书文档 / Google Slides)做数据汇报有几个老大难:
ppt-report-generator 用工程化方法解决:
<style>/<script>,模板拷过去就能用(不用再手动把样式块拆到单独 css 文件)assets/slides-templates/):
kpi-overview — 多板块 × 多卡片总览two-country — 双对象左右对照(KPI + metric 表)three-phase — 三阶段时间线 + 多图表multi-trend — 多对象趋势对比supply-bars — 分类条形 + 趋势折线landscape-map — 产业图谱 / 竞品全景(12 栅格 3-tier 嵌套 + logo 墙;纯 CSS 全静态,JS 只注入 logo)matrix-2x2 — 麦肯锡 / BCG 风 2×2 战略矩阵(4 象限 + 气泡定位 + 3 条战略洞察;纯 CSS,不用 ECharts scatter)human-portrait — 咨询报告级人体剪影画像,数据驱动一次成(西装提包男 + 长发耸肩职业女,OpenClipart CC0;中央剪影 + 身体部位可见色点(真实 SVG 元素)+ 引线从色点自动连接到周边标签卡)。只写一段 labels 数据(每个标签绑定一个身体 part 名,如 head / heart / legs / shoulder / rightHand),剪影、坐标、色点、引线全部自动算出 —— 无需手画剪影、无需校准坐标、无需手摆引线;无背景高亮圆保持剪影干净。适用 用户画像 / 拟人化能力地图 / 职业风险图 / 团队 pictogram。剪影 path / 部位坐标 / 渲染逻辑预置在 scripts/silhouette.js(window.SILHOUETTE + injectSilhouette() + renderHumanPortrait()),由 renderHumanPortrait() 一次渲染,所有 slide 调用一份即可value-chain — 新增 ⭐ 价值流横轴模板(landscape-skeleton 的 B 骨架) — 给实体产业 / 重资产生意(商业航天、能源、制造、消费品)表达"价值如何沿链条流动"。5~6 个环节卡横向 ▶ 串联,每段含核心数字 + 关键活动 + 自营 / 外采徽章,颜色沿链渐深。纯 CSS 全静态、零 JSreferences/):架构 · 设计系统 · 布局法则 · 图表选型 · 组件 · 主题 · landscape-skeleton · landscape-qa · matrix-2x2 · svg-aesthetics · human-portraitbuild.py(合成 HTML)+ export_pdf.py(导出 PDF)+ quickstart.sh(一键初始化新项目)# 1. 克隆仓库
git clone https://github.com/<your-username>/ppt-report-generator.git
cd ppt-report-generator
# 2. 一键初始化新项目
./quickstart.sh ../my-report
# 3. 进项目,开始改
cd ../my-report
# 编辑 src/slides/slide-1.html / src/data/slide-1.json ...
python3 build.py
open *.html # 浏览器打开,← / → 翻页
# 4.(可选)导出 PDF
pip install playwright img2pdf
playwright install chromium
python3 export_pdf.py
# macOS / Linux
mkdir -p ~/.claude/skills
git clone https://github.com/<your-username>/ppt-report-generator.git ~/.claude/skills/ppt-report-generator
之后在 Claude Code 里直接说**"做一份月度汇报"** / "把这个数据做成 PPT",Claude 会自动按本 skill 的规范工作流走:选页面模板 → 在 src/data/slide-N.xlsx 整理数据 → 按 8 级字号 + "黄金 11 条"理念排版 → 调用对应 ECharts 范本函数 → build.py 输出。
语言版本:skill 规范和参考文档提供中英两份。仓库根目录(
SKILL.md、references/)为中文;完整英文版在i18n/en/(i18n/en/SKILL.md+i18n/en/references/,含英文触发 description)。英文用户把该路径作为 skill 根目录使用,即让 Claude Code 加载i18n/en/SKILL.md。
详见 SKILL.md。
日常业务数据本来就在 Excel 里,不要再手抄到 JSON:
src/data/
├── slide-1.xlsx ← 推荐 — 多 sheet 自动转为多个 JSON key
├── slide-2.csv ← 单表数据
└── slide-3.json ← 复杂嵌套结构 / 机器生成
xlsx 转换规则:每个 sheet → JSON 顶层一个 key,每行 → 一个对象({表头: 值})。以 _ 开头的 sheet/列名跳过。
举例:slide-3.xlsx 含 sheet kpis(label/value/unit 三列)和 trend(week/na/eu 三列),build 后注入为:
window.__DATA_3__ = {
kpis: [{label: 'DAU', value: 12.4, unit: '万'}, {label: 'ARR', value: 48, unit: 'M USD'}],
trend: [{week: 'W1', na: 12.1, eu: 8.4}, {week: 'W2', na: 12.4, eu: 8.6}]
}
xlsx 依赖:pip install openpyxl(csv / json 用标准库,无依赖)。详见 references/architecture.md。
ppt-report-generator/
├── SKILL.md # Skill 入口(Claude Code 加载这个)
├── README.md # 你正在看的文件
├── LICENSE # MIT
├── quickstart.sh # 一键初始化新项目
├── references/ # 设计哲学与规则(共 11 份)
│ ├── architecture.md # 拆分架构 + build.py 工作原理 + 自适应缩放
│ ├── design-system.md # 8 级字号 / 字重 / 颜色 / 间距硬规则
│ ├── layout-principles.md # 14 条经典 PPT 布局法则(含卡片边界对齐)
│ ├── chart-mapping.md # 数据形态 ↔ 图表选型决策表 + ECharts 配置范本
│ ├── components.md # 通用组件库(KPI / Phase / Mini-bar 等)
│ ├── themes.md # 5 套预设主题 + 自定义方法
│ ├── landscape-skeleton.md # 产业全景图骨架选择(哪种骨架适合该行业)
│ ├── landscape-qa.md # landscape-map 渲染 + 质量自检清单
│ ├── matrix-2x2.md # 2×2 战略矩阵构建规则
│ ├── svg-aesthetics.md # 手写 inline SVG 美学(5 大反丑原则)
│ └── human-portrait.md # human-portrait 模板构建规则
└── assets/ # 可直接拷贝的成品文件
├── shell.html # HTML 骨架(占位符)
├── build.py # 合成脚本(自动检测 N 个 slides + xlsx/csv/json 数据;自动抽取模板内联 <style>/<script>)
├── export_pdf.py # PDF 导出
├── xlsx2json.py # Excel/CSV → JSON 转换器(被 build 调用,也可单跑)
├── styles/
│ ├── common.css # 5 套主题变量 + 自适应缩放
│ └── components.css # 通用组件
├── scripts/
│ ├── common.js # 自适应 + 导航 + 5 个 ECharts 范本函数
│ ├── silhouette.js # 人体剪影 path + 部位坐标 + renderHumanPortrait(human-portrait 页用,build 自动注入)
│ └── theme-switcher.js # 主题切换
└── slides-templates/ # 9 套页面模板(拷贝 → 改名 slide-N.html)
├── kpi-overview.html # 多板块 × 多卡片总览
├── two-country.html # 双对象左右对照
├── three-phase.html # 三阶段时间线 + 多图
├── multi-trend.html # 多对象趋势对比
├── supply-bars.html # 分类条形 + 趋势折线
├── landscape-map.html # 产业图谱 / 竞品全景(3-tier 嵌套 + logo 墙)
├── matrix-2x2.html # 麦肯锡 / BCG 风 2×2 战略矩阵
├── human-portrait.html # 数据驱动人体剪影画像 + 引线
└── value-chain.html # 价值流横轴(实体产业框架图)
数据目录
src/data/由quickstart.sh在初始化时为新项目创建,不预置示例数据。
data/slide-N.jsonvar(--fs-*),不要随手加新字号var(--accent*) 主题变量src/,不要改 build 产物1fr 1fr + flex:1 1 0; min-height:0 + 弹性占位补差,不写死 height详见 references/。
MIT — 随意使用、修改、分发。
每一条规则都从做汇报踩过的坑里长出来。
欢迎 issue / PR:
详见 CONTRIBUTING.md。
.gitignore
assets/
build.py
check_deck.py
export_images.py
export_pdf.py
fetch_logos.py
presets.json
README.md
scripts/
common.js
silhouette.js
theme-switcher.js
shell-portrait.html
shell.html
slides-templates/
human-portrait.html
kpi-overview.html
landscape-map.html
matrix-2x2.html
multi-trend.html
portrait/
big-number.html
comparison.html
cover.html
end.html
image-text.html
list.html
quote.html
section.html
single-chart.html
timeline.html
supply-bars.html
three-phase.html
two-country.html
value-chain.html
styles/
common.css
components.css
portrait.css
xlsx2json.py
CHANGELOG.md
CONTRIBUTING.md
DEPENDENCIES.md
docs/
screenshots/
human-portrait.png
landscape-map.png
portrait-big-number.png
portrait-cover.png
portrait-list.png
recsys-architecture.png
value-chain.png
examples/
portrait-growth-review/
build.py
export_images.py
presets.json
README.md
src/
scripts/
common.js
silhouette.js
theme-switcher.js
shell.html
slides/
slide-1.html
slide-10.html
slide-2.html
slide-3.html
slide-4.html
slide-5.html
slide-6.html
slide-7.html
slide-8.html
slide-9.html
styles/
common.css
components.css
portrait.css
recsys-architecture/
build.py
dist/
recsys-architecture.html
export_pdf.py
README.md
src/
README.md
scripts/
common.js
slide-1.js
theme-switcher.js
shell.html
slides/
slide-1.html
styles/
common.css
components.css
slide-1.css
xlsx2json.py
i18n/
en/
assets-README.md
references/
architecture.md
chart-mapping.md
components.md
design-system.md
layout-principles.md
themes.md
SKILL.md
LICENSE
quickstart.sh
README.md
references/
architecture.md
chart-mapping.md
components.md
design-system.md
human-portrait.md
landscape-qa.md
landscape-skeleton.md
layout-principles.md
matrix-2x2.md
portrait.md
report-quality.md
svg-aesthetics.md
themes.md
requirements-pdf.txt
requirements.txt
SKILL.md© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic
build.py (bundle HTML) + export_pdf.py (export PDF) + quickstart.sh (one-click init for a new project)