mcpField
F
funding-digest

funding-digest

github.com/anthropics文档处理40.9k1.7k 次安装今天更新
代码仓库

关于 funding-digest

funding-digest 是制作单页 PowerPoint 融资简报的 Skill,使用 S&P Global Capital IQ 数据汇总指定行业或公司的近期融资。它指导实体校验、交易分析和要点提炼,并为交易提供 Capital IQ 链接。

主要功能

  1. 01使用 Capital IQ 查询融资轮次
  2. 02校验公司与标识符
  3. 03分析交易和估值
  4. 04筛选趋势与核心要点
  5. 05生成单页 PowerPoint 简报

适用场景

  1. 01制作每周行业融资回顾
  2. 02跟踪指定公司的近期融资
  3. 03总结重要交易与估值变化

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/anthropics/financial-services --skill funding-digest

安装后在 Claude Code 中输入/funding-digest确认已加载。

附带文件LICENSEreferences/sector-seeds.md

详细介绍

AI 免责声明(强制): 你必须在 PowerPoint 页脚中包含以下免责声明文字。这不是可选项——没有它报告就不完整:

"分析由 AI 生成——请确认所有输出"

页脚——在生成的幻灯片底部,以醒目的黄色横幅显示:"分析由 AI 生成——请确认所有输出"


每周交易流摘要

使用 S&P Global Capital IQ 数据,生成一份分析师质量的单页 PowerPoint,总结所关注行业或公司近期融资轮次的关键要点。每笔交易都链接回其 Capital IQ 档案,以便快速深入查看。

何时使用

在以下任一模式触发时使用:

  • "给我一份本周的交易流摘要"
  • "[行业] 的每周融资回顾"
  • "[行业/公司] 最近完成了哪些交易?"
  • "交易汇总"或"交易综述"
  • "我的覆盖范围资本市场更新"
  • "总结近期融资活动"
  • 任何关于交易、融资或轮次的定期简报请求

嵌套技能

此技能生成一份单页 PPTX 简报:

  • 在生成 PowerPoint 之前,阅读 /mnt/skills/public/pptx/SKILL.md(以及其子参考 pptxgenjs.md,用于从头创建)

实体解析与工具稳健性

S&P Global 的标识符系统将公司名称解析为法律实体。这对大多数公司有效,但存在已知的失败模式,会导致空结果。在整个工作流中应用这些规则,以避免静默数据丢失。

规则 0:在查询融资之前预先验证所有标识符

在调用任何融资工具之前,通过 get_info_from_identifiers 运行每个标识符。这是尽早发现问题的最廉价且最可靠的方法。检查响应中的两件事:

  1. 它是否成功解析? 如果标识符返回空/错误,则该名称在 S&P Global 中不存在。尝试使用 references/sector-seeds.md 中的别名、法律实体名称或直接使用 company_id。
  2. status 字段是什么?
    • "Operating" → 可以安全地查询融资轮次。
    • "Operating Subsidiary" → 公司存在但由母公司拥有。它将返回零个融资轮次。在摘要中将其作为背景注明(例如,"被 [Parent] 收购"),但不要查询融资。
    • 任何其他状态(例如,已关闭、非活跃)→ 公司不再运营。可能存在历史数据,但不会有新活动。

这一个预先验证步骤可以防止大多数空结果问题。 将所有候选对象批量放入单个 get_info_from_identifiers 调用中(它能很好地处理大批量),并在继续之前进行分类。

规则 1:绝不在没有后备方案的情况下相信空结果

如果 get_rounds_of_funding_from_identifiers 对你预期有数据的公司返回空:

  1. 尝试法律实体名称或 company_id。 品牌名称通常有效,但有些无效。请参阅 references/sector-seeds.md 中的别名表以了解已知的不匹配情况。常见模式:"[Brand] AI" → "[Legal Name], Inc."(例如,Together AI → "Together Computer, Inc.",Character.ai → "Character Technologies, Inc.",Runway ML → "Runway AI, Inc.")。
  2. 验证公司在 S&P 中存在。 如果你跳过了规则 0,现在调用 get_info_from_identifiers(identifiers=["Company"])——如果这也返回空,该公司可能处于太早期阶段或尚未被收录。
