mcpField
F
funding-digest

funding-digest

github.com/anthropicsドキュメント40.9k1.7k 回インストール今日更新
リポジトリ

funding-digest について

funding-digestは、S&P Global Capital IQのデータを使い、指定した業界や企業の最近の資金調達を1枚のPowerPointにまとめるスキルです。企業識別の検証、取引分析、要点の選定を案内し、取引のCapital IQリンクも掲載します。

主な機能

  1. 01Capital IQによる資金調達ラウンド調査
  2. 02企業と識別子の検証
  3. 03取引と評価額の分析
  4. 04トレンドと要点の選定
  5. 051枚の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 のフッターに必ず含めてください。これは任意ではありません。記載がないレポートは不完全です。

"Analysis is AI-generated — please confirm all outputs"

フッター — 生成したスライドの下部に、目立つ黄色のバナーとして表示します:「Analysis is AI-generated — please confirm all outputs」


週間ディールフローダイジェスト

S&P Global Capital IQ のデータを使用し、注目しているセクターや企業における最近の資金調達ラウンドの主なポイントをまとめた、アナリスト品質の単一スライドの PowerPointを生成します。各ディールから Capital IQ のプロフィールにリンクし、すばやく詳細を確認できるようにします。

使用するタイミング

次のようなパターンに該当した場合に実行します。

  • 「今週のディールフローダイジェストを作成して」
  • 「[sector] の週間資金調達まとめ」
  • 「[sector/companies] で最近成立したディールは?」
  • 「トランザクションのまとめ」または「ディールのまとめ」
  • 「担当対象の資本市場の最新情報」
  • 「最近の資金調達活動をまとめて」
  • ディール、資金調達、ラウンドに関する定期的なブリーフィングの依頼全般

ネストされたスキル

このスキルは、1 枚のスライドによる PPTX ブリーフィングを作成します。

  • PowerPoint を生成する前に /mnt/skills/public/pptx/SKILL.md を読み、ゼロから作成する場合はサブリファレンスの pptxgenjs.md も読みます。

エンティティ解決とツールの堅牢性

S&P Global の識別子システムは、企業名を法人に解決します。ほとんどの企業では適切に機能しますが、結果が空になる既知の失敗パターンがあります。データが気付かないうちに失われるのを避けるため、ワークフロー全体を通じて次のルールを適用してください。

ルール 0:資金調達を照会する前に、すべての識別子を検証する

資金調達ツールを呼び出す前に、すべての識別子を get_info_from_identifiers に渡します。これは、問題を早期に発見する最も低コストで確実な方法です。応答では次の 2 点を確認します。

  1. 解決できたか? 識別子の結果が空またはエラーの場合、その名称は S&P Global に存在しません。references/sector-seeds.md の別名、法人名、または company_id を直接試してください。
  2. status フィールドの値は?
    • "Operating" → 資金調達ラウンドを安全に照会できます。
    • "Operating Subsidiary" → 企業は存在しますが、親会社に所有されています。資金調達ラウンドは一件も返されません。その旨をコンテキストとしてダイジェストに記載します(例:「[Parent] に買収済み」)。ただし、資金調達は照会しないでください。
    • その他のステータス(例:閉鎖、非アクティブ)→ 企業はすでに事業を行っていません。過去のデータは存在する可能性がありますが、新たな活動はありません。

この事前検証を 1 回行うだけで、結果が空になる問題の大半を防げます。 候補をすべて 1 回の 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_funding_summary_from_identifiers ではなく、get_rounds_of_funding_from_identifiers を主要ツールとして使います

サマリーツールは高速ですが、信頼性が低く、詳細な資金調達ラウンドが存在する場合でも、エラーや不完全なデータを返すことがあります。詳細なラウンド情報を取得するツールを、常に主要なデータソースとして使ってください。サマリーツールは、合計調達額やラウンド数などの集計値をすばやく確認する場合に限り使用できます。結果が少ないように見える場合は、ラウンド情報を取得するツールで必ず照合してください。

ルール 4:慎重にバッチ処理し、検証します

大規模な企業群(50社以上)を処理する場合は、15~20社ずつのグループに分けてください。各バッチの後、結果が空だった企業を確認し、次へ進む前にルール 1 のフォールバック手順を実行します。

ルール 5:role パラメーターは重要です
  • company_raising_funds → 「X はどのラウンドで資金を調達しましたか?」(企業の視点)
  • company_investing_in_round_of_funding → 「投資家 Y は何に投資しましたか?」(投資家の視点)

誤ったロールを使うと、何も通知されずに空の結果が返ります。ディールフローダイジェストでは、ほとんどの場合 company_raising_funds を使います。投資家のポートフォリオ活動を具体的に分析する場合に限り、投資家のロールを使ってください。

