mcpField
F
funding-digest

funding-digest

github.com/w95文档处理28537 次安装35 周前更新
代码仓库

关于 funding-digest

funding-digest 是制作近期融资轮次单页 PowerPoint 简报的技能,可覆盖指定行业或公司。它使用 S&P Global Capital IQ 数据,校验公司标识,并将交易关联到 Capital IQ 资料页。

主要功能

  1. 01设定覆盖范围和报告周期
  2. 02校验公司身份及运营状态
  3. 03收集并补充融资轮次数据
  4. 04提炼重要交易与市场趋势
  5. 05生成单页交易流简报

适用场景

  1. 01制作每周融资轮次回顾
  2. 02跟踪指定行业的近期融资
  3. 03汇总公司关注列表的交易活动

安装

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

$npx skills add https://github.com/w95/awesome-claude-corporate-skills --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