规则 2:子公司没有融资轮次

作为大公司部门或全资子公司的公司(例如,Alphabet 旗下的 DeepMind、Microsoft 旗下的 GitHub、Voodoo 旗下的 BeReal)将返回零个融资轮次。它们的资本事件在母公司层面跟踪。

如何检测: 来自 get_info_from_identifiers 的 status 字段将显示 "Operating Subsidiary"。references/sector-seeds.md 文件也用 ⚠️ 警告标记已知子公司。在融资查询中跳过这些。

规则 3:将 get_rounds_of_funding_from_identifiers 作为首选工具,而不是 get_funding_summary_from_identifiers

摘要工具更快,但可靠性更低——即使详细轮次数据存在,它也可能返回错误或不完整的数据。始终将详细轮次工具作为主要数据源。摘要工具仅可用于快速汇总检查(融资总额、轮次数量),并且如果结果看起来偏低,应通过轮次工具进行验证。

规则 4:谨慎分批并验证

在处理大型公司集合(50+ 家公司)时,按 15–20 家为一组进行分批。每批之后,检查返回空结果的公司,并在继续之前按照规则 1 中的回退步骤处理它们。

规则 5:role 参数至关重要
  • company_raising_funds → “X 融了哪些轮?”(公司视角)
  • company_investing_in_round_of_funding → “投资方 Y 投资了什么?”(投资方视角)

使用错误的 role 会静默返回空结果。对于交易流摘要,你几乎总是需要 company_raising_funds。只有在专门分析某投资方的投资组合活动时,才使用投资方角色。

规则 6:标识符解析不区分大小写,但区分拼写

S&P Global 能处理大小写变体(“openai” = “OpenAI”),但对拼写和标点很严格。“Character AI” 可能会失败,而 “Character.ai” 会成功。如有疑问,请使用 company_id(例如 C_1829047235),它保证可以解析。

工作流

步骤 1:确定覆盖范围与时间段

确定摘要应覆盖什么内容。有两种设置:

回访用户(已有观察列表): 如果用户之前定义了要跟踪的行业或公司,请使用该列表。检查对话历史中的先前观察列表。

新用户: 询问:

参数默认值说明
行业(至少一个)例如 “AI, Fintech, Biotech”
特定公司可选补充行业层面的覆盖
时间段最近 7 天“本周”、“过去 2 周”、“本月”

根据时间段计算精确的 start_date 和 end_date。

步骤 2:构建公司集合

对于指定的每个行业,使用经过验证的引导方法构建公司集合:

  1. 种子公司来自领域知识(参见 references/sector-seeds.md)

    • 注意种子文件中的 ⚠️ 警告和别名说明——一些知名公司是子公司、已被收购,或需要特定法定名称才能解析。
    • 种子文件包含已知别名不匹配的 company_id 值。如果品牌名称失败,可直接使用这些值。
  2. 立即预验证所有种子(规则 0):

    get_info_from_identifiers(identifiers=[all_seeds_for_this_sector])
    

    将结果分为两类:

    • ✅ 已解析且运营中(status = “Operating”)→ 继续进行竞争对手扩展
    • ❌ 未解析或子公司 → 使用种子文件中的别名/法定名称重试;子公司会记录为上下文,但从融资查询中排除
  3. 通过竞争对手扩展(仅使用 ✅ 已解析的种子):

    get_competitors_from_identifiers(identifiers=[resolved_seeds], competitor_source="all")
    
  4. 验证扩展后的集合:

    get_info_from_identifiers(identifiers=[new_competitors])
    

    应用相同的分类。按与目标行业匹配的 simple_industry 进行筛选。删除任何未解析的名称或子公司。

如果用户提供了特定公司,请直接添加这些公司,但仍要对它们运行预验证分类。绝不要跳过验证——即使是知名品牌名称也可能静默失败。

保持集合规模可控——每个行业目标为 15–40 家已解析、运营中的公司。对于多行业摘要,这可能总计 50–100+ 家公司。

第 3 步:拉取融资轮次

对于名单中的所有公司:

get_rounds_of_funding_from_identifiers(
    identifiers=[batch],
    role="company_raising_funds",
    start_date="YYYY-MM-DD",
    end_date="YYYY-MM-DD"
)