ルール 6:識別子の解決では大文字と小文字は区別されませんが、スペルは厳密に扱われます

S&P Global は大文字と小文字の違い(「openai」=「OpenAI」)には対応しますが、スペルや句読点は厳密に扱います。「Character AI」では失敗しても、「Character.ai」なら成功する場合があります。迷った場合は、確実に解決できる company_id(例:C_1829047235)を使ってください。

ワークフロー

ステップ 1:対象範囲と期間を決める

ダイジェストの対象を決定します。設定方法は 2 つあります。

継続利用ユーザー(ウォッチリストがある場合): ユーザーが以前に追跡対象として定義したセクターや企業がある場合は、そのリストを使います。過去の会話からウォッチリストを確認してください。

新規ユーザー: 次の内容を尋ねます。

パラメーターデフォルト備考
セクター(少なくとも 1 つ)例:「AI、フィンテック、バイオテック」
特定の企業任意セクターレベルの対象範囲を補足します
期間過去 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])
    

    結果を次の 2 つに分類します。

    • ✅ 解決済み・事業継続中(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]
)

取引ごとに1回ずつではなく、すべての取引 ID を1回(または少数回)の呼び出しで渡します。ツールはバッチを効率的に処理します。

各ラウンドから次の情報を抽出します(スライドに不可欠):

  • 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 件にまとめます。これらがスライドの中心となります。各要点は、インパクトがあり、データに裏付けられた 1 文にします。

例:

  • 「AI セクターでは 8 件のラウンドで 24 億ドルを調達。前週の 3 倍で、[Company] によるポストマネー評価額 120 億ドルの 8 億ドル大型ラウンドが主導しました。」
  • 「[Company] はプレマネー評価額 35 億ドルでシリーズ D の 2 億ドルを調達しました。シリーズ C の評価額 18 億ドルから上昇しており、AI 開発者向けツールへの強い需要を示しています。」
  • 「ダウンラウンドが増加し、レイトステージの 6 件のラウンドのうち 2 件が、前回の評価額を下回る価格で実施されました。」
ステップ 6:企業ロゴを生成する

重要な要点や注目の取引で取り上げる各企業について、2 段階のローカルパイプラインを使用してロゴを生成します。Clearbit(logo.clearbit.com)は使用しないでください。非推奨であり、常に失敗します。外部のロゴ CDN(Brandfetch、logo.dev、Google Favicons)には API キーが必要か、ネットワーク制限によってブロックされます。代わりに、次の方法を使用してください。

ティア 1:simple-icons npm Package(3,300 以上のブランド SVG、ネットワーク不要)

simple-icons パッケージには、数千の有名ブランドの高品質な SVG アイコンが含まれています。完全にオフラインで動作し、API キーもネットワーク呼び出しも不要です。SVG を PNG に変換するため、sharp と併せてインストールします。

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 などの大手テックブランドには強い一方、ニッチなフィンテック、バイオテック、アーリーステージ企業には弱めです)。

Tier 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: 1 ページの 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 倍の件数、記録的な取引)である場合、その単一の数値の横に小さな色付きのドットまたは下線を付けてもかまいません。それ以外は完全にモノクロにしてください
  • プレマネー評価額の大半が非開示である場合は、別の指標(例: ラウンド規模の中央値、新規ユニコーン数)に置き換えてください

主要な要点(中段):

  • 1 行の要点を 3〜5 個、それぞれ関連する企業ロゴ(小さく、高さ約 0.35")を前置して示します
  • ロゴが利用できない場合は、企業のイニシャルを白で入れたグレーの円を使用してください。色付きの円は使用しないでください
  • 左揃えとし、余白を十分に取って読みやすくしてください
  • 下落ラウンドやネガティブな要点には、小さな赤いドットを前置しても構いません。それ以外は色を使用しないでください
  • 利用可能な場合は、バリュエーションの文脈を含めてください(例: 「50 億ドルのポストマネー評価額」) 注目案件テーブル(下部セクション):
  • 最も注目すべき4~6件の案件を表示するコンパクトなテーブルです
  • 列:会社、タイプ(Series X)、発表日(日付)、成立日(日付)、調達額($M)、プレマネー評価額($M)、ポストマネー評価額($M)、リード投資家、案件リンク
  • 発表日と成立日の列は、MMM DD 形式で日付を表示します(例:「Jan 15」)。これらの列は必須であり、常に表示してください。日付が取得できない場合は「—」と表示します。
  • 案件リンク列には、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)」を表示してもかまいません。テーブル内で使用できる色はこれだけです。

