Skip to content

用 WorkBuddy 做行业研究,并生成一份带引用的 HTML 报告

这个案例解决什么问题

行业研究最难的部分通常不是“找到几篇文章”,而是同时处理四件事:

  1. 把一个宽泛的问题拆成可搜索、可验证的研究问题。
  2. 区分市场规模、竞争格局和客户需求,不把不同口径的数据混在一起。
  3. 保留每条结论对应的原始来源,方便复核和更新。
  4. 把研究材料整理成一份结构清楚、可以直接分享的 HTML 报告。

这个案例演示怎样把上述流程交给 WorkBuddy。我们使用 Tavily Search API 获取网页搜索结果,由 WorkBuddy 完成查询设计、来源筛选、证据整理、分析写作和 HTML 生成。

本文提供的是一套可复用的方法模板。示例里的 都需要替换成你的真实研究对象。

最后会得到什么

一次完整任务建议交付以下文件:

text
industry-research/
├─ research_plan.md              # 研究边界、问题树和查询计划
├─ raw/
│  └─ tavily_results.json        # Tavily 原始返回结果
├─ source_index.md               # 筛选后的来源索引
├─ findings.md                   # 结论、证据和来源编号
├─ report.html                   # 最终可视化报告
└─ research_log.md               # 搜索日期、限制和待核验问题

raw/tavily_results.json 是原始证据池,source_index.md 是经过筛选的来源清单,findings.md 负责把结论和来源编号关联起来,report.html 才是最终阅读版本。

不要让 WorkBuddy 搜索完成后直接覆盖原始结果。保留这几层文件,后续才能知道一条结论是怎样得出的。

开始前准备

  • WorkBuddy 可以读取和写入本地文件,并能运行 Python。
  • 已安装 Python 3.10 或更高版本。
  • 已在 Tavily 创建 API Key。
  • 已明确研究对象、区域、时间范围和报告读者。

Tavily 官方 Python SDK 的包名是 tavily-python。可以让 WorkBuddy 在项目目录执行:

bash
python3 -m venv .venv
source .venv/bin/activate
python -m pip install tavily-python

然后在本机终端设置环境变量:

bash
export TAVILY_API_KEY="替换成你自己的 API Key"

不要把真实 API Key 写进提示词、Python 文件、Markdown、HTML 或 Git 仓库。让代码通过 TAVILY_API_KEY 环境变量读取它。

第一步:先定义研究边界

行业研究容易失控,是因为“行业”可能同时包含上游材料、中游产品、下游服务和相邻市场。先把下面这段发给 WorkBuddy:

text
我要研究 {{行业}},主要面向 {{报告读者}},研究区域是 {{区域}},
数据截止日期是 {{YYYY-MM-DD}},最终用于 {{战略规划 / 产品决策 / 投资判断 / 客户提案}}。

请先不要搜索和写结论,先完成 research_plan.md,内容包括:
1. 用一句话定义本次研究包含什么、不包含什么;
2. 画出产业链和价值链边界;
3. 把研究拆成“市场分析、竞争分析、客户分析”三部分;
4. 每部分列出需要回答的问题、需要的数据和可接受的来源;
5. 列出容易混淆的统计口径,以及需要向我确认的假设。

如果信息不足,请先列出问题,不要自行补写事实。

这一步的目标不是得到答案,而是确定“搜什么”。尤其要提前写清:产品口径、地域口径、年份、收入还是出货量、终端市场还是上游市场。

第二步:把研究拆成三组查询

不要只搜索一次“ 行业研究报告”。这类宽泛查询往往会返回重复的商业报告摘要。更稳定的做法是建立三组查询包。

市场分析提示词

text
请为 {{行业}} 的市场分析设计 8~12 条 Tavily 查询,覆盖:

1. 市场规模、历史增速和未来预测;
2. 不同产品、区域和客户类型的细分结构;
3. 产业链、利润池和关键价值环节;
4. 技术、政策、价格和渠道趋势;
5. 行业增长驱动、约束和潜在替代品。

查询要求:
- 同一指标至少设计两条不同表达的查询;
- 优先加入“官方统计、监管机构、行业协会、公司年报”等限定词;
- 中文市场同时准备中文和英文查询;
- 每条查询只解决一个问题,不要把多个问题塞进一句话;
- 为每条查询标注它要验证的指标和期望来源类型。

竞争分析提示词

text
请为 {{行业}} 的竞争分析建立查询包。候选公司包括:{{竞争对手名单}}。