如果名单较大,按每批 15–20 家分批处理。

每批之后,找出结果为空的公司。 对于任何预期有动态的公司:

  1. 使用法律实体名称或备用标识符重试(参见上文的实体解析规则)。
  2. 只有在耗尽所有备用方案后才将该公司记录为“无数据”。

从成功结果中收集所有 transaction_id 值,然后补充详细的轮次信息:

get_rounds_of_funding_info_from_transaction_ids(
    transaction_ids=[all_funding_ids]
)

在单次调用(或少量调用)中传入所有交易 ID,而不是每笔交易一次——该工具能高效处理批量请求。

从每轮中提取以下内容(对幻灯片至关重要):

  • transaction_id —— 用于 Capital IQ 交易链接
  • 公告日期 —— 该轮次公开宣布的时间
  • 交割日期 —— 该轮次正式完成的时间
  • 融资金额
  • 投前估值(若披露)
  • 投后估值(若披露)
  • 领投方
  • 轮次类型(A 轮、B 轮、C 轮等)
  • 证券条款
  • 顾问
  • 定价趋势(上调轮 / 下调轮 / 持平)

日期为必填。 公告日期和交割日期必须始终出现在最终幻灯片的交易表中。如果只有一个日期可用,则显示该日期,另一个标记为“—”。

第 4 步:为重要交易拉取公司背景

对于任何涉及重大交易的公司(大额融资轮、显著估值变动),获取简要描述:

get_company_summary_from_identifiers(identifiers=[notable_companies])

这为叙述补充背景(例如:“该公司是一家成立于 2021 年的 AI 基础设施初创公司,正在拓展……”)。

第 5 步:识别亮点与趋势

在设计幻灯片之前,分析数据以发掘故事:

标记为“值得关注”:

  • 融资金额 ≥ 1 亿美元的轮次
  • 下调轮(定价趋势 = 下调)
  • 新独角兽(投后估值突破 10 亿美元)
  • 显著的估值跃升(投后估值 ≥ 上一次已知估值的 2 倍)
  • 连续融资者(同一公司在 6 个月内再次融资)
  • 异常庞大的投资方阵容

识别趋势:

  • 本期部署的总资本与典型水平对比(若有历史数据)
  • 哪些细分领域最热门(轮次最多、资本最多)
  • 轮次阶段分布(早期还是后期占主导?)
  • 整个摘要中最活跃的投资方
  • 地理集中度
  • 估值趋势(投前估值是在压缩还是扩张?)

选取关键要点(3–5 条): 将最重要的信号提炼为 3–5 条简明的要点式结论。这些是幻灯片的核心。每条要点应为一句简洁有力、有数据支撑的话。

示例:

  • “AI 领域在 8 轮融资中共筹集 24 亿美元——是前一周的 3 倍,其中以 [Company] 的 8 亿美元超级轮为首,投后估值达 120 亿美元。”
  • “[Company] 以 35 亿美元投前估值完成 2 亿美元 D 轮融资,高于其 C 轮的 18 亿美元——表明对 AI 开发者工具的强劲需求。”
  • “下调轮活动有所抬头:6 轮后期融资中有 2 轮定价低于此前估值。”
第 6 步:生成公司 Logo

对于关键要点或重要交易中出现的每家公司,使用本地的两级流水线生成 Logo。不要使用 Clearbit(logo.clearbit.com)——它已弃用且持续失效。外部 Logo CDN(Brandfetch、logo.dev、Google Favicons)需要 API 密钥或受网络限制阻断。请改用以下方法:

第 1 级:simple-icons npm 包(3,300+ 品牌 SVG,无需网络)

simple-icons 包内置了数千个知名品牌的高质量 SVG 图标。它完全离线运行——无需 API 密钥,无需网络调用。将其与 sharp 一起安装以进行 SVG → PNG 转换:

npm install simple-icons sharp

查找策略:

const si = require('simple-icons');
const sharp = require('sharp');

