olive-holding-lite
- 简介
- 基于六问结构自动生成带隐蔽水印与合规措辞的单产品存续对客报告。
- 触发词
- 存续报告,持仓解读,产品解读,对客一页纸,基金简报
- 分发渠道
- ARK Engine、CRM Claude
- 功能测试
- ✅ 通过 · 业务评审:✅ 通过
- 技能包文件
- olive-holding-lite/SKILL.md、olive-holding-lite/references/benchmark-standards.md、olive-holding-lite/references/fund-data/point72-turion.md、olive-holding-lite/references/report-template.html、olive-holding-lite/references/viz-components.css、olive-holding-lite/scripts/html_to_pdf.py
SKILL.md 全文
Frontmatter
| name | olive-holding-lite |
|---|---|
| description | | |
| metadata | |
| version | "3.2" |
| maintainer | "诺亚HK AI+财富管理部" |
| governance | "NOAH-CHAIR-2026-001 品牌治理框架" |
诺亚二级市场单产品存续解读 · 对客精简版
为持仓客户生成单个产品的存续解读报告。定位是持续监测与主动告知的客观记录,不是销售材料。核心理念:让客户感受到有人在持续深度跟踪她的每一个持仓。
---
强制交付规范(v3.2 · 隐蔽溯源水印与集团号尊称,最高优先级,不可省略)
任何对客 PDF/HTML 交付物,生成前必须落实以下两条;未落实不得交付。
A · 隐蔽溯源水印(每页必带,用于防转发追溯)
水印目的不是视觉声明,而是防止客户转发后无法溯源。要求肉眼几乎不可见、全页密铺,并且嵌入该客户的集团号(或客户唯一标识)。材料被转发、打印或截屏外流后,可凭水印标识定位到具体客户。
生成步骤:
1. 取客户真实集团号(来自客户存续报告或 CRM)。无集团号时使用账户号或其他客户唯一标识;仍缺失则使用占位 GN-XXXXXX,并在交付说明中提示「发送前务必替换为真实集团号」。
2. 用下面的 Python 片段生成含集团号的 base64 SVG。fill-opacity 建议保持 0.03–0.04,字号 11–12,并使用密铺:
import base64GN = "GN-XXXXXX" # 替换为真实集团号或客户唯一标识 svg = ("<svg xmlns='http://www.w3.org/2000/svg' width='230' height='150'>" f"<text x='10' y='95' font-family='Noto Sans CJK SC, PingFang SC, sans-serif' " "font-size='11' fill='#333c46' fill-opacity='0.035' font-weight='400' " f"transform='rotate(-30 115 75)'>诺亚 · {GN} · 仅供本人参考</text></svg>") print(base64.b64encode(svg.encode("utf-8")).decode())
3. 将生成结果替换 references/report-template.html 中的 {{WATERMARK_SVG_BASE64}}。模板已在 <body> 后预置 <div class="noah-wm"></div>,不得删除。
4. 确认水印 CSS 保持以下关键属性:
.noah-wm { position:fixed; top:0; left:0; width:100%; height:100%; z-index:9999; pointer-events:none;
background-image:url("data:image/svg+xml;base64,{{WATERMARK_SVG_BASE64}}");
background-repeat:repeat; }
position:fixed 使水印在 weasyprint 下自动出现在每一页。透明度应几乎不可见,但打印或截屏后仍可辨认集团号。水印集团号必须与抬头一致。不要用 linear-gradient 制作水印或 .hl 高亮,以免 weasyprint 渲染成穿字横线。
B · 对客户使用集团号尊称
- 抬头问候固定格式:
尊敬的客户(集团号:XXX) 您好 感谢您对诺亚的长期信任,其中 XXX 为真实集团号。 - 已知客户姓氏时,可用
尊敬的[姓][先生/女士](集团号:XXX)。 - 正文全程使用第二人称「您」,不用「你」;禁止仅用「客户」「持有人」等无尊称、无标识的称呼。
- 抬头集团号必须与水印中的集团号一致,两处使用同一数据源。
- 落款前可附一句致谢或问候,保持专业、克制。
---
工作流(五步,按顺序执行)
Step 1 · 收集输入
必需(缺失则询问用户):
- 客户称谓、集团号/账户号
- 产品名称
- 客户层数据来源:客户存续报告PDF(用户上传)或 CRM/存续系统
集团号用于抬头尊称与水印溯源,属于必需输入。
Step 2 · 三层取数
| 层级 | 来源 | 取什么 |
|------|------|--------|
| 客户层 | 存续报告PDF(pdftotext提取)或CRM | 投入/回款/估值/浮盈亏/份额批次;同时提取持仓总览页:总资产、各类别资产分布(问题一必需) |
| 基金层 | Olive/Gopher MCP:mcp_search(产品名) → get_disclosure_monthly_report(contract_id) → analyze_material_pdf(最新季报URL);如有投资人沟通会纪要一并解析 | 业绩序列、归因、持仓结构、管理人评论、清算/重大事件 |
| 市场层 | Web搜索 | 报告期主要指数表现(恒指/恒生科技/沪深300/MSCI China等),用于市场坐标 |
美元PE产品用美国存续MCP(search → master_fund_overview);国内产品用国内产品MCP(fuzzy_query_domestic_project → query_pe_report)。
Step 3 · 生成HTML
使用 references/report-template.html(手机优先排版,已含全部CSS和水印层),替换其中数据与 {{WATERMARK_SVG_BASE64}}。落实上文「强制交付规范」的隐蔽溯源水印(含集团号)与集团号尊称。结构规范见下节。
Step 4 · 转PDF(默认交付格式)
运行 scripts/html_to_pdf.py(weasyprint,手机竖屏比例110mm×233mm,含分页保护规则)。生成后用pdftoppm转图逐页目检:表格不断裂、中文渲染正常,且水印在每页存在、含正确集团号、透明度不干扰阅读。
如用户要长图:脚本内有长图模式(单页1500mm渲染后裁白边,输出1080px宽JPG)。
Step 5 · 交付
present_files交付PDF,用3句话说明:核心结论、主要风险信号、下次更新节点。若使用了占位集团号,必须提示发送前替换。
---
报告结构 v3 · 按客户会问的问题组织(不按分析维度组织)
客户看单产品报告时只关心六件事。章节即这六个问题,顺序固定。
头部 品牌条 + 产品名 + 集团号尊称/账户/批次 + 报告日期 + 官方净值截止日(两个日期都写明) 横幅 「诺亚建议」:一句话结论(≤40 字)+ 依据 2 行以内 风险条 5–6 格速览一 最新进展 这一期发生了什么。净值日后的重大事件(上市/并购/清算/暂停申赎)优先写在最前 二 和前几期比,变了什么 季度或年度序列 + 变化点归纳。【.spark 必用】 三 底层亮点与需关注 只列 3–5 个项目,分「✦ 亮点」「⚠ 需关注」两栏。【.dual 或 .frow 必用】 四 还能拿回多少 已落袋 vs 剩余账面 + 可预期回款的来源。【.stack 必用】 开放式产品改为「能变现多少 + 什么时候能动」 五 退出进展 关键节点时间轴 + 期限进度。【.vtl + .prog 必用】 六 我们的判断 单个 .view 块,判断 + 依据 + 反面情形。全篇唯一的主观章节
落款 本报告由诺亚HK AI+财富管理部和CIO办公室编制 · [日期] · 香港 页脚 压缩为三行:数据来源(三层)/ 本期未取得的数据 / 免责声明
篇幅硬约束(对客版):
- 正文去标签字数 ≤ 3,500 字(这是真约束)。110mm×233mm 手机竖屏下对应 PDF 约 5–7 页,页数本身不设硬上限
- 每章
.fact≤ 1 块、正文<p>≤ 2 个 - 第一至第五章只放事实,不放判断;所有主观内容集中到第六章
- 同代 vintage 分位、管理人尽调、基准方法论等分析性内容不进对客版,需要时另出 RM 备查版
取数与合规不变:Step 2 的四路/三层取数、数据零差错清单、市价情景测算规则、数据缺口必须显式反馈——全部照旧执行,只是呈现更短。 ---
数据与措辞规则
1. 数据分层标注:每个数据点标注 客户层 / 基金层 / 推断/估算,页脚注明"最终以基金管理方官方对账单为准"。
2. 事实与判断分开:见「写作规范 v2」——用 .fact / .view 两个容器强制分离,不靠行文自觉。判断必须给依据与反面情形。
3. 单位一致:同一数值全篇同一单位量级(亿/Billion不混用),生成后逐一核对金额。
4. 不写费率:管理费/运营费/业绩报酬等费率信息不写入报告。
5. 禁止表述:"不销售基金"、"不收取返佣"、"独立于基金管理方"、"风险可控"、"绝对安全/保本"。
6. 口吻:面向客户用"您";对客户关注点的概括用中性表述("客户一般最关心"),不替客户宣称"您最关心"。
7. 标识一致:抬头集团号、水印集团号与客户数据源中的集团号必须一致。
---
手机排版基准(已内置于模板)
正文16px/行高1.75,章节标题20px,关键数字21px,建议横幅19px;单栏堆叠;时间轴竖排;viewport全面屏适配。PDF页面110mm×233mm,表格/KPI卡/时间轴 break-inside: avoid。
---
---
写作规范 v2 · 客观陈述与主观建议分离(本版核心改动)
每个章节内部固定两块,不可混写。
| 块 | 容器 | 放什么 | 语言要求 |
|---|---|---|---|
| 事实 | <div class="fact"><div class="bt">事实</div>… | 可从存续报告 / 公开来源逐条验证的数据与事件 | 中性动词、数字先行、不带评价词、注明来源与截止日 |
| 诺亚观点 | <div class="view"><div class="bt">诺亚观点</div>… | 我方判断、建议、归因推断、情景测算的解读 | 以「我们的判断是」起句;末尾用 <div class="ct"> 写明反面情形 |
规则: 1. 事实块禁用评价词——可惜、不错、漂亮、令人担忧、遗憾、值得欣慰、惊人、优异、糟糕、精彩、失手。出现即改写为中性陈述。 例外:「亮点」作为 v3 第三章的结构标签(「底层亮点与需关注」「✦ 亮点」)允许使用,正文行文中仍禁用。 2. 观点块必须自带反面情形,无反面情形的判断不得写入。 3. 一个章节可以只有事实块(数据章节),但凡出现判断、建议、归因推断,必须移入观点块。 4. 事实与观点不得出现在同一段落内。
---
去 AI 腔黑名单(生成后逐条 grep 检查)
禁止使用:
- 破折号转折长句:「——这正是…的原因」「——不是…而是…」「——也就是说」
- 引导语:「值得注意的是」「需要坦率说明」「必须说清楚」「坦率地说」「这解释了一个看似矛盾的现象」「一个反直觉但重要的事实」「真正的看点是」「真正的亮点是」
- 排比铺陈:「其一…其二…其三」「三个原因:」「有三点:」
- 修辞式小标题:「怎么读」「什么意思」「为什么会这样」「发生了什么」
- 情绪副词:真正、恰恰、其实、终于、竟然、显然、务必、切记
- 拟人化叙事:「这只基金的故事」「这笔钱的旅程」「答卷」
必须满足:
- 单句 ≤ 40 字;单段 ≤ 3 句;每章节正文
<p>总数 ≤ 4 个 - 主语明确,不用省略主语的长链条
- 同一事实全篇只陈述一次,不在多处复述
- 能用组件表达的,一律不写成段落(见下节)
---
可视化强制清单(能画就不写)
下列内容必须用组件呈现,不得以段落文字替代。组件 CSS 见 references/viz-components.css,整段内联进报告 <style>。
| 内容 | 组件 | class |
|---|---|---|
| TVPI = DPI + RVPI 分解 / 投入-回款-估值构成 | 堆叠分解条 | .stack |
| 同代 vintage 分位定位 / 相对基准位置 | 分位刻度尺 | .scale |
| 子基金或项目的「成本占比 vs 价值占比」 | 双轴对比条 | .dual |
| 项目退出状态(完全 / 部分 / 未退出) | 分段状态条 | .seg3 |
| 季度或年度序列(估值倍数、净值、收益率) | 柱状 sparkline | .spark |
| 市价情景测算(官方值 → 情景区间) | 区间条 | .range |
| 收益归因(基准 + 超额 = 结果;分月贡献) | 瀑布条 | .wf |
| 净值截止日与报告日的时间差 | 时效条 | .stale |
| 基金期限已过 / 剩余 | 进度条 | .prog |
| 组合占比、账户内权重 | 双轴对比条 或 KPI 卡 | .dual / .kv |
| 三项以内的并列事实 | 紧凑事实行 | .frow |
判定标准: 任何含有两个及以上可比数值的表述,都应先考虑组件;只有纯定性说明(如管理人治理情况、合同条款)才允许用段落。
---
高亮规范
用 <span class="hl"> 对关键子句做标记笔高亮——不是整句、不是整段、不是单个数字。
.hl中性关键信息 ·.hl.g正面 ·.hl.r需要警觉- 每个章节 ≤ 5 处,超出即失去标记意义
- 事实块与观点块都可用;
.dec-main深色横幅内不用(对比度不足)
参考文件
references/ ├── report-template.html 定版模板(手机优先,含全部CSS与完整示例) ├── benchmark-standards.md 各策略类型的基准对比标准 └── fund-data/ 单基金参考数据(如有则用,无则走MCP+公开信息) └── viz-components.css 可视化组件库 v2(事实/观点容器、9 种图形组件、高亮) scripts/ └── html_to_pdf.py HTML→PDF/长图转换脚本(weasyprint)
---
生成前自查
- [ ] v3.2:水印层
.noah-wm已保留,{{WATERMARK_SVG_BASE64}}已替换;PDF 每页均有水印,含正确集团号,透明度不遮挡阅读 - [ ] v3.2:抬头使用「尊敬的客户(集团号:XXX)」或带姓氏的同等格式;抬头集团号与水印一致,正文全程使用「您」
- [ ] 「诺亚建议」横幅在最前,四部分标签为 一/二/三/四
- [ ] 每部分标题下有一句话答案
- [ ] 第一部分有组合占比与角色(来自存续报告持仓总览或CRM)
- [ ] 第三部分用
.wf瀑布条做正负贡献拆解 + 一句话归因,非持仓罗列 - [ ] 第四部分事实与判断分开,行动项有时点
- [ ] 数据全部标注层级;金额单位一致;无费率行;无禁止表述
- [ ] 落款为「诺亚HK AI+财富管理部和CIO办公室编制 · 日期 · 香港」
- [ ] PDF逐页目检通过(表格不断裂、字体正常)
- [ ] v2:每章节事实与观点已分入
.fact/.view,观点块均带反面情形 - [ ] v2:去 AI 腔黑名单逐条 grep 为 0 命中
- [ ] v2:可视化强制清单逐项落地,正文
<p>每章 ≤ 4 个、单句 ≤ 40 字 - [ ] v2:
.hl高亮每章 ≤ 5 处 - [ ] v3:六章顺序为 最新进展/变化/底层/回款/退出/判断,前五章无主观内容
- [ ] v3:正文去标签 ≤ 3,500 字、每章
<p>≤ 2 个(页数不设硬上限)
---
附:RM 备查版结构(v2,深度版)
对客版按 v3 六问组织。若 RM 需要完整分析底稿(同代分位、子基金全表、管理人尽调、基准方法论),可另出深度版,结构为:
头部 品牌条 + 产品名 + 客户/账户/报告日期/净值截止日
说明句固定为:「本报告围绕客户一般最关心的四个方面展开」
横幅 「诺亚建议」深色横幅:一句话结论 + 2-3行核心依据(结论先行,客户第一眼看到答案)
风险条 5格风险速览(程度:高/中/低 + 趋势)
一 该基金在您组合中的位置 [持仓KPI卡 + 组合角色 + 占总资产比例 + 契合度结论]
二 与市场相比的表现 [业绩对比表(标注数据口径) + 市场坐标 + 矛盾数字解释]
三 近期涨跌归因 [.wf 瀑布条正负贡献拆解 + 管理人动作解读 + 一句话归因]
四 接下来如何行动 [时间轴(如适用) + .fact/.view 分块 + 行动事项表(事项/时点/动作)]
落款 本报告由诺亚HK AI+财富管理部和CIO办公室编制 · [日期] · 香港
页脚 三层数据来源说明 + 免责声明
深度版不对客交付,仅供 RM 准备会面使用。