需要查清:
1. 公司定位、核心产品和目标市场;
2. 公司整体收入与相关业务收入,必须区分两种口径;
3. 区域布局、渠道模式、定价和服务能力;
4. 产品发布、并购、合作和管理层公开战略;
5. 可验证的优势、短板和战略动作。

优先搜索公司官网、投资者关系页面、年报、监管披露和产品资料。
第三方文章只能作为补充。不要根据搜索摘要猜测市场份额,也不要把集团收入当成某条产品线收入。

客户分析提示词

text
请为 {{行业}} 的客户分析建立查询包,分别研究:

1. 直接客户、终端用户和影响购买的人;
2. 客户规模、区域分布和集中度;
3. 采购决策链:谁提出需求、谁评估、谁批准、谁使用;
4. 购买标准:价格、性能、合规、交付、培训、售后和总拥有成本;
5. 使用痛点、未满足需求、替换周期和复购因素;
6. 不同客户群之间的差异,以及客户结构正在发生的变化。

优先寻找官方统计、客户组织、行业协会、招标文件、公司案例和一手访谈。
把“公开资料可以证明的事实”与“需要访谈验证的假设”分开。

第三步:让 WorkBuddy 调用 Tavily API

Tavily Search 会返回标题、URL、相关内容片段和相关性分数。advanced 搜索更适合需要高相关度片段的精确研究,但消耗的 API credits 也更高;max_results 可以控制单次返回数量。具体参数以 Tavily Search API 文档 为准。

让 WorkBuddy 创建并运行搜索脚本:

text
请根据 research_plan.md 中的查询包,创建 search_tavily.py 并执行搜索。

技术要求:
1. 使用 tavily-python,通过环境变量 TAVILY_API_KEY 读取密钥;
2. search_depth 使用 advanced,topic 使用 general;
3. 每条查询返回最多 8 个结果;
4. include_answer 使用 advanced,include_raw_content 暂时设为 false;
5. 保存 query、answer、title、url、content、score、response_time 和 request_id;
6. 每完成一条查询就增量写入 raw/tavily_results.json,避免中断后丢失;
7. 记录失败查询和错误信息,不要静默跳过;
8. 不要把 API Key 写入任何输出文件。

先把脚本给我检查,再运行。运行结束后汇报查询数、成功数、失败数、唯一 URL 数和 API 用量。

脚本的核心调用可以采用下面的形式:

python
import os
from tavily import TavilyClient

client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])

response = client.search(
    query="{{一条明确的行业研究查询}}",
    topic="general",
    search_depth="advanced",
    max_results=8,
    include_answer="advanced",
    include_raw_content=False,
)

Tavily 的 answer 适合帮助理解搜索方向,但它仍然是自动生成的摘要,不能直接代替原始来源。正式报告应引用 results 中的 URL,并核对原网页支持了什么。

如果希望控制成本,可以先用 basic 搜索探索,再对高价值问题使用 advanced。Tavily 官方文档也建议利用结果中的 score 做相关性过滤,并通过 include_domainsexclude_domains 控制来源范围,参见 Web Search Essentials

第四步:把搜索结果变成来源索引

搜索结果不等于可引用来源。让 WorkBuddy 去重、筛选并建立来源编号:

text
请读取 raw/tavily_results.json,生成 source_index.md。

处理规则:
1. 按规范化 URL 去重,合并同一网页被哪些查询命中;
2. 优先级为:政府和监管机构 > 官方统计与行业协会 > 公司官网和年报 > 学术机构 > 主流专业媒体 > 商业研究摘要 > 其他网页;
3. 为每个保留来源分配唯一编号,格式为 SRC-001、SRC-002……;
4. 每个来源记录标题、机构、URL、发布日期、访问日期、来源类型、可靠性、可支持的事实和限制;
5. 删除无法访问、明显重复、无作者无日期、只转载不提供原始出处的低质量页面;
6. 搜索结果的 content 只是线索。重要数字必须打开原网页核对上下文;
7. 如果只能找到二手摘要,明确标记“待找到一手来源”,不要把它写成确定事实。

最后统计各类来源数量,并列出目前证据最薄弱的研究问题。

来源索引中的一条记录可以长这样:

markdown
### SRC-012

- 标题:{{网页或报告标题}}
- 发布机构:{{机构名称}}
- URL:https://example.com/report
- 发布日期:{{日期或未知}}
- 访问日期:{{YYYY-MM-DD}}
- 来源类型:官方统计
- 可靠性:高
- 可支持事实:{{具体数据或判断}}
- 限制:{{口径、地域、年份或样本限制}}