// Find an icon by exact title match (case-insensitive)
function findSimpleIcon(companyName) {
    // Try exact match first
    for (const [key, val] of Object.entries(si)) {
        if (!key.startsWith('si') || !val || !val.title) continue;
        if (val.title.toLowerCase() === companyName.toLowerCase()) return val;
    }
    // Try without common suffixes (AI, Inc., Corp.)
    const stripped = companyName.replace(/\s*(AI|Inc\.?|Corp\.?|Ltd\.?)$/i, '').trim();
    if (stripped !== companyName) {
        for (const [key, val] of Object.entries(si)) {
            if (!key.startsWith('si') || !val || !val.title) continue;
            if (val.title.toLowerCase() === stripped.toLowerCase()) return val;
        }
    }
    return null;
}

// Convert SVG to PNG with the brand's official color
async function simpleIconToPng(icon, outputPath) {
    const coloredSvg = icon.svg.replace('<svg', `<svg fill="#${icon.hex}"`);
    await sharp(Buffer.from(coloredSvg))
        .resize(128, 128, { fit: 'contain', background: { r: 255, g: 255, b: 255, alpha: 0 } })
        .png()
        .toFile(outputPath);
}

覆盖率: 约占典型交易流公司的 43%(对于 Stripe、Anthropic、Databricks、Snowflake、Discord、Shopify、SpaceX、Mistral AI、Hugging Face 等主要科技品牌表现良好;对于小众金融科技、生物科技或早期公司则较弱)。

第 2 层:通过 sharp 生成基于首字母的兜底方案(100% 覆盖率)

对于在 simple-icons 中找不到的公司,生成一个干净的基于首字母的 PNG 标志:

async function generateInitialLogo(companyName, outputPath) {
    const initial = companyName.charAt(0).toUpperCase();
    const svg = `
    <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg">
        <circle cx="64" cy="64" r="64" fill="#BDBDBD"/>
        <text x="64" y="64" font-family="Arial, Helvetica, sans-serif"
              font-size="56" font-weight="bold" fill="#FFFFFF"
              text-anchor="middle" dominant-baseline="central">${initial}</text>
    </svg>`;
    await sharp(Buffer.from(svg)).png().toFile(outputPath);
}
完整流水线
async function fetchLogo(companyName, outputDir) {
    const fileName = companyName.toLowerCase().replace(/[\s.]+/g, '-') + '.png';
    const outPath = path.join(outputDir, fileName);

    // Tier 1: Try simple-icons
    const icon = findSimpleIcon(companyName);
    if (icon) {
        await simpleIconToPng(icon, outPath);
        return { path: outPath, source: 'simple-icons' };
    }

    // Tier 2: Generate initial-based fallback
    await generateInitialLogo(companyName, outPath);
    return { path: outPath, source: 'initial-fallback' };
}

标志规范:

  • 将所有标志保存到 /home/claude/logos/[company-name].png
  • 所有标志均为 128×128 PNG,背景透明
  • 在幻灯片上,标志高度显示为 0.35"–0.5"——它们是点缀,不是焦点
  • 首字母兜底圆形使用灰色(BDBDBD)填充配白色文字——与单色调色板保持一致
  • 切勿随意混用不同风格的标志——如果大多数公司都解析为品牌图标,少数兜底方案应自然融入
步骤 7:生成单页 PPTX

在创建幻灯片之前,阅读 /mnt/skills/public/pptx/SKILL.md 和 /mnt/skills/public/pptx/pptxgenjs.md。

使用 pptxgenjs 创建一张单页幻灯片 PowerPoint。幻灯片应信息密集但视觉简洁——要像“高管仪表盘”,而不是“文字墙”。

