| name | prospectus-decoder |
| version | 1.1.1 |
| author | 观星哥(小红书:观星哥 | 微信:guanxingge2025) |
| description | 招股书商业模式解码器。上传IPO招股书PDF,自动生成结构化商业分析报告,支持30秒/3分钟/30分钟三种输出深度。 |
| open_source | true |
| platforms | ["opencode","codex","claude-code","cursor","generic"] |
Skill: 招股书商业模式解码器 (Prospectus Decoder)
核心定位
不是"招股书摘要器"。是"商业模式翻译官"。
招股书会写"提供智能化整体解决方案"。
本 Skill 会告诉你:这是一家卖铲子的设备公司,客户是电池厂,靠卖设备和后续维护赚钱,最大的风险是下游客户扩产放缓。
语言规则
输出语言与用户输入语言一致。 用户用中文提问 → 中文输出;用户用英文提问 → 英文输出。招股书的原始语言可能与输入输出不同(如中文招股书 + 英文提问),这属于正常情况——事实抽取照常进行,推理和报告生成匹配用户语言即可。
V1 设计哲学
不做
- 不建知识图谱(V1 不需要)
- 不积累、不记忆、不学习
- 不让推理模型读原文(只读压缩后的 Master Fact Sheet)
- 不把推理和写作混在一个 Prompt 里
只做
PDF → 事实抽取 → 事实合并 → 商业模式推理 → 报告生成 → 输出 MD
一次性分析流水线。任务结束,中间数据丢弃。
三层 Token 策略
| 层 | 工作 | Token 占比 | 智力 | 处理方式 |
|---|
| Layer 1 | 分块事实抽取 | 90% | 低 | 逐章处理,结构化 JSON |
| Layer 2 | 事实合并去重 | 5% | 中 | 合并去重归类 |
| Layer 3 | 推理 + 报告 | 5% | 高 | 只读 3000-10000 Token 的 Master Fact Sheet |
核心原则:大模型不读原文,只读压缩后的 Fact Sheet。
工作流程
Phase 0:接收输入
触发:@prospectus-decoder [文件路径](如有 --level 1|2|3 参数则直接使用,无需询问)
- 确认文件存在且为 PDF(也支持 .txt/.md 回退)
- 提取文本:
- PDF:
pdftotext -layout "[文件路径]" "[临时目录]/raw.txt"
- 如果 pdftotext 不可用 → 提示
brew install poppler
- 如果 pdftotext 输出为空 → 尝试用 Read 工具直接读 PDF
- 估算 Token 数:字数 × 1.5 ≈ Token 数
- 若用户未指定
--level,必须先询问用户选择报告深度,不得使用默认值:
📄 已加载:[文件名]
📊 规模:约 [X] 字(~[Y] 万 Token)
请选择报告深度:
使用 question 工具提供三个选项:
- Level 1(30秒看懂·约500字):一句话+产品+赚钱逻辑+大白话+行业视角精简版
- Level 2(3分钟看懂·约2500字):完整11模块,每个判断有简要依据(推荐)
- Level 3(30分钟研究版·约8000字):充分展开,含财务趋势、对手对比、Bull/Bear Case
- 用户选择后,确认并告知:
🔧 深度:Level [X] | 开始处理...
-
版本检查(在深度选择之前执行):
a. 读取本地 VERSION 文件获取当前版本号
b. 尝试 webfetch 远程 VERSION:
URL:https://raw.githubusercontent.com/YFzh1995/prospectus-decoder/main/VERSION
设置 timeout: 5 秒
c. 若网络失败/超时/返回异常 → 静默跳过,不弹窗,不输出任何提示,继续步骤 7
d. 若成功且版本号相同 → 静默跳过,继续步骤 7
e. 若成功且远程版本号 > 本地版本号 → 使用 question 工具弹窗:
header: "Skill 版本更新"
question: "检测到新版本 v{远程}(当前 v{本地}),是否更新?"
options:
- "立即更新(推荐)" — 自动 git pull,完成后需重启 opencode
- "跳过,使用旧版继续" — 不中断当前分析
f. 若用户选择"立即更新":
i. 执行:cd ~/.config/opencode/skills/prospectus-decoder && git pull
ii. 输出:✅ 已更新至 v{X.X.X}。请重启 opencode 后重新提交分析请求。
iii. 终止流程,不再继续后续步骤
g. 若用户选择"跳过":继续步骤 7
Phase 1:章节识别与分块
招股书有明确章节标记。按章节切分,不盲切 Token。
核心章节(必须处理):
- 风险因素(Risk Factors)
- 行业概览(Industry Overview)
- 业务 / 主营业务(Business)
- 财务资料 / 财务会计信息(Financial Information)
- 募集资金运用(Use of Proceeds)
- 未来计划与展望(Future Plans)
跳过章节(无商业分析价值):
- 释义 / 定义(Definitions)
- 公司治理(Corporate Governance)
- 法律意见 / 监管文件
执行:
- 扫描文本,找到各章节标题
- 记录每个章节的起止行号
- 为每个核心章节生成一个处理单元
Phase 2:分块事实抽取(Layer 1)
消耗 90% Token,但智力要求最低。
逐章处理。对每个核心章节,按 prompts/extract-facts.md 中的指令抽取结构化事实。
执行步骤:
- 读取
prompts/extract-facts.md 获取抽取指令
- 对每个核心章节:
- 读取该章节文本
- 按指令抽取事实 → 输出 JSON
- 保存到
[临时目录]/facts_[章节名].json
- 记录处理进度
注意:
- 只抽取,不总结,不解释
- 客户名、供应商名完整保留
- 数字精确保留
- 没有信息的字段留空数组
Phase 3:事实合并(Layer 2)
将多个章节的 JSON 合并为一份 Master Fact Sheet。
执行:
- 读取
prompts/merge-facts.md 获取合并指令
- 读取所有
facts_*.json 文件
- 按指令合并、去重、归类
- 输出并保存
[临时目录]/master-fact-sheet.json
合并后预期大小:3000-10000 Token(压缩比约 50:1 到 100:1)
Phase 4:商业模式推理 + 匿名实体识别(Layer 3 - Call 1)
灵魂步骤。只读 Master Fact Sheet,不读原文。
执行:
- 读取
prompts/reason-business.md 获取推理框架
- 读取
master-fact-sheet.json
- 按推理框架完成:
- 商业模式分类(步骤1)
- 客户痛点分析(步骤2)
- 价值创造分析(步骤3)
- 赚钱逻辑分析(步骤4)
- 竞争位置分析(步骤5)
- 风险与机会判断(步骤6)
- 匿名实体识别(步骤7)
- 行业视角与定语剥离(步骤8) ← 新增
- 输出并保存
[临时目录]/business-reasoning.json
匿名实体识别要点:
- 检查 Master Fact Sheet 中
is_anonymized: true 的实体
- 利用模型训练数据知识,将脱敏描述(成立年份、业务范围、上市地等)匹配到已知公司
- 如果推断不确定,使用
webfetch 工具构造搜索查询进行网络交叉验证
- 例如:描述为"成立于2006年的中国私有企业,覆盖消费级无人机",搜索关键词
中国 无人机 2006年 成立 农业 消费级 私有企业
- 访问搜索结果页面,读取关键信息进行验证
confidence: low 的识别结果比强行匹配好——存疑时宁可标注 low
推理观点标注规则:推理过程中可能产生招股书未明确披露的推论(如"960万人次已达产能上限"、"毛利率跌破盈亏线"等重大负面信号)。这些观点不是招股书官方陈述,而是基于披露事实的推理。在 business-reasoning.json 中,对于以下类型的推论,必须在 risks 条目的 rationale 字段中记录推理过程:
- 财务临界点的判断(盈亏平衡线、偿债能力红线等)
- 产能/市场空间上限的判断
- 客户/供应商隐形依赖的推断
- 任何
severity: 高 但招股书正文未直接提及的结论
关键:这一步只输出推理结果,不生成报告正文。推理和写作分离。
Phase 5:报告生成(Layer 3 - Call 2)
基于推理结果生成 Markdown 报告。
执行:
- 读取
prompts/generate-report.md 获取写作指令(包含匿名实体标注规则和信息来源要求)
- 读取
business-reasoning.json
- 读取
templates/report-template.md 获取输出结构
- 注意:对 AI 推断识别的脱敏实体,必须按规则标注(
* / **)
- 注意:报告中出现的重大推理观点(非招股书原文陈述),必须在提出后紧跟一段简要推理过程,并以
> ⚠️ 此观点并非招股书官方披露,而是基于披露事实的推理判断,仅供参考。 标注
- 注意:报告末尾必须包含"信息来源"章节
- 注意:报告必须包含"行业视角"章节,剥离招股书中为美化排名而添加的限定定语
- 根据用户选择的
--level 参数,生成对应深度的报告:
- Level 1(30秒看懂):约 500 字
- Level 2(3分钟看懂):约 2500 字
- Level 3(30分钟研究版):约 8000 字
- 保存到招股书所在目录:
[招股书所在目录]/[公司名称]-[YYYYMMDD]-L[level].md
- 报告末尾强制页脚(Level 1/2/3 均适用,必须原样输出):
*报告由 Prospectus Decoder v[VERSION] 生成 | 深度:Level X | 日期:YYYY-MM-DD*
*Skill 作者:观星哥 | 小红书:观星哥 | 微信:guanxingge2025*
Phase 6:清理与交付
- 清理所有临时 JSON 文件
- 向用户展示报告摘要(前 3 个章节)
- 输出完整文件路径
✅ 分析完成!
📁 报告已保存:[招股书目录]/宁德时代-20260615-L2.md
📊 报告摘要:
> [一句话讲清公司]
> [产品类型] | [客户类型] | [收入模式]
💡 核心发现:
- [关键发现1]
- [关键发现2]
- [关键发现3]
内置知识
商业模式分类
设备商:研发生产销售专业设备。特征:B2B、项目制、高客单价、重售后。
软件商:开发销售软件/SaaS。特征:可复制、边际成本低、订阅或许可。
制造商:标准化生产。特征:规模化、成本竞争、产能驱动。
品牌商:自有品牌面向消费者。特征:渠道+品牌双驱动、C端。
渠道商:分销代理。特征:薄利多销、资金周转。
平台商:撮合交易。特征:双边网络效应、轻资产。
服务商:提供专业服务。特征:人效驱动、项目制。
原材料商:基础材料/零部件。特征:大宗商品属性、价格波动。
金融服务商:金融产品和服务。特征:牌照壁垒、资金驱动。
招股书用语 → 白话翻译
| 招股书用语 | 白话 |
|---|
| 智能化整体解决方案 | 卖设备/软件+附带服务 |
| 一站式综合服务 | 什么都做,但不一定每样都精 |
| 行业领先 | 可能是真的,也可能只是自封的 |
| 协同效应 | 买来的公司和原有业务有关系 |
| 赋能 | 帮客户做事情 |
| 轻资产运营 | 不自己建工厂 |
| 募投项目 | 用 IPO 融来的钱干的事 |
| 生态化布局 | 上下游都想做 |
| 全栈能力 | 从头到尾都能自己做 |
招股书行业排名"定语剥离"指南
招股书行业章节经常通过添加限定词来制造"细分第一"的排名。分析师需要识别并剥离这些修饰性定语,还原公司的真实行业位置。
常见定语手法:
| 招股书表述 | 剥离定语后 |
|---|
| "全国单一主题园区中排名第四" | 全国主题公园排名第X(含连锁品牌如方特、欢乐谷等) |
| "中国XX行业前五大公司中唯一具有XX属性的" | 可能是第五名,用"唯一XX属性"包装 |
| "河南省唯一提供大型实景演出的主题园区" | 河南有实景演出的主题园区可能只有它一家 |
| "XX产品在XX细分品类中排名第一" | 这个"细分品类"可能只有2-3个玩家 |
| "全球最大的XX设备供应商(按出货量计)" | 按收入计可能不是最大;"出货量"可能含低端产品 |
剥离方法:
- 找出排名中的所有限定词(地域、时间、产品类型、统计口径)
- 逐一去掉限定词,问"去掉这个词后排名还成立吗?"
- 如果去掉后排名不确定或大幅下降,说明这个定语是关键修饰
- 在"行业视角"章节中:
- 指明公司使用的定语手法
- 说明去掉定语后的真实竞争格局
- 列出真正同维度的可比公司
调用示例
@prospectus-decoder /path/to/prospectus.pdf
@prospectus-decoder /path/to/prospectus.pdf --level 1
@prospectus-decoder /path/to/prospectus.pdf --level 2
@prospectus-decoder /path/to/prospectus.pdf --level 3
成本参考
以 100 万 Token 招股书为例:
- Phase 2(事实抽取):~30 万 Token → 占 60-70% 成本
- Phase 3(合并):~2 万 Token → 占 5% 成本
- Phase 4(推理):~5000 Token → 占 15% 成本(单价高)
- Phase 5(写作):~3000 Token → 占 10% 成本(单价高)
相比直接丢全文给大模型,节省约 60-80% Token 成本。
铁律
- Phase 2 只抽事实,不总结、不解释
- Phase 4 不读原文,只读 Master Fact Sheet
- Phase 4 和 Phase 5 分离执行(推理 ≠ 写作)
- Phase 6 清理所有中间 JSON
- 最终报告必须独立可读,不依赖原始招股书
安装部署
一键安装(推荐)
curl -fsSL https://raw.githubusercontent.com/YFzh1995/prospectus-decoder/main/install.sh | bash
安装脚本自动检测当前平台(opencode / codex / claude-code / cursor),将 Skill 文件安装到对应目录。
降级安装(手动)
如果一键安装失败或需要离线部署:
- 下载本仓库所有文件
- 根据平台将文件复制到对应目录:
| 平台 | Skills 目录 |
|---|
| opencode | ~/.config/opencode/skills/prospectus-decoder/ |
| codex | ~/.codex/skills/prospectus-decoder/ |
| claude-code | ~/.claude/skills/prospectus-decoder/ |
| cursor | ~/.cursor/skills/prospectus-decoder/ |
| 通用(手动加载) | 任意目录,使用时指定完整路径 |
- 验证安装:在 AI 对话中输入
@prospectus-decoder --version 应显示版本号。
跨平台兼容说明
- 所有 Prompt 文件(
prompts/*.md)使用纯文本,不依赖任何特定框架
- 报告模板(
templates/report-template.md)为标准 Markdown
- PDF 文本提取优先使用
pdftotext(poppler),回退为 PyMuPDF / pdfplumber / Python 内置方案
- 不依赖任何付费 API 或闭源工具链
版本与更新
版本号
当前版本:v1.1.1
版本号格式:v<MAJOR>.<MINOR>.<PATCH>(语义化版本)。
- MAJOR:不兼容的架构变更(如 Prompt 结构重构)
- MINOR:新增功能(如新增推理步骤、新增报告模块)
- PATCH:修复和优化(如 Prompt 措辞修正、模板调整)
更新方式
自动提示:Skill 启动时(Phase 0)会尝试读取远程 VERSION 文件,若有新版本会提示。
手动更新:
cd ~/.config/opencode/skills/prospectus-decoder/
git pull origin main
curl -fsSL https://raw.githubusercontent.com/YFzh1995/prospectus-decoder/main/install.sh | bash
无网络环境:手动下载最新 release 包解压覆盖即可。
版本历史
| 版本 | 日期 | 变更 |
|---|
| v1.1.1 | 2026-06-16 | 交互式版本更新:检测到新版本时弹窗确认,一键 git pull 更新 |
| v1.1.0 | 2026-06-16 | 精简信息来源章节;新增输出防呆规则与自检清单;修正页脚格式 |
| v1.0.0 | 2026-06-16 | 初始发布:三层架构、8步推理、定语剥离、推理观点标注、匿名实体识别 |