第五步:先校准数据口径,再形成结论

行业报告最常见的错误,是把看起来相似、实际上统计范围不同的数字直接比较。例如,一个数据包含设备、材料和服务,另一个数据只统计设备;两者不能直接相除计算市场份额。

先让 WorkBuddy 生成口径校准表:

text
请从 source_index.md 中提取所有市场规模、增长率、份额和客户数量数据,生成“口径校准表”。

每行包含:
- 指标名称;
- 数值与币种;
- 基准年份;
- 预测年份;
- 地理范围;
- 包含的产品或服务;
- 收入、出货量还是客户数;
- 名义值还是实际值;
- 来源编号;
- 是否可以与其他指标直接比较;
- 报告中应该怎样使用。

遇到口径不一致时,不要强行计算。请说明差异,并给出可比口径、区间估计或“暂不可比”的结论。

然后生成 findings.md

text
请基于已经核验的来源和口径校准表,生成 findings.md。

每条 finding 必须包含:
1. 一句话结论;
2. 支持它的事实和数据;
3. 对业务意味着什么;
4. 对应的来源编号;
5. 置信度:高 / 中 / 低;
6. 反例、限制或待核验问题。

请严格区分:
- 事实:来源直接支持的内容;
- 推断:由多个事实推导出的判断;
- 建议:基于判断提出的行动。

没有来源编号的内容不得写成事实。一个来源无法证明多个跳跃结论时,拆成多条 finding。

第六步:生成带引用的 HTML 报告

现在再让 WorkBuddy 生成最终报告:

text
请使用 research_plan.md、source_index.md、口径校准表和 findings.md,生成 report.html。

报告结构:
1. 标题、研究对象、区域、数据截止日期和研究边界;
2. 管理层摘要:3~5 个最重要结论;
3. 市场分析:规模、细分、趋势、驱动和约束;
4. 竞争分析:竞争分层、主要玩家对比、战略动作和能力差异;
5. 客户分析:客户结构、决策链、购买标准、痛点和变化;
6. 综合判断:机会、风险、关键不确定性和下一步验证;
7. 方法说明与完整来源表。

引用要求:
- 每个关键数字、事实判断和表格行都必须带来源编号;
- 来源编号显示为可点击标签,例如 SRC-012,并链接到原始 URL;
- 推断旁边同时列出支持它的多个来源;
- 不要引用 Tavily answer,把原始网页作为引用目标;
- 没有可靠来源的内容标记“待核验”,不要隐藏不确定性;
- 页面底部提供完整来源表,包含标题、机构、日期和 URL。

页面要求:
- 单文件 HTML,CSS 写在文件内部,不依赖外部框架;
- 蓝白配色,正文白底,深色文字,适合电脑和手机阅读;
- 使用语义化 HTML,表格在手机端可横向滚动;
- 提供打印样式,打印或另存 PDF 时不丢失引用;
- 不使用虚构图表。图表数据必须能回到来源编号;
- 对所有动态内容进行 HTML 转义,不把来源网页中的脚本写入报告。

生成后请启动本地预览,检查桌面端、移动端、所有来源链接和打印效果。

最终 HTML 中的引用可以采用这样的结构:

html
<p>
  {{经过核验的行业结论}}
  <a class="source" href="https://example.com/report"
     target="_blank" rel="noopener">SRC-012</a>
</p>

关键不在于来源标签是否好看,而在于读者点击后能看到真正支持这句话的原始材料。

一次性完整提示词

如果已经熟悉整个流程,也可以把下面这段直接发给 WorkBuddy:

text
请帮我完成一项可追溯的行业研究。

研究对象:{{行业或公司}}
研究区域:{{区域}}
数据截止日期:{{YYYY-MM-DD}}
报告读者:{{管理层 / 产品团队 / 投资团队 / 客户}}
研究目的:{{要支持的决策}}

请按阶段执行,每完成一个阶段先汇报结果,再进入下一阶段:

阶段 1:定义研究边界,建立市场、竞争、客户三部分问题树,写入 research_plan.md。
阶段 2:为每个问题设计中英文 Tavily 查询,通过 TAVILY_API_KEY 调用 API,把原始结果增量保存到 raw/tavily_results.json。
阶段 3:去重和筛选来源,优先官方、监管、统计、协会、公司年报和学术来源,生成带唯一编号的 source_index.md。
阶段 4:建立数据口径校准表,禁止直接比较统计范围、年份、币种或指标类型不同的数据。
阶段 5:生成 findings.md,每条结论都写明事实、推断、业务含义、来源编号、置信度和限制。
阶段 6:生成单文件 report.html,包含管理层摘要、市场分析、竞争分析、客户分析、综合判断、方法说明和完整来源表。