幻灯片布局
┌─────────────────────────────────────────────────────────────┐
│  DEAL FLOW DIGEST                                           │
│  [Period] · [Sectors]                           [Date]      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐       │
│  │  $X.XB  │  │  N      │  │  $X.XB  │  │  $X.XB  │       │
│  │ Raised  │  │ Rounds  │  │ Avg Pre │  │ Largest │       │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘       │
│                                                             │
│  KEY TAKEAWAYS                                              │
│  ─────────────────────────────────────────────────          │
│  [Logo] Takeaway 1 text goes here...                        │
│  [Logo] Takeaway 2 text goes here...                        │
│  [Logo] Takeaway 3 text goes here...                        │
│  [Logo] Takeaway 4 text goes here...                        │
│                                                             │
│  TOP DEALS                                                  │
│  ┌──────────────────────────────────────────────────────────┐│
│  │Company│Type │Announced│Closed│Amount│Pre-$│Post-$│Lead│🔗││
│  │───────│─────│─────────│──────│──────│─────│──────│────│──││
│  │ ...   │ ... │  ...    │ ...  │ ...  │ ... │ ...  │... │🔗││
│  └──────────────────────────────────────────────────────────┘│
│                                                             │
│  [Footer: Deal Flow Digest · Sources: S&P Global Capital IQ]│
│  [Footer: AI Disclaimer]                                    │
└─────────────────────────────────────────────────────────────┘
设计规范

色彩理念:极简,单色优先。 幻灯片应有一种高端金融简报的感觉——黑、白、灰占主导。色彩仅在承载含义时使用(例如,降价轮次的红色指示,突出指标的绿色指示),或在读者自然会期待的地方使用(公司标志)。切勿将色彩用于纯装饰目的,如背景填充、装饰条或渐变效果。

调色板——单色高管风:

  • 主背景:FFFFFF(白色)——干净、开阔的幻灯片背景
  • 页眉栏:1A1A1A(近黑色)——为标题区域提供强烈对比
  • 主文字:1A1A1A(近黑色)——所有正文、统计数字、要点
  • 次要文字:6B6B6B(中灰色)——标签、说明文字、页脚、日期戳
  • 边框与分隔线:D0D0D0(浅灰色)——细微的结构线、卡片轮廓、表格边框
  • 卡片背景:F5F5F5(灰白/极浅灰色)——统计卡片填充、表格交替行
  • 链接文字:2B5797(柔和蓝)——表格中的 Capital IQ 交易链接(幻灯片上唯一的蓝色)
  • 语义色(谨慎使用):
    • 降价轮次或负面信号:C0392B(柔和红)——仅用作小圆点、标签或单词高亮,切勿用作填充或背景
    • 突出正面指标(新晋独角兽、超大规模轮次):2E7D32(柔和绿)——同样极简使用:一个圆点、一个小标签或一个高亮数字
    • 如果没有数据点值得使用颜色指示,完全不使用色彩。完全单色的幻灯片完全正确。

排版:

  • 标题:28–32pt,加粗,近黑色页眉栏上白色文字
  • 统计数字:36–44pt,加粗,近黑色
  • 统计标签:10–12pt,中灰色(6B6B6B)
  • 要点文字:12–14pt,近黑色,左对齐
  • 表格文字:9–11pt,近黑色,次要列使用灰色(6B6B6B)
  • 链接文字:9–10pt,柔和蓝(2B5797)
  • 页脚:8pt,中灰色

统计卡片(顶部行):

  • 4 个关键指标作为大数字标注:总融资额、轮次数、平均投前估值、最大轮次
  • 每个放在一张卡片中,F5F5F5 填充配细 D0D0D0 边框——无阴影,无色彩填充
  • 如果某个统计数字令人意外或极端(例如,3 倍于正常量、创纪录交易),可以在该单个数字旁边放置一个小色点或下划线——否则保持完全单色
  • 如果投前估值大多未披露,用其他指标替代(例如,轮次规模中位数、新晋独角兽数量)

