/install banker-slides-pptx
Banker Slides PPTX
Step 2 of the banker pipeline: analysis.md + data-provenance.md → slides-outline.md (structured) → .pptx with real banker visual primitives.
Pipeline position
banker-memo-md (Step 1) → analysis.md + data-provenance.md
│
▼
banker-slides-pptx (THIS SKILL)
│
┌─────────┴─────────┐
▼ ▼
slides-outline.md (rendered by)
(structured YAML build_outline_deck_v2.py
blocks per slide) │
▼
.pptx
What makes this different from a generic "write some slides" prompt
Most LLM-written slide outlines are prose ("Slide 4: Key takeaway is X"). That's useless — the renderer can only emit a paragraph.
This skill forces the agent to write structured layout data the renderer can parse into real pptxgenjs primitives:
stat-cards→addShape+ big-numberaddTextcards3y-table/peer-table/scenario-table→ realaddTable()with column widths + cell fillbar-chart/line-chart→ realaddChart()with X-axis + Y-series datarisk-heatmap→ 3×3 colored grid with risk items placed by (severity, likelihood)callout-box→ full-width gold-bordered box + large-font verdict text
The prompt reads analysis.md already written by banker-memo-md, extracts the numbers, and emits structured outline blocks. The renderer does no LLM work — it's a deterministic layout emitter.
Outline schema (what the agent writes)
Each slide uses a ## Slide N — \x3CTitle> heading followed by Layout: + type-specific YAML-style fields.
cover
## Slide 1 — Cover
Layout: cover
English-title: China Vanke Co., Ltd.
Chinese-subtitle: 万科A · 房地产开发 · 投行深度研究
Ticker: 000002.SZ
Date: 2026-04
divider (section divider between parts)
## Slide N — Section Divider
Layout: divider
Chinese-title: 财务深度诊断
English-subtitle: Financial Deep-Dive
stat-cards (3-4 big-number cards)
## Slide N — Executive Summary Stats
Layout: stat-cards
Cards:
- label: 2024 营收
value: "3,431.76"
unit: 亿元
- label: 归母净亏损
value: "-494.78"
unit: 亿元
highlight: red
- label: ROE 2024
value: "-21.82"
unit: "%"
highlight: red
- label: 资产负债率
value: "73.66"
unit: "%"
highlight: amber
table (3Y YoY / peer / any matrix)
## Slide N — 3Y Financial Trend
Layout: table
Headers: ["指标", "2022", "2023", "2024", "YoY 24v23"]
Rows:
- ["营收(亿元)", "5,038.4", "4,657.4", "3,431.8", "-26.3%"]
- ["归母净利(亿元)", "226.2", "67.7", "-494.8", "N/M"]
- ["ROE(%)", "9.45", "4.93", "-21.82", "-26.75pp"]
- ["毛利率(%)", "19.55", "15.31", "10.17", "-5.14pp"]
- ["资产负债率(%)", "76.14", "75.29", "73.66", "-1.63pp"]
Note: YoY 计算: 2024 值 - 2023 值
bar-chart / line-chart
## Slide N — Revenue & Profit Trend
Layout: bar-chart
X-axis: ["2022", "2023", "2024"]
Y-series:
- name: 营收(亿元)
values: [5038, 4657, 3432]
color: "C9A84C"
- name: 归母净利(亿元)
values: [226, 68, -495]
color: "D4AF37"
Note: 营收 3 年 -32%,净利 2024 转负
risk-heatmap (3×3 severity × likelihood)
## Slide N — Risk Heatmap
Layout: risk-heatmap
Risks:
- name: 存量减值压力
severity: 高
likelihood: 高
- name: 美元债重组
severity: 高
likelihood: 中
- name: 交付延期
severity: 中
likelihood: 中
- name: 数据口径风险
severity: 中
likelihood: 低
scenario-table (valuation scenarios)
## Slide N — Valuation Scenarios
Layout: scenario-table
Scenarios:
- name: 悲观
assumption: "PE 10x · EPS -4.48 → N/M; 2025 仍巨亏"
target: "2.0 元"
upside: "-49%"
color: red
- name: 基础
assumption: "化债方案落地 + 2025 净利回正"
target: "3.0 元"
upside: "-24%"
color: amber
- name: 乐观
assumption: "政府背书 + OLED 转型兑现(类比 BOE)"
target: "5.5 元"
upside: "+40%"
color: green
callout-box (large verdict stamp)
## Slide N — Credit View
Layout: callout-box
Title: 授信建议
Tags: ["拒绝承做", "Sell", "Target 2-3 元"]
Message: ROE -21.82% + 资产负债率 73.66% + 经营现金流持续失血(估算)+ 2025 多个项目公司贷款逾期 → 当前节点无法给予新增授信。深圳市政府化债方案落地前,仅密切关注,不入授信池。
bullets (fallback, sparingly)
## Slide N — Key Points
Layout: bullets
Points:
- 论点 1 + 数据支撑 (src: ...)
- 论点 2
Deck composition (required structure)
The prompt enforces this structure (12-15 slides typical):
- Cover (1 slide)
- Executive Summary (1 slide,
stat-cardslayout) - Section Divider: Company (1 slide,
divider) - Company Profile (1 slide,
table) - Section Divider: Industry (1 slide,
divider) - Industry Position (1 slide,
bar-chartortablewith peer share) - Section Divider: Financial (1 slide,
divider) - 3Y Trend (1 slide,
table) - Profitability Chart (1 slide,
bar-chartorline-chart) - Section Divider: Valuation & Risk (1 slide,
divider) - Peer Comparison (1 slide,
table) - Valuation Scenarios (1 slide,
scenario-table) - Risk Heatmap (1 slide,
risk-heatmap) - Credit / Investment View (1 slide,
callout-box) - Data Sources (1 slide,
bulletslisting raw-data files)
Agent may merge divider slides into adjacent content when narrative is tight, but target stays 13-15.
Hard constraints
- Every number in outline must already be in analysis.md — the renderer will run
slide_data_auditagainst provenance; numbers not in provenance will fail the gate - Use rounded banker notation for stat cards: "3,431.76 亿元" → display as
"3,432"+ unit"亿"(the underlying analysis.md has the exact value; cards round for visual) - Peer comp numbers stay
[EST]— the table cells for peer rows should include[EST]suffix in value string - Chart Y-series values must be numeric (not strings), color codes 6-char hex without
# - Heatmap severity/likelihood must be one of 高/中/低 — renderer maps to 3×3 grid
Usage
# Pre-flight: analysis.md + data-provenance.md already written by banker-memo-md
ls \x3Cdeliverable>/{analysis.md,data-provenance.md}
# Build + dispatch prompt
python3 scripts/build_pptx_prompt.py \x3Cdeliverable> \x3Cts_code> \x3Cname_cn> \
\x3Cname_en> > /tmp/prompt.md
openclaw agent --agent main --thinking high --json --timeout 600 \
--message "$(cat /tmp/prompt.md)"
# Agent writes slides-outline.md in the deliverable dir
# Render the deck
python3 scripts/build_outline_deck_v2.py \x3Cdeliverable> \x3Cts_code> \x3Cname_cn> \x3Cname_en>
# Validate
python3 \x3Ccn-ci-scripts>/sync_provenance.py \x3Cdeliverable>
python3 \x3Ccn-ci-scripts>/validate-delivery.py --strict-mcp \x3Cdeliverable>
Quality checklist
- slides-outline.md has 12-15 slides
- Contains ≥1 each of:
stat-cards,table,bar-chartorline-chart,risk-heatmap,scenario-table,callout-box - NOT all
bullets(that's the fallback layout — using it for > 2 slides means the prompt failed) - All numbers traceable to provenance (slide_data_audit PASS)
- Compile passes cn_typo_scan
- Rendered .pptx has actual charts (not placeholders) when outline specifies
bar-chart/line-chart
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install banker-slides-pptx - After installation, invoke the skill by name or use
/banker-slides-pptx - Provide required inputs per the skill's parameter spec and get structured output
What is Banker Slides Pptx?
Turn a banker-memo analysis.md + data-provenance.md into an investment-banker-craft .pptx (real tables, bar/line charts, risk heatmap, scenario grid — NOT pa... It is an AI Agent Skill for Claude Code / OpenClaw, with 108 downloads so far.
How do I install Banker Slides Pptx?
Run "/install banker-slides-pptx" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Banker Slides Pptx free?
Yes, Banker Slides Pptx is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Banker Slides Pptx support?
Banker Slides Pptx is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Banker Slides Pptx?
It is built and maintained by jackdark (@jackdark425); the current version is v0.9.7.