关于 fsi-strip-profile
fsi-strip-profile 是用于制作公司 PowerPoint 概览页的技能,面向准备投行风格演示文稿的分析师。它规范研究、密集版式设计,以及逐页创建和视觉检查流程。
主要功能
- 01先确认页数与重点再开展研究
- 02收集公司、财务、估值和持股数据
- 03规划象限式高密度 PowerPoint 版式
- 04逐页创建并检查幻灯片图像
- 05获得用户批准后再制作下一页
适用场景
- 01准备高管公司概览
- 02制作 3–4 页公司演示文稿
- 03检查幻灯片渲染中的布局问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ w95/ awesome-claude-corporate-skills --skill fsi-strip-profile安装后在 Claude Code 中输入/fsi-strip-profile确认已加载。
详细介绍
工作流
1. 明确需求
- 询问用户:单页幻灯片还是多页幻灯片(3-4 页)?
- 询问用户:是否有需要特别强调的重点领域或主题?
- 仅在用户确认后,再开始调研
2. 调研与规划
数据来源:
- 主要来源:公司文件(BamSEC、SEC EDGAR - "Item 1. Business"、MD&A)、投资者演示材料、公司网站
- 市场数据:Bloomberg、FactSet、CapIQ(股价、股本、市值、净债务、EV、股权结构)
- 预测数据:FactSet/CapIQ 对未来十二个月(NTM)收入、EBITDA、EPS 的一致预期
- 新闻:过去 90 天的新闻稿、并购活动、业绩指引变化
所需指标:
- 财务数据:±3 年的收入、EBITDA、利润率(%)、EPS、FCF
- 估值:市值、EV、EV/收入、EV/EBITDA、P/E 倍数
- 增长:同比增长率(%)
- 股权结构:前 5 大股东及其持股比例(%)
- 业务分部:产品结构和/或地区结构(% 明细)
标准化:
- 将所有金额换算为统一货币
- 统一计量单位(全程使用 $mm 或 $bn,不要混用)
构建之前:
- 在对话中打印大纲,每项包含 4-5 个要点(使用实际数字,不要占位符)
- 打印风格选择:字体、颜色(十六进制代码)、每个数据集的图表类型
- 与用户对齐:"这个大纲和视觉策略是否符合你的设想?"
3. 逐页创建幻灯片
关键:你必须一次只创建一页幻灯片,并在继续下一页之前获得用户批准。
对于每一页幻灯片:
- 使用 PptxGenJS 仅创建这一页幻灯片
- 强制要求:转换为图片以供审阅 - 你必须将幻灯片转换为图片,以便进行视觉验证:
soffice --headless --convert-to pdf presentation.pptx pdftoppm -jpeg -r 150 -f 1 -l 1 presentation.pdf slide - 强制视觉审阅:在继续之前,你必须仔细检查渲染后的幻灯片图片:
- 文本重叠检查:扫描每个文本元素 - 是否有任何标签、要点或标题相互碰撞?
- 文本截断检查:是否有任何文本在边界处被截断?所有文字是否完全可见?
- 图表边界检查:图表是否保持在其容器内?所有坐标轴标签是否完全可见?
- 象限完整性:一个象限中的内容是否会溢出到相邻象限?
- 如果检测到任何重叠或截断:立即按以下顺序使用这些策略修复:
- 首先:减小字号(下调 1-2pt)
- 其次:缩短文本(缩写、删除较不重要的信息)
- 第三:调整元素位置或容器尺寸
- 重新渲染并再次验证 - 在所有文本都干净适配之前,不要继续
- 向用户展示幻灯片图片及下载链接
- 停止并等待用户明确批准,然后再创建下一页幻灯片。在用户确认之前不要继续。
你必须在每一页上检查以下具体问题:
- 表格行与下方文本碰撞
- 图表 x 轴标签在底部被截断
- 长要点换行后侵入相邻内容
- 象限内容溢出到相邻象限
- 标题文本与下方内容重叠
- 图例文本与图表元素重叠
- 页脚/来源文本与主要内容碰撞
幻灯片格式要求
信息密度至关重要
首要目标是信息密度最大化。 忙碌的高管应能在 30 秒内了解整个公司概况。把每个象限都填满。
每个象限的目标:
- 公司概览:至少 6-8 条要点(总部、成立时间、员工数、CEO/CFO、市值、股票代码、行业、关键数据)
- 业务与定位:6-8 条要点(收入驱动因素、产品、市场份额 %、竞争护城河、客户数量、地域构成)
- 关键财务数据:8-10 行的表格或图表 + 4-5 项关键指标(收入、EBITDA、利润率、EPS、FCF、增长率、估值倍数)
- 第四象限:5-7 条要点(持股比例 %、近期并购、进展、催化剂)
信息打包技巧:
- 合并相关事实:"总部:德克萨斯州奥斯汀;成立:2003 年;14 万名员工"
- 始终包含数字:"500 亿美元收入",而不是"收入很高"
- 添加上下文:"EBITDA 利润率:25%(对比行业平均 18%)"
- 包含同比变化:"收入:1.25 亿美元(同比 +28%)"
- 使用百分比:"企业业务:占收入的 62%"
如果某个象限看起来内容稀疏,就补充更多:
- 带 % 的业务分部拆分
- 地域收入拆分
- 客户集中度(前 10 大客户 = X%)
- 近期合同中标及金额
- 业绩指引 vs. 市场预期
- 内部人持股 %
行间距 - 每个部分只用一个文本框:
def add_section(slide, x, y, w, header_text, bullets, header_size=10, bullet_size=8):
"""Header + bullets in single textbox with natural spacing"""
tb = slide.shapes.add_textbox(x, y, w, Inches(len(bullets) * 0.18 + 0.3))
tf = tb.text_frame
tf.word_wrap = True
# Header paragraph
p = tf.paragraphs[0]
p.text = header_text
p.font.bold = True
p.font.size = Pt(header_size)
p.font.color.rgb = RGBColor(0, 51, 102)
p.space_after = Pt(6) # Small gap after header
# Bullet paragraphs
for bullet in bullets:
p = tf.add_paragraph()
p.text = bullet
p.font.size = Pt(bullet_size)
p.space_after = Pt(3)
return tb
关键间距原则:
- 将标题 + 要点放在同一个文本框中(不要单独的标题文本框)
- 在标题后使用
space_after = Pt(6),要点之间使用Pt(3) - 不要硬编码间距 - 让段落间距自然处理
- 如果内容溢出,将字号减小 1pt,而不是删除内容
-
3-4 张高密度幻灯片 - 使用象限、分栏、表格、图表
-
所有正文都用要点 - 绝不用段落。每个部分只用一个文本框,包含所有要点 - 不要为每个要点单独创建文本框。使用 PptxGenJS 的要点格式:
// CORRECT: Single textbox with bullet list - each array item becomes a bullet // Position in top-left quadrant (Company Overview) - after header with accent bar slide.addText( [ { text: 'Headquarters: Austin, Texas; Founded 2003', options: { bullet: { indent: 10 }, breakLine: true } }, { text: 'Employees: 140,000+ globally across 6 continents', options: { bullet: { indent: 10 }, breakLine: true } }, { text: 'CEO: Elon Musk; CFO: Vaibhav Taneja', options: { bullet: { indent: 10 }, breakLine: true } }, { text: 'Market Cap: $850B (#6 globally by market cap)', options: { bullet: { indent: 10 }, breakLine: true } }, { text: 'Segments: Automotive (85%), Energy (10%), Services (5%)', options: { bullet: { indent: 10 } } } ], { x: 0.45, y: 0.95, w: 4.5, h: 2.6, fontSize: 11, fontFace: 'Arial', valign: 'top', paraSpaceAfter: 6 } ); // WRONG: Multiple separate textboxes for each bullet - causes alignment issues // slide.addText('Headquarters: Austin', { x: 0.5, y: 1.0, bullet: true });要点格式技巧:
bullet: { indent: 10 }- 控制要点缩进(越小越紧凑)paraSpaceAfter: 6- 每个段落后的间距,单位为点- 将多个相关事实打包进每条要点(例如:"总部:奥斯汀;成立:2003 年")
- 包含具体数字和百分比以提升信息密度
-
标题使用标题式大小写(不用全大写),左对齐
-
包括表格在内,所有位置都使用一致的字体
-
公司的品牌色 - 创建幻灯片前,你必须通过网页搜索调研实际的品牌色。不要猜测或假设颜色。
-
如提供品牌规范,请遵循
视觉参考
参见 examples/Nike_Strip_Profile_Example.pptx 获取布局灵感。根据每家公司的品牌调整颜色。
首页布局
必须通过忙碌高管的"30 秒理解测试"。
幻灯片设置(关键)
使用 4:3 宽高比(标准投行 pitch book 格式):
const pptx = new pptxgen();
pptx.layout = 'LAYOUT_4x3'; // 10" wide × 7.5" tall - MUST USE THIS
幻灯片坐标系
PptxGenJS 使用英寸。4:3 幻灯片 = 10" 宽 × 7.5" 高。
- x:距左边缘的水平位置(0 = 左,10 = 右)
- y:距上边缘的垂直位置(0 = 上,7.5 = 下)
- 内容必须保持在边界内 - 四边各留 0.3" 边距
首页定位(单位:英寸)
┌─────────────────────────────────────────────────────────────────┐
│ y=0.2 Title: Company Name (Ticker) │
├────────────────────────────┬────────────────────────────────────┤
│ y=0.6 Company Overview │ y=0.6 Business & Positioning │
│ x=0.3, w=4.7 │ x=5.0, w=4.7 │
│ h=3.0 │ h=3.0 │
├────────────────────────────┼────────────────────────────────────┤
│ y=3.7 Key Financials │ y=3.7 Stock/Recent Developments │
│ x=0.3, w=4.7 │ x=5.0, w=4.7 │
│ h=3.5 │ h=3.5 │
└────────────────────────────┴────────────────────────────────────┘
y=7.5
标题区域(y=0.2)
公司名称(股票代码) - 示例:Tesla, Inc. (TSLA)
slide.addText('Tesla, Inc. (TSLA)', { x: 0.3, y: 0.2, w: 9.4, h: 0.35, fontSize: 18, bold: true });
4 象限布局(y=0.6 到 y=7.2)
| 象限 | 位置 | 内容 |
|---|---|---|
| 1 | x=0.3, y=0.6, w=4.7, h=3.0 | 公司概览:总部、成立时间、关键数据、业务摘要(4-5 条要点) |
| 2 | x=5.0, y=0.6, w=4.7, h=3.0 | 业务与定位:收入驱动因素、产品/服务、竞争地位、增长驱动因素(4-5 条要点) |
| 3 | x=0.3, y=3.7, w=4.7, h=3.5 | 关键财务数据:收入、EBITDA、利润率、EPS、FCF + 估值(市值、企业价值、倍数)— 表格或图表,二选一 |
| 4 | x=5.0, y=3.7, w=4.7, h=3.5 | 上市公司:1 年股价图表 + 主要股东。非上市公司:近期进展或所有权/并购历史 |
字号 - 严格使用以下值
| 元素 | 大小 | 备注 |
|---|---|---|
| 幻灯片标题 | 24pt | 粗体,公司品牌色 |
| 象限标题 | 14pt | 粗体,带强调色条 |
| 正文/项目符号文本 | 11pt | 常规字重 |
| 表格文本 | 10pt | 密集表格使用 9pt |
| 图表标签 | 9pt | 保持标签简短 |
| 来源/页脚 | 8pt | 幻灯片底部 |
关键:如果文本溢出,将字号减小 1pt 并重新渲染。
视觉强调(必需)
每个象限标题左侧必须有彩色强调色条:
// Add accent bar for quadrant header
slide.addShape(pptx.shapes.RECTANGLE, {
x: 0.3, y: 0.6, w: 0.08, h: 0.25,
fill: { color: 'E31937' } // Use company brand color
});
slide.addText('Company Overview', {
x: 0.45, y: 0.6, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'
});
需包含的视觉元素:
- 所有章节标题旁加强调色条(品牌色)
- 上、下象限之间加细水平分隔线
- 如有公司 logo,放在右上角
- 表格中加细微网格线(浅灰 #CCCCCC)
首页格式
- 字体:Arial(或按用户/品牌指南指定)
- 象限标题:Title Case(不是全大写),例如 "Company Overview" 而不是 "COMPANY OVERVIEW"
- 项目符号:开头加粗关键术语,例如 "Market Position: Leading global manufacturer..."
- 仅限白色背景 - 无方框、填充或阴影
- 章节标题:粗体文本,样式遵循品牌指南
- 所有象限大小相等且对齐
后续页面:自由式布局
- 双栏(40/60 或 50/50)、全页图表或侧边栏布局
- 每页详细展开首页内容
- 保持字体和配色方案一致
- 建议流程:产品/市场 → 财务分析 → 领导层
图表(多页档案)
多页档案:包含 2-3 个实际 PptxGenJS 图表。切勿使用占位 div 或静态图片。
单页档案:财务数据使用表格(更省空间)。仅当图表能替代表格时才添加图表,而非作为表格的附加。
| 数据类型 | 图表类型 |
|---|---|
| 收入趋势 | 折线图或柱状图(多年) |
| 地理分布 | 水平条形图 |
| 产品组合 | 饼图(带百分比) |
| 财务对比 | 柱状图 |
| 股价(1 年每日) | 折线图 |
图表代码示例
水平条形图(适合 4:3 幻灯片右下象限):
slide.addChart(pptx.charts.BAR, [{
name: 'FY2024 Revenue by Region',
labels: ['North America', 'EMEA', 'China', 'APLA'],
values: [21.4, 13.6, 7.6, 6.7]
}], {
x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)
barDir: 'bar', chartColors: ['FF6B35'], showValue: true,
dataLabelFontSize: 10, catAxisLabelFontSize: 10, valAxisLabelFontSize: 10,
dataLabelFormatCode: '$#,##0.0B',
title: 'Revenue by Geography', titleFontSize: 12, titleBold: true
});
饼图(适合 4:3 幻灯片右下象限):
slide.addChart(pptx.charts.PIE, [{
name: 'Product Mix',
labels: ['Footwear', 'Apparel', 'Equipment'],
values: [68, 29, 3]
}], {
x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)
showPercent: true, showLegend: true, legendPos: 'r',
dataLabelFontSize: 10, legendFontSize: 10,
chartColors: ['FF6B35', '2C2C2C', '4A4A4A'],
title: 'Revenue Mix FY24', titleFontSize: 12, titleBold: true
});
折线图(后续幻灯片全宽):
slide.addChart(pptx.charts.LINE, [{
name: 'Revenue ($B)',
labels: ['FY21', 'FY22', 'FY23', 'FY24', 'FY25E'],
values: [44.5, 46.7, 48.5, 51.4, 54.2]
}], {
x: 0.3, y: 1.2, w: 9.4, h: 5.5, // Full width for 4:3 slide
chartColors: ['FF6B35'], showValue: true, lineSmooth: true,
dataLabelFontSize: 11, catAxisLabelFontSize: 11, valAxisLabelFontSize: 11,
title: 'Revenue Trend & Forecast', titleFontSize: 14, titleBold: true
});
财务数据格式
始终使用原生 PptxGenJS 表格或图表 - 切勿使用纯文本叙述或 HTML 表格。
财务数据使用 slide.addTable()(适合 4:3 幻灯片左下象限):
// Add header with accent bar first
slide.addShape(pptx.shapes.RECTANGLE, {
x: 0.3, y: 3.7, w: 0.08, h: 0.25, fill: { color: 'E31937' }
});
slide.addText('Key Financials & Valuation', {
x: 0.45, y: 3.7, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'
});
// Financial data table
slide.addTable([
[{ text: 'Metric', options: { bold: true, fill: '003366', color: 'FFFFFF' } },
{ text: 'FY24', options: { bold: true, fill: '003366', color: 'FFFFFF' } },
{ text: 'FY25E', options: { bold: true, fill: '003366', color: 'FFFFFF' } }],
['Revenue', '$51.4B', '$54.2B'],
['YoY Growth', '+6.0%', '+5.5%'],
['EBITDA', '$8.9B', '$9.5B'],
['EBITDA Margin', '17.3%', '17.5%'],
['EPS', '$3.42', '$3.75'],
['Market Cap', '$185B', '—'],
['EV/EBITDA', '12.5x', '11.7x']
], {
x: 0.45, y: 4.1, w: 4.3, h: 3.0, // Below header in bottom-left quadrant
fontFace: 'Arial', fontSize: 10,
border: { pt: 0.5, color: 'CCCCCC' },
valign: 'middle',
colW: [1.8, 1.25, 1.25] // Column widths
});
❌ 不正确: 纯文本,如 Note: FY2024 revenue growth +1.0%, Net Income $5.1B...
❌ 不正确: 无法正确转换为 PowerPoint 的 HTML 表格
预测时,使用结构化表格中的 Bear/Base/Bull 情景。
质量检查清单
首页
- 标题区包含公司名称、股票代码、行业
- 标题下方恰好 4 个相等象限
- 全部为项目符号,无段落,每项最多 1 行
- 财务数据放在表格或图表中(不是两者都有)
所有幻灯片
- 无文本溢出或截断
- 全文字体和颜色一致
- 图表正确渲染
- 无占位文本 - 全部为实际数据
- 比例一致($mm 或 $bn,不混用)
- 注明来源
- 投资银行级质量(GS/MS/JPM 标准)
注意: PowerPoint 文件创建请参考 PPTX skill。