关键要点(中间部分):

  • 3–5 条单行要点,每条前缀相关公司标志(小,约 0.35" 高)
  • 如果没有可用标志,使用灰色圆形配白色公司首字母——而非彩色圆形
  • 左对齐,留有足够呼吸空间
  • 降价轮次或负面要点可以使用红色小圆点前缀;否则不用颜色
  • 在有数据时包含估值背景(例如,“以 $5B 投后估值”) 热门交易表(底部区域):
  • 紧凑型表格,展示 4–6 笔最值得关注的交易
  • 列:公司、类型(Series X)、公布日期(Announced)、完成日期(Closed)、金额($M)、投前估值(Pre-Money,$M)、投后估值(Post-Money,$M)、领投方(Lead Investor)、交易链接(Deal Link)
  • Announced 和 Closed 列以 MMM DD 格式显示日期(例如 "Jan 15")。这两列是必填项,必须始终存在。如果没有日期,显示 "—"。
  • Deal Link 列包含可点击的 "View →" 文本,链接到 Capital IQ:
    https://www.capitaliq.spglobal.com/web/client?#offering/capitalOfferingProfile?id=<transaction_id>
    
    其中 <transaction_id> 是来自 get_rounds_of_funding_from_identifiers 的 transaction_id。
  • 如果未披露投前或投后估值,在该单元格中显示 "—"
  • 表头行使用近黑色(1A1A1A)填充和白色文字;数据行交替使用 F5F5F5 和 FFFFFF
  • 将表格在幻灯片上水平居中。计算表格的总宽度,然后设置 x 使其在幻灯片宽度内居中:x = (slideWidth - tableWidth) / 2。对于 16:9 布局(宽 13.33"),如果表格宽 12",则使用 x = 0.67。切勿将表格左对齐到幻灯片边缘。
  • 保持紧凑——这是参考资料,不是焦点
  • 表格单元格中不使用彩色填充。如果某笔交易是 down round,金额旁边可以出现一个小号红色文字标签 "(↓ down)"——这是表格中唯一允许的颜色。

交易链接实现(pptxgenjs): 在 pptxgenjs 中,使用单元格对象上的 options.hyperlink 属性为表格单元格添加超链接:

// Table cell with Capital IQ deal link
{
  text: "View →",
  options: {
    hyperlink: {
      url: `https://www.capitaliq.spglobal.com/web/client?#offering/capitalOfferingProfile?id=${transactionId}`
    },
    color: "2B5797",
    fontSize: 9,
    fontFace: "Arial"
  }
}

表格居中(pptxgenjs): 始终将交易表在幻灯片上居中。动态计算 x 位置:

const SLIDE_W = 13.33; // 16:9 slide width
const TABLE_W = 12.5;  // total table width (sum of all column widths)
const TABLE_X = (SLIDE_W - TABLE_W) / 2; // ≈ 0.42"

slide.addTable(tableRows, {
  x: TABLE_X,
  y: tableY,
  w: TABLE_W,
  colW: [1.8, 0.9, 0.9, 0.9, 1.0, 1.1, 1.2, 1.6, 0.7], // Company, Type, Announced, Closed, Amount, Pre-$, Post-$, Lead, Link
  // ... other options
});

根据需要调整 colW 值,但始终通过 (SLIDE_W - sum(colW)) / 2 重新计算 TABLE_X 以保持表格居中。

页脚:

  • 中灰色小号文字:"Deal Flow Digest · [Period] · Sources: S&P Global Capital IQ · Generated [Date]"

通用颜色规则(严格执行):

  • 公司 logo 是幻灯片上唯一的"全彩"元素——它们按源文件原样显示。
  • 交易链接使用柔和蓝色(2B5797)——这是除语义红色/绿色之外唯一的非单色文字颜色。
  • 除 logo 和链接外,幻灯片在黑白打印机上打印时应看起来正确。
  • 切勿对背景、强调条、装饰形状或分节线应用颜色。
  • 如有疑问,保持灰色。
代码结构
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Deal Flow Digest";

const slide = pres.addSlide();
const SLIDE_W = 13.33; // 16:9 slide width in inches

// 1. Dark header bar with title and period
// 2. Stat cards row (4 cards: Total Raised, # Rounds, Avg Pre-Money, Largest Round)
// 3. Key takeaways section with logos (include valuation context)
// 4. Top deals table with Announced, Closed, Pre-Money, Post-Money columns and Capital IQ deal links
//    - Center the table: x = (SLIDE_W - tableWidth) / 2
// 5. Footer

pres.writeFile({ fileName: "/home/claude/deal-flow-digest.pptx" });

根据 pptxgenjs 陷阱指南,对阴影和重复样式使用工厂函数(而非共享对象)。

Step 8:对幻灯片进行 QA

遵循 PPTX 技能中的 QA 流程:

  1. 内容 QA: python -m markitdown deal-flow-digest.pptx —— 验证所有文本、数字、公司名称、估值数据和交易链接是否正确
  2. 视觉 QA: 转换为图像并检查:
    python /mnt/skills/public/pptx/scripts/office/soffice.py --headless --convert-to pdf deal-flow-digest.pptx
    pdftoppm -jpeg -r 200 deal-flow-digest.pdf slide
    
    检查元素重叠、文本溢出、对齐问题、低对比度文本、logo 尺寸问题,以及交易链接文本是否可见。
  3. 链接 QA: 验证表格中的 Capital IQ URL 是否以正确的 transaction ID 正确格式化。
  4. 修复并重新验证 —— 在宣布完成之前至少进行一轮修复并验证循环。
Step 9:呈现结果
  1. 将最终的 .pptx 复制到 /mnt/user-data/outputs/
  2. 使用 present_files 共享幻灯片
  3. 提供 2–3 句话的口头总结:
    • "Your digest covers X rounds totaling $Y raised across [sectors]."
    • 指出单笔最值得关注的交易及其估值
    • 标记任何令人担忧的趋势(down rounds、估值压缩等)

错误处理

实体解析失败
  • 已知公司返回空结果: 首先检查 get_info_from_identifiers — 如果失败,尝试使用 references/sector-seeds.md 中的别名,或直接使用 company_id。常见的品牌→法人不匹配:Together AI → "Together Computer, Inc.",Character.ai → "Character Technologies, Inc.",Runway ML → "Runway AI, Inc."。
  • 子公司: DeepMind、GitHub、Instagram、WhatsApp、YouTube、BeReal 等均为子公司 — 它们没有独立的融资轮次。请在上下文中将其标注为"已收购/子公司",但不要将其报告为"无活动"。
  • 已倒闭公司: Convoy(2023 年 10 月关停)等公司仍可在 S&P Global 中解析,但永远不会有新活动。references/sector-seeds.md 文件会标记这些公司 — 在纳入某家公司之前请先查看该文件。
  • get_funding_summary_from_identifiers 报错或返回零: 回退到 get_rounds_of_funding_from_identifiers — 摘要工具可靠性较低。切勿将摘要工具作为唯一数据来源。
  • role 参数错误: 如果投资者视角查询返回空,请确认你使用的是 company_investing_in_round_of_funding,而非 company_raising_funds(反之亦然)。
数据质量问题
  • 该时段无活动: 如果某行业没有任何融资轮次,请在幻灯片上明确注明("[行业] 在该时段内无交易记录")— 无活动本身也是信息。
  • 估值数据稀疏: 如果大多数交易的投前和投后估值均未披露,请在页脚注释中说明数据局限性,并在表格中使用"—"。调整统计卡片以显示其他指标(例如中位轮次规模),而非平均投前估值。
  • Logo 获取失败: simple-icons npm 包对典型交易流公司的覆盖率约为 43%。对于其余公司,请使用 sharp 生成的基于首字母的备用方案。保持图标风格一致 — 不要混用随机方案。如果 simple-icons 或 sharp 安装失败,请回退到 pptxgenjs 基于形状的首字母方案(灰色椭圆 + 白色文字叠加),该方案无需外部依赖。
  • 单页幻灯片交易过多: 如果有超过 6 笔值得关注的交易,请在表格中显示前 6 笔,并添加脚注:"+N 笔额外交易未显示。"按交易规模排序。
  • 大型范围: 对于包含 100+ 家公司的多行业摘要,将所有 API 调用按 15–20 个一组分批处理。优先保证值得关注交易的深度,而非次要交易的完整性。
  • 种子数据陈旧: 如果竞争对手扩展对某行业返回的结果非常少,种子公司可能过于小众。请通过添加 2–3 个更知名的名称并重新扩展来拓宽范围。
  • 链接的交易 ID 无效: 如果融资工具返回的 transaction_id 无法生成有效的 Capital IQ URL,请省略该行的链接单元格,而不是包含一个失效链接。

示例提示词

  • "给我一份 AI 和金融科技的每周交易流摘要"
  • "总结本周生物科技领域的融资情况"
  • "我的覆盖范围 — 网络安全、云基础设施和开发工具 — 过去 2 周的交易汇总"
  • "本周我关注的所有行业的风投动态如何?"
  • "本月的气候科技快速交易流幻灯片"

评论

支持 Markdown