創投搜尋器 (VC Finder)
輸入產品 URL 或描述。自動偵測產業與階段。找出 5 家已獲融資的競爭對手。執行兩條研究路徑:追查投資這些競爭對手的創投(Track A),以及搜尋針對此領域發表投資主題的創投(Track B)。產出附有來源、排名與聯繫切入點的投資人名單。
零幻覺政策: 輸出中的每一項事實都必須能追溯到特定的 Tavily 搜尋結果或所擷取的產品頁面。這包括:
- 競爭對手公司名稱:必須出現在 Tavily 搜尋結果中,而非 AI 訓練知識
- 創投基金名稱:必須完全一致地出現在 Tavily 搜尋結果中
- 投資金額、階段專注領域、投資組合公司:必須來自搜尋片段,而非 AI 知識
- 基金概覽與主題摘要:僅從搜尋片段中提取。若某細節不在搜尋資料中,請寫「搜尋資料中未找到」——切勿從訓練知識中填補。
常見錯誤
| 代理人可能會想要這麼做... | 為什麼這是錯的 |
|---|---|
| 因為 a16z 或 Sequoia 很有名就加入名單 | 有名但沒有證據就是雜訊。只有在 Tavily 針對此特定產品的搜尋結果中出現的創投才能列入。隨意提及只是浪費創辦人的時間。 |
| 從訓練知識中生成競爭對手公司 | 競爭對手必須來自 Tavily 搜尋結果(步驟 6)。AI 對公司的知識並非證據——從記憶推測出的公司可能會有錯誤的募資狀態,或者根本不是真正的競爭對手。 |
| 當所有 5 個 Track A 搜尋都回傳 0 個結果時仍繼續進行 | 0 個 Track A 結果意味著競爭對手選擇錯誤或過於冷門。請停止,以更廣泛的搜尋查詢重新執行步驟 6,然後再試一次。 |
| 未引用文章或貼文就列入 Track B 的創投 | 沒有來源的主題與幻覺無異。創辦人無法驗證,名單也將失去所有可信度。 |
| 從訓練知識中填補基金概覽 | 基金概覽必須僅來自 Tavily 片段文字。若片段中未描述該基金,請寫「搜尋資料中未找到」。 |
| 從網站美學風格來偵測階段 | 階段必須來自步驟 4 中偵測到的特定 CTA 訊號。 |
| 撰寫籠統的聯繫切入點 | 每個聯繫切入點都必須指名此特定產品的差異化優勢,以及搜尋資料中特定的創投組合訊號或主題引用。 |
| 當使用者有提供描述時就跳過抓取 URL | 務必抓取 URL。實際的網頁通常會顯示出使用者描述中未提及的階段訊號。 |
步驟 1:環境設定檢查
echo "TAVILY_API_KEY: ${TAVILY_API_KEY:+set}"
echo "FIRECRAWL_API_KEY: ${FIRECRAWL_API_KEY:-not set, Tavily extract will be used as fallback}"
若缺少 TAVILY_API_KEY: 停止。告訴使用者:「需要 TAVILY_API_KEY 才能進行創投投資與主題研究。此項沒有替代方案。請到 app.tavily.com 取得——免費方案每月 1000 點數(約 125 次完整執行)。將其加入您的 .env 檔案。」
若只有 FIRECRAWL_API_KEY 缺少: 繼續執行(不顯示錯誤)。將使用 Tavily extract 作為 URL 擷取的回退方案。
步驟 2:取得輸入資料
你需要:
- 產品 URL(必要,除非使用者直接貼上產品描述)
- 可選:目標階段提示(pre-seed、seed、series-a、series-b)——若有提供則直接使用,跳過階段偵測
- 可選:地理偏好(US、Europe、global)——若未指定,預設為 US
若使用者只提供貼上的描述(沒有 URL): 跳過步驟 3-4。直接以貼上的文字作為 product_content 進入步驟 5。將 stage_source 設為 user_description。
若沒有提供 URL 也沒有描述: 詢問:「您的產品或新創公司的 URL 是什麼?或者,請貼上簡短的描述:它做什麼、目標對象是誰、以及您目前的階段(pre-seed、seed、Series A)。」
為輸出檔案名稱,從 URL 推導產品縮寫:
PRODUCT_SLUG=$(python3 -c "
from urllib.parse import urlparse
url = 'URL_HERE'
host = urlparse(url).netloc.replace('www.', '')
print(host.split('.')[0])
")
步驟 3:擷取產品頁面
主要方法:Firecrawl(若 FIRECRAWL_API_KEY 已設定)
curl -s -X POST https://api.firecrawl.dev/v1/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "URL_HERE", "formats": ["markdown"], "onlyMainContent": true}' \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
content = d.get('data', {}).get('markdown', '') or d.get('markdown', '')
print(f'擷取到: {len(content)} 字元')
open('/tmp/vc-product-raw.md', 'w').write(content)
"
回退方案:Tavily extract(若 FIRECRAWL_API_KEY 未設定)
curl -s -X POST https://api.tavily.com/extract \
-H "Content-Type: application/json" \
-d "{\"api_key\": \"$TAVILY_API_KEY\", \"urls\": [\"URL_HERE\"]}" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
content = d.get('results', [{}])[0].get('raw_content', '')
print(f'透過 Tavily extract 擷取: {len(content)} 字元')
open('/tmp/vc-product-raw.md', 'w').write(content)
"
步驟層級的檢查點:
python3 -c "
content = open('/tmp/vc-product-raw.md').read()
if len(content) < 200:
print('錯誤:頁面回傳少於 200 字元。')
else:
print(f'內容檢查通過: {len(content)} 字元')
"
若內容少於 200 字元: 停止擷取。告訴使用者:「產品頁面回傳了無法讀取的內容。這通常表示網站是 JavaScript 渲染的,需要使用瀏覽器。請直接貼上您的產品描述:它做什麼、目標對象是誰、以及您目前的階段。」
以貼上的描述作為 product_content 繼續進行步驟 5。
步驟 4:在本機偵測階段訊號(無需 API)
在分析步驟之前,使用正則表達式解析已擷取的 markdown 內容。
python3 << 'PYEOF'
import re, json
content = open('/tmp/vc-product-raw.md').read().lower()
stage_signals = []
# 等待清單或 Beta 版 CTA
if re.search(r'join\s+(the\s+)?waitlist|sign\s+up\s+for\s+beta|early\s+access|request\s+(an?\s+)?invite|get\s+notified', content):
stage_signals.append({'signal': '等待清單或 Beta 版 CTA', 'stage_hint': 'pre-seed'})
# 免費試用或 Demo CTA
if re.search(r'start\s+(your\s+)?free\s+trial|try\s+(it\s+)?for\s+free|request\s+a?\s+demo|book\s+a?\s+demo|schedule\s+a?\s+demo', content):
stage_signals.append({'signal': '免費試用或 Demo CTA', 'stage_hint': 'seed'})
# 定價或銷售 CTA
if re.search(r'contact\s+sales|talk\s+to\s+(our\s+)?sales|see\s+pricing|view\s+pricing|plans\s+and\s+pricing', content):
stage_signals.append({'signal': '定價或銷售 CTA', 'stage_hint': 'series-a'})
if re.search(r'case\s+stud(y|ies)|customer\s+stor(y|ies)|trusted\s+by\s+[\d,]+|used\s+by\s+[\d,]+', content):
stage_signals.append({'signal': '案例研究或客戶數量', 'stage_hint': 'series-a'})
# 企業方案或徵才
if re.search(r'enterprise\s+(plan|pricing|tier)|we.?re\s+hiring|join\s+our\s+team|open\s+positions', content):
stage_signals.append({'signal': '企業方案或職缺', 'stage_hint': 'series-a-or-b'})
# 募資公告
funding_match = re.search(
r'raised\s+\$[\d,.]+\s*[mk]?|series\s+[abc]\s+round|seed\s+round|(\$[\d,.]+\s*[mk]?\s+(?:seed|series\s+[abc]))',
content
)
if funding_match:
stage_signals.append({'signal': f'募資文字: {funding_match.group(0).strip()}', 'stage_hint': 'announced'})
# 決定主導階段
if not stage_signals:
dominant = 'unknown'
elif any(s['stage_hint'] == 'announced' for s in stage_signals):
dominant = 'announced'
elif any(s['stage_hint'] == 'series-a-or-b' for s in stage_signals):
dominant = 'series-a'
elif any(s['stage_hint'] == 'series-a' for s in stage_signals):
dominant = 'series-a'
elif any(s['stage_hint'] == 'seed' for s in stage_signals):
dominant = 'seed'
else:
dominant = 'pre-seed'
confidence = 'high' if len(stage_signals) >= 2 else ('medium' if len(stage_signals) == 1 else 'low')
result = {'signals': stage_signals, 'dominant_stage': dominant, 'confidence': confidence}
json.dump(result, open('/tmp/vc-stage-signals.json', 'w'), indent=2)
print(f'階段: {dominant}({confidence} 可信度)從 {len(stage_signals)} 個訊號中偵測')
for s in stage_signals:
print(f' - {s["signal"]} -> {s["stage_hint"]}')
PYEOF
步驟 5:產品分析(分類、階段、ICP)
列印產品內容與階段訊號:
python3 -c "
import json
content = open('/tmp/vc-product-raw.md').read()[:6000]
signals = json.load(open('/tmp/vc-stage-signals.json'))
print('=== 產品頁面(前 6000 字元)===')
print(content)
print()
print('=== 偵測到的階段訊號 ===')
print(json.dumps(signals, indent=2))
"
AI 指示: 分析以上產品頁面內容。僅生成分類、ICP 與階段分類——尚未生成競爭對手公司(此動作將在步驟 6 透過即時搜尋進行)。
寫入 /tmp/vc-product-analysis.json:
product_name:來自頁面one_line_description:它做什麼、為誰而做、核心價值主張。少於 20 字。無行銷用語。industry_taxonomy:l1(頂層:fintech / healthtech / developer tools / consumer / 等)、l2(領域:sales technology / logistics software / 等)、l3(特定利基:outbound prospecting / last-mile routing / 等)。僅使用「technology」或「software」這類模糊標籤是不被接受的。icp:buyer_persona(職稱)、company_type、company_sizedetected_stage:pre-seed / seed / series-a / series-b / unknownstage_confidence:high / medium / lowstage_evidence:一句話,確切引用頁面上哪個 CTA 或文字導致此判斷。若未知,請寫「未找到明確訊號」。geography_bias:US / Europe / global / unclearcomparable_companies:保留為空陣列[]——將在步驟 6 中填入
python3 << 'PYEOF'
import json
analysis = {
# 根據上述分析填入
"comparable_companies": []
}
json.dump(analysis, open('/tmp/vc-product-analysis.json', 'w'), indent=2)
print('產品分析已寫入。')
PYEOF
驗證:
python3 -c "
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
print('產品:', a['product_name'])
print('產業:', a['industry_taxonomy']['l1'], '>', a['industry_taxonomy']['l2'], '>', a['industry_taxonomy']['l3'])
print('階段:', a['detected_stage'], '(' + a['stage_confidence'] + ' 可信度)')
"
步驟 5b:針對已驗證基金資料集進行預先比對
將產品分類與一個包含 25 家已驗證創投基金的資料集(來源為基金官網)進行比對。可產生零幻覺的基金匹配結果以及用於 Track A 的種子級競爭對手參考——不消耗任何 Tavily 點數。
為標籤對應列印產品分析:
python3 -c "
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
print('分類:', a['industry_taxonomy']['l1'], '>', a['industry_taxonomy']['l2'], '>', a['industry_taxonomy']['l3'])
print('階段:', a['detected_stage'])
print('地理:', a['geography_bias'])
"
AI 指示: 將產品分類對應到基金資料集中使用的標準標籤。可用標籤:
DevTools, Infrastructure, Open Source, B2B SaaS, AI, Data, FinTech, HealthTech, Enterprise, Consumer, Marketplaces, E-commerce, Crypto, DeepTech, Cybersecurity, Generalist
選擇 2-4 個描述此產品的標籤。將 detected_stage 對應為:Pre-seed、Seed、Series A 或 Growth。將 geography_bias 對應為:US、Europe、India 或 Global。
寫入產品背景資訊:
python3 << 'PYEOF'
import json
# 根據上述分類分析填入
context = {
"extracted_tags": ["TagA", "TagB"], # 從上方清單中選擇 2-4 個標籤
"stage_hint": "Seed", # Pre-seed / Seed / Series A / Growth
"geography_hint": "US" # US / Europe / India / Global
}
json.dump(context, open('/tmp/vc-product-context.json', 'w'), indent=2)
print('產品背景:', context)
PYEOF
針對嵌入式精選資料集執行評分:
python3 << 'PYEOF'
import json
context = json.load(open('/tmp/vc-product-context.json'))
VC_FUNDS = [
{"fund_name":"Y Combinator","thesis":"We provide seed funding for startups. We invest in deeply technical teams building massive companies across all domains.","check_size":"$500k","stage_focus":["Pre-seed","Seed"],"industry_tags":["Generalist","B2B SaaS","DevTools","AI"],"geography_focus":["Global"],"notable_portfolio":["Stripe","Airbnb","GitLab"],"website":"https://www.ycombinator.com"},
{"fund_name":"boldstart ventures","thesis":"Day one partner for developer first, crypto, and SaaS founders. We love deeply technical founders solving hard infrastructure problems.","check_size":"$1M - $3M","stage_focus":["Pre-seed","Seed"],"industry_tags":["DevTools","Infrastructure","Crypto"],"geography_focus":["Global","US"],"notable_portfolio":["Snyk","Blockdaemon","Superhuman"],"website":"https://boldstart.vc"},
{"fund_name":"Heavybit","thesis":"The leading investor in developer-first startups. We help technical founders launch, gain traction, and build enterprise-ready companies.","check_size":"$1M - $5M","stage_focus":["Seed","Series A"],"industry_tags":["DevTools","Infrastructure","Open Source"],"geography_focus":["Global","US"],"notable_portfolio":["PagerDuty","Sanity","Netlify"],"website":"https://www.heavybit.com"},
{"fund_name":"Amplify Partners","thesis":"We invest in technical founders building the next generation of IT infrastructure, developer tools, and data platforms.","check_size":"$2M - $8M","stage_focus":["Seed","Series A"],"industry_tags":["DevTools","Infrastructure","AI","Data"],"geography_focus":["US"],"notable_portfolio":["Datadog","OCTO","dbt Labs"],"website":"https://www.amplifypartners.com"},
{"fund_name":"OSS Capital","thesis":"We exclusively back early-stage founders building Commercial Open Source Software (COSS) companies.","check_size":"$500k - $2M","stage_focus":["Pre-seed","Seed","Series A"],"industry_tags":["Open Source","DevTools"],"geography_focus":["Global"],"notable_portfolio":["Cal.com","Appsmith","Hoppscotch"],"website":"https://oss.capital"}
]
# 針對產品背景對每個基金進行評分
scored = []
for fund in VC_FUNDS:
score = 0
# 產業標籤重疊
overlap = set(fund["industry_tags"]) & set(context["extracted_tags"])
score += len(overlap) * 3
# 階段匹配
if context["stage_hint"] in fund["stage_focus"]:
score += 2
# 地理匹配
if context["geography_hint"] in fund["geography_focus"] or "Global" in fund["geography_focus"]:
score += 1
# 一般性基金加分較少
if "Generalist" in fund["industry_tags"] and len(overlap) < 2:
score -= 1
scored.append((score, fund))
scored.sort(reverse=True, key=lambda x: x[0])
if scored:
top_score = scored[0][0]
if top_score >= 3:
matches = [f for s, f in scored if s >= 3]
else:
matches = []
else:
matches = []
result = {
"matched_funds": [m["fund_name"] for m in matches],
"scored_funds": [{"fund": m["fund_name"], "score": s} for s, m in scored],
"match_quality": "high" if len(matches) >= 2 else ("medium" if len(matches) == 1 else "none")
}
json.dump(result, open('/tmp/vc-curated-matches.json', 'w'), indent=2)
print(f"精選匹配結果: {result['match_quality']}")
for s, fund in scored:
print(f" {fund['fund_name']}: {s} 分")
if matches:
print(f"\n高品質匹配 ({len(matches)}):")
for fund in matches:
print(f" - {fund['fund_name']}")
PYEOF
步驟 6:競爭對手研究(Tavily 搜尋)
使用 Tavily 的 search API 來找出已獲融資的競爭對手。請勿使用可能已存在於分析檔案中的對手——所有結果必須來自本次即時搜尋。
TAVILY_API_KEY="$TAVILY_API_KEY"
INDUSTRY_QUERY=$(python3 -c "
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
query = a.get('industry_taxonomy', {}).get('l2', '') or a.get('industry_taxonomy', {}).get('l1', '')
print(query)
")
curl -s -X POST https://api.tavily.com/search \
-H "Content-Type: application/json" \
-d '{
"api_key": "'"$TAVILY_API_KEY"'",
"query": "funded startups in '"$INDUSTRY_QUERY"'",
"search_depth": "advanced",
"max_results": 10,
"include_answer": false
}' \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
results = d.get('results', [])
print(f'找到 {len(results)} 個搜尋結果')
for i, r in enumerate(results):
print(f' {i+1}. {r["title"]} ({r["url"]})')
print(f' {r["content"][:200]}')
json.dump(results, open('/tmp/vc-tavily-competitors.json', 'w'), indent=2)
"
AI 指示: 分析以上 Tavily 搜尋結果。選出 5 家融資金額最高的競爭對手。請務必真實——如果結果沒有包含足夠的已融資公司,請回報較少的數量。
對於每個競爭對手,請寫下列資訊:
name:公司名稱description:一句話摘要estimated_funding:估計募資金額與輪次source_url:Tavily 搜尋結果中提及該公司的 URL
python3 << 'PYEOF'
import json
competitors = [
# 從 Tavily 結果中填入 3-5 家競爭對手
# 每項都必須有 source_url,對應於 Tavily 結果中的 URL
]
json.dump(competitors, open('/tmp/vc-competitors.json', 'w'), indent=2)
print(f'已記錄 {len(competitors)} 家競爭對手')
PYEOF
更新產品分析中的競爭對手陣列:
python3 << 'PYEOF'
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
c = json.load(open('/tmp/vc-competitors.json'))
a['comparable_companies'] = [comp['name'] for comp in c]
json.dump(a, open('/tmp/vc-product-analysis.json', 'w'), indent=2)
print('分析已更新競爭對手。')
for comp in c:
print(f' - {comp["name"]}: {comp["description"]} ({comp["source_url"]})')
PYEOF
步驟 7:追蹤 A——競爭對手投資者研究(Tavily 搜尋)
對於每個競爭對手,搜尋其投資者。
TAVILY_API_KEY="$TAVILY_API_KEY"
python3 << 'PYEOF'
import json, subprocess, sys
competitors = json.load(open('/tmp/vc-competitors.json'))
track_a_results = []
for comp in competitors[:5]:
name = comp['name']
print(f'\n--- 正在搜尋 {name} 的投資者 ---')
query = f"{name} funding round investors"
result = subprocess.run([
'curl', '-s', '-X', 'POST', 'https://api.tavily.com/search',
'-H', 'Content-Type: application/json',
'-d', json.dumps({
'api_key': "$TAVILY_API_KEY",
'query': query,
'search_depth': 'advanced',
'max_results': 5
})
], capture_output=True, text=True)
try:
data = json.loads(result.stdout)
results = data.get('results', [])
print(f'找到 {len(results)} 個 {name} 的結果')
for r in results:
print(f' {r["title"]} — {r["url"]}')
track_a_results.append({
'company': name,
'results': results
})
except:
print(f'警告:{name} 的搜尋失敗')
track_a_results.append({
'company': name,
'results': []
})
json.dump(track_a_results, open('/tmp/vc-track-a-investors.json', 'w'), indent=2)
print(f'\nTrack A 完成:已處理 {len(track_a_results)} 家競爭對手')
PYEOF
步驟 8:追蹤 B——創投主題搜尋(Tavily 搜尋)
搜尋針對此產品領域發表過投資主題的創投。
TAVILY_API_KEY="$TAVILY_API_KEY"
INDUSTRY_L2=$(python3 -c "
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
print(a.get('industry_taxonomy', {}).get('l2', 'technology'))
")
curl -s -X POST https://api.tavily.com/search \
-H "Content-Type: application/json" \
-d '{
"api_key": "'"$TAVILY_API_KEY"'",
"query": "venture capital investment thesis '"$INDUSTRY_L2"'",
"search_depth": "advanced",
"max_results": 10,
"include_answer": false
}' \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
results = d.get('results', [])
print(f'Track B 搜尋找到 {len(results)} 個結果')
for i, r in enumerate(results):
print(f' {i+1}. {r["title"]} ({r["url"]})')
print(f' {r["content"][:200]}')
json.dump(results, open('/tmp/vc-track-b-theses.json', 'w'), indent=2)
"
步驟 9:整合與排序
結合精選匹配結果(步驟 5b)、Track A 投資者資料(步驟 7)和 Track B 創投主題(步驟 8),產生最終排序名單。
python3 << 'PYEOF'
import json
curated = json.load(open('/tmp/vc-curated-matches.json'))
track_a = json.load(open('/tmp/vc-track-a-investors.json'))
track_b = json.load(open('/tmp/vc-track-b-theses.json'))
final_list = []
# 來自精選資料集:已驗證的基金
for fund_entry in curated.get('scored_funds', []):
final_list.append({
'fund_name': fund_entry['fund'],
'source': 'curated_dataset',
'match_score': fund_entry['score'],
'confidence': 'high' if fund_entry['score'] >= 5 else 'medium'
})
# 來自 Track A:競爭對手投資者
for comp_entry in track_a:
for result in comp_entry.get('results', []):
# 從搜尋片段中提取創投名稱
content = result.get('content', '')
# AI 指示:在內容中尋找創投名稱
final_list.append({
'fund_name': 'AI_EXTRACT_FROM_RESULT',
'source': 'track_a',
'evidence': {
'company': comp_entry['company'],
'snippet': content[:300]
},
'confidence': 'medium'
})
# 來自 Track B:主題
for result in track_b:
final_list.append({
'fund_name': 'AI_EXTRACT_FROM_RESULT',
'source': 'track_b',
'evidence': {
'title': result.get('title', ''),
'url': result.get('url', ''),
'snippet': result.get('content', '')[:300]
},
'confidence': 'medium'
})
# 去重並排序(AI 指示:根據 match_score 和 confidence 排序)
json.dump(final_list, open('/tmp/vc-final-investors.json', 'w'), indent=2)
print(f'最終名單包含 {len(final_list)} 筆紀錄')
PYEOF
步驟 10:產生最終報告
撰寫包含來源、排名與聯絡切入點的最終投資人名單。產出一個結構化的檔案。
python3 << 'PYEOF'
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
final = json.load(open('/tmp/vc-final-investors.json'))
def create_visual_report(product_analysis, investor_list):
"""使用純文字格式建立視覺化報告"""
report = f"""
╔══════════════════════════════════════════════════════════════╗
║ 創投投資者研究報告 ║
╚══════════════════════════════════════════════════════════════╝
產品:{product_analysis.get('product_name', '未知')}
{product_analysis.get('one_line_description', '')}
產業:{product_analysis.get('industry_taxonomy', {}).get('l1', 'N/A')} > {product_analysis.get('industry_taxonomy', {}).get('l2', 'N/A')} > {product_analysis.get('industry_taxonomy', {}).get('l3', 'N/A')}
階段:{product_analysis.get('detected_stage', '未知')}({product_analysis.get('stage_confidence', 'N/A')} 可信度)
證據:{product_analysis.get('stage_evidence', '未找到明確訊號')}
"""
if investor_list:
report += "排名投資人名單:\n" + "─" * 50 + "\n\n"
for i, inv in enumerate(investor_list, 1):
name = inv.get('fund_name', '未知')
source = inv.get('source', '未知')
confidence = inv.get('confidence', '低')
score = inv.get('match_score', 'N/A')
report += f"{i}. {name}\n"
report += f" 來源:{source} | 可信度:{confidence} | 匹配分數:{score}\n"
if source == 'track_a' and 'evidence' in inv:
report += f" 競爭對手:{inv['evidence'].get('company', 'N/A')}\n"
elif source == 'track_b' and 'evidence' in inv:
report += f" 主題文章:{inv['evidence'].get('title', 'N/A')}\n"
report += f" 網址:{inv['evidence'].get('url', 'N/A')}\n"
report += "\n"
else:
report += "⚠️ 未找到投資人。\n"
report += "建議:\n"
report += " - 重新檢查產業分類標籤是否正確\n"
report += " - 嘗試使用更具體的關鍵字手動搜尋\n"
report += " - 考慮在不同地理區域搜尋\n"
return report
report = create_visual_report(a, final)
print(report)
# 同時儲存至檔案
with open('/tmp/vc-investor-report.md', 'w') as f:
f.write(report)
print(f"\n報告已儲存至 /tmp/vc-investor-report.md")
PYEOF
步驟 11:深度分析與聯絡切入點
為前 3 名投資人撰寫深度分析與產品專屬的聯絡切入點。
python3 << 'PYEOF'
import json
a = json.load(open('/tmp/vc-product-analysis.json'))
final = json.load(open('/tmp/vc-final-investors.json'))
# 取前 3 名
for i, inv in enumerate(final[:3], 1):
print(f"\n╔═══ {i}. {inv.get('fund_name', '未知')} 深度分析 ═══╗")
print(f"""
基金名稱:{inv.get('fund_name', '未知')}
來源:{inv.get('source', '未知')}
可信度:{inv.get('confidence', '低')}
基金概覽:
[待從 Tavily 片段中填入]
投資主題:
[待從 Tavily 片段中填入]
投資組合相似性:
[待從 Tavily 片段中填入]
此產品的聯絡切入點:
根據產品差異化優勢 [產品名稱] 與此基金的投資主題 [主題],一個有力的切入點可能是:
"[自訂的、具體的切入點]"
行動項目:
- [ ] 在 LinkedIn 上追蹤合夥人
- [ ] 透過電子郵件聯繫,提及共同投資者
- [ ] 申請他們的加速器計畫或公開申請表單""")
print("╚" + "═" * 50)
PYEOF