硬性规则:
- Tavily answer 只能作为线索,正式引用必须指向原始 URL;
- 没有来源的数字和事实不得进入报告;
- 每个关键结论和表格行都必须有可点击来源编号;
- 区分事实、推断和建议;
- 对冲突数据并列呈现并解释口径,不擅自选择更好看的数字;
- API Key 只能从环境变量读取,禁止写入文件;
- 保留原始搜索结果、失败记录、访问日期和待核验问题;
- 完成后运行链接检查和 HTML 检查,并汇报验收结果。

怎样验收这份报告

不要只看页面是否漂亮。至少检查下面这些项目:

  • 研究边界与目标读者清楚,报告没有无限扩展到相邻行业。
  • 市场、竞争、客户三部分都回答了明确问题,而不是堆积资料。
  • 所有关键数字都写明年份、地域、币种和统计口径。
  • 每个关键事实和表格行都有可点击的来源编号。
  • 随机抽查 5~10 条引用,原网页确实支持对应结论。
  • 公司整体收入没有被误写成某条业务收入。
  • Tavily 自动生成的 answer 没有被当成正式来源。
  • 冲突数据、证据空白和低置信度推断都被明确标记。
  • HTML 在桌面端和手机端可读,打印时不会截断核心内容。
  • 项目文件中不包含 Tavily API Key 或其他敏感信息。

可以让 WorkBuddy 做最后一次反向审计:

text
请不要继续润色报告,改为扮演严格的研究审核人。

逐条检查 report.html 中的数字、事实、比较和来源链接:
1. 找出没有引用、引用不匹配或只能支持部分结论的内容;
2. 找出年份、地域、产品范围、币种和指标类型不一致的比较;
3. 找出把推断写成事实、把公司整体数据写成业务数据的地方;
4. 随机打开至少 10 个来源链接进行核对;
5. 输出问题清单、严重程度、修改建议和修复后的验收结果。

没有发现的问题不要虚构;无法访问的来源单独列出。

常见失败与修正方法

搜索结果很多,但报告没有结论

先让 WorkBuddy 为每个研究问题写一句暂定回答,再寻找支持或反驳它的证据。不要按照网页出现顺序做摘要。

引用了很多商业报告摘要

在查询中加入政府、监管、协会、公司年报、投资者关系等限定词。商业报告可以用于发现指标,但重要数据应继续寻找一手来源或第二个独立来源。

两个市场规模差异很大

先比较产品范围、地域、基准年份、币种、是否含服务以及收入与出货量口径。不能校准时并列展示,并说明为什么暂时不能直接比较。

HTML 很漂亮,但点击引用对不上

findings.md 作为 HTML 的唯一事实输入。先给 finding 绑定来源编号,再渲染页面,不要在生成 HTML 时临时补结论。

API 消耗过快

先用 basic 和少量结果探索查询质量,再对关键问题启用 advanced。合并重复查询,并在重复执行前读取已有原始结果。

安全与限制

  • Tavily 是搜索工具,不是事实核查机构。搜索结果可能过时、重复或缺少上下文。
  • 付费报告的公开摘要不能替代完整报告,不要绕过登录、订阅或版权限制。
  • 客户访谈、内部经营数据和未公开文件应脱敏,并与公开网页来源分开管理。
  • 对市场规模、政策、公司财务和竞争动态等时效性信息,应记录访问日期并定期更新。
  • HTML 报告引用外部网页时,来源可能以后失效。重要材料应在权限允许的情况下保留标题、发布日期和必要的核验记录。

可以怎样复用

把研究对象替换掉,这套流程可以用于新行业进入、产品机会评估、竞争情报、客户洞察和区域市场选择。

真正值得复用的不是某份 HTML,而是这条稳定链路:

text
研究边界 → 问题树 → 查询包 → 原始结果 → 来源索引
→ 口径校准 → 结论与证据 → 带引用 HTML → 反向审计

当下一次研究开始时,保留目录结构、提示词、来源字段和验收规则,只替换研究对象与查询包,就能把一次成功沉淀成自己的行业研究工作系统。

以真实任务为主线的 WorkBuddy 实战白皮书