案件リンクの実装(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]」

全般的な色のルール(厳守):

  • スライド上で「フルカラー」を使用できるのは会社のロゴのみです。ロゴはソースのまま表示します。
  • 案件リンクには控えめな青(2B5797)を使用します。意味を示す赤/緑以外で、モノクロではないテキスト色として使用できるのはこれだけです。
  • ロゴとリンク以外は、白黒プリンターで印刷しても適切に見えるスライドにします。
  • 背景、アクセントバー、装飾図形、セクション区切りには色を使用しません。
  • 迷った場合はグレーにします。
コード構成
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 の注意事項に従い、影や繰り返し使用するスタイルには共有オブジェクトではなくファクトリー関数を使用します。

ステップ 8:スライドの品質確認

PPTX スキルの品質確認プロセスに従います:

  1. コンテンツの品質確認: python -m markitdown deal-flow-digest.pptx を実行し、すべてのテキスト、数値、会社名、評価額、案件リンクが正しいことを確認します
  2. 表示の品質確認: 画像に変換して確認します:
    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
    
    要素の重なり、テキストのはみ出し、配置の問題、コントラストの低いテキスト、ロゴのサイズの問題、案件リンクのテキストが見えることを確認します。
  3. リンクの品質確認: テーブル内の Capital IQ URL が正しい取引 ID で適切にフォーマットされていることを確認します。
  4. 修正して再確認する — 完了とする前に、少なくとも1回は修正と再確認を行います。
ステップ 9:結果を提示する
  1. 最終版の .pptx を /mnt/user-data/outputs/ にコピーします
  2. present_files を使用してスライドを共有します
  3. 2~3文で口頭の要約を伝えます:
    • 「このダイジェストでは、[sectors] にわたる X 件の資金調達ラウンドを取り上げ、合計 Y ドルの調達をまとめています。」
    • 最も注目すべき案件とその評価額を挙げます
    • 懸念される傾向(ダウンラウンド、評価額の圧縮など)があれば指摘します

エラー処理

エンティティ解決の失敗
  • 既知の企業なのに結果が空の場合: まず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_raising_fundsではなくcompany_investing_in_round_of_fundingを使用しているか確認してください(逆の場合も同様です)。
データ品質に関する問題
  • 期間中に活動がない場合: セクターで資金調達ラウンドがゼロの場合は、スライドにその旨を明記してください(「期間中、[Sector]で記録された取引はありません」)。活動がないこと自体が有益な情報です。
  • 評価額データが乏しい場合: ほとんどの取引でプレマネー評価額とポストマネー評価額が非公開の場合は、フッターの注釈でデータの制約を記載し、表では「—」を使用してください。統計カードの指標を調整し、平均プレマネー評価額の代わりに別の指標(例:ラウンドサイズの中央値)を表示してください。
  • ロゴの取得に失敗する場合: simple-icons npm パッケージでカバーできるのは、一般的な取引対象企業の約43%です。それ以外には、sharpで生成した頭文字ベースの代替画像を使用してください。アイコンのスタイルは統一し、無作為な手法を混在させないでください。simple-iconsまたはsharpのインストールに失敗した場合は、外部依存関係が不要なpptxgenjsの図形ベースの頭文字(灰色の楕円+白いテキストのオーバーレイ)に切り替えてください。
  • 1枚のスライドに取引が多すぎる場合: 注目すべき取引が6件を超える場合は、上位6件を表に表示し、脚注に「表示されていない追加取引:+N件」と記載してください。取引規模を基準に優先順位を付けてください。
  • 対象企業が多い場合: 100社以上の複数セクター向けダイジェストでは、API呼び出しを15~20件ずつまとめて実行してください。小規模な取引を網羅するより、注目すべき取引を詳しく扱うことを優先してください。
  • シード企業が古い場合: 競合企業の拡張でセクターの結果が非常に少ない場合、シード企業がニッチすぎる可能性があります。よく知られた企業を2~3社追加してから、再度拡張してください。
  • リンク用の取引IDが無効な場合: 資金調達ツールのtransaction_idから有効なCapital IQ URLが生成されない場合は、壊れたリンクを含めず、その行のリンクセルを省略してください。

プロンプトの例

  • 「AIとフィンテックの週間ディールフローダイジェストを作成してください」
  • 「今週のバイオテクノロジー分野の資金調達を要約してください」
  • 「担当分野であるサイバーセキュリティ、クラウドインフラ、開発者ツールについて、過去2週間の取引をまとめてください」
  • 「私が追っているすべてのセクターで、今週のベンチャー投資に何がありましたか?」
  • 「今月の気候テックのディールフロースライドを手早く作成してください」

コメント