研究
第一次外联之前研究一个目标客户
读目标公司自己的网站、近期报道和公开动态,再写一份客户简报:最近动作、可能的优先级、开场话题,以及诚实的未知项。
复制 prompt
把方括号里的字段替换掉,然后粘贴到 Claude Code、Codex 或任何能访问终端的 AI。它会安装 Felo skill、在花额度前询问,并执行这套 workflow。
在[外联 / 需求挖掘电话 / 续约]之前,为[公司名称或域名]制作一份客户简报。 我们的产品:[产品或服务]。我们关注的买家:[角色]。近期动态时间范围:[过去 90 天 / 过去 12 个月]。 阅读他们自己的网站、公开报道和公开帖子。输出一份 Markdown 简报,包含: 1. 他们做什么,一段话,附来源。 2. 近期动态:发布、融资、招聘、管理层、合作——附日期和链接。 3. 本季度可能的优先事项,明确标注为推断。 4. 开场话题:三个具体观察,每个都附来源。 5. 未知项:你无法从公开来源核实的内容。 6. 完整来源列表。 规则: - 不要编造联系人姓名、邮箱、电话、员工数、营收或融资额。 - 只用公开来源:不要私人数据、不要仅登录可见的页面、不要抓取的目录。 - 不要写入 CRM 或任何其他系统。简报是供人审阅的文件。 - 每个推断都标注为推断;事实保留链接和日期。 - 不要把买家的意图写成事实。 - 消耗额度前,先展示计划执行的 API 调用并等待我批准。 - 不要发送、排期、发布或给任何人发消息。 - 将结果写入 ./account-brief.md,并在对话中总结。
复制的内容也包含安装步骤和安全规则。
你会得到什么
一次运行的示例输出,不是实时生成。
客户简报 — [公司],2026-10-30 核对
他们做什么
为中型物流商制造仓库拣选机器人。来源:https://example.com/about(2026-10-30 核对)。
近期动态
- 开设第二个组装基地 — https://example.com/news/expansion(2026-10-24)
- 招聘“部署运营”团队 — https://example.com/careers(2026-10-30 核对)
- 其账号关于合作伙伴集成的帖子 — @example_company(2026-10-21)
可能的优先事项(推断)
在更多站点更快部署。来自扩张帖子和新部署岗位的推断——不是已声明的计划,也未在公开渠道确认。
开场话题
- 第二个基地是新的:问站点不同时部署手册会怎么变。来源:https://example.com/news/expansion
- 专职部署运营岗位暗示销售和安装之间的交接。来源:https://example.com/careers
未知
- 目前谁负责部署运营:公开来源暂无数据。
- 车队规模和合同金额:暂无数据。
来源
- https://example.com/about
- https://example.com/news/expansion
- https://example.com/careers
实际调用
给开发者:同一套 workflow 的可复制代码,按执行顺序排列。
展开实际 API 调用
先拿公司概览
用 Chat 问公司做什么、最近有什么公开变化,保留它引用的来源。
account.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type ChatData = { data: { answer: string; resources: { link: string; title: string; snippet: string }[]; }; }; const company = "Example Robotics"; const domain = "example.com"; const buyerRole = "Head of Operations"; const overview = await felo<ChatData>("/v2/chat", { query: `What does ${company} do, who buys from it, and what changed in the last 90 days?`, }); const seedSources = overview.data.resources.slice(0, 5);示例输出
{ "answer": "The company builds …", "sources": [ { "link": "https://example.com/about", "title": "…", "snippet": "…" } ] }读官网、定价和招聘
用 Web Fetch 读 About、定价和招聘页,看清他们的产品、客户和正在招的岗位。
account.ts type ExtractData = { data: { content: string } }; const companyPages = [ { url: `https://${domain}/about`, title: "About" }, { url: `https://${domain}/pricing`, title: "Pricing" }, { url: `https://${domain}/careers`, title: "Careers" }, ]; const pages = await Promise.all( companyPages.map(async (page) => { const res = await felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, with_cache: true, }); const checkedAt = new Date().toISOString().slice(0, 10); return { ...page, checkedAt, content: res.data.content }; }), );示例输出
{ "url": "https://example.com/careers", "checkedAt": "2026-10-30", "content": "# Careers\n\nOpen roles: deployment operations…" }看最近 90 天的公开动态
在 X 搜公司名和产品名,保留最近 90 天的公开帖子、账号和日期。
account.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number }; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const posts = await felo<XData>("/v2/x/tweet/search", { query: `"${company}" (hiring OR launch OR partnership OR expansion)`, limit: 20, since_time: since, }); const recent = posts.data.tweets.slice(0, 5);示例输出
{ "data": { "tweets": [ { "content": "We just opened our second assembly site", "author": { "username": "example_company" }, "created_at": "2026-10-21T14:02:00Z", "metrics": { "retweet_count": 4, "favorite_count": 31 } } ] } }写客户简报
写公司概览、最近动作、可能优先级、开场话题、未知项和来源。
account.ts const today = new Date().toISOString().slice(0, 10); const accountBrief = [ `# Account brief — ${company}`, `Checked ${today}. Buyer role: ${buyerRole}.`, "", "## What they do", overview.data.answer, "", "## Recent moves", ...recent.map( (post) => `- ${post.created_at.slice(0, 10)}: ${post.content} (from @${post.author.username})`, ), ...pages.map((page) => `- ${page.title} page captured ${page.checkedAt}: ${page.url}`), "", "## Likely priorities (inference)", "<!-- One or two sentences from the moves above. Mark them as inference, never a stated plan. Delete this comment when filled. -->", "", "## Conversation starters", ...recent.slice(0, 3).map( (post) => `- Ask about: ${post.content.slice(0, 100)} (dated ${post.created_at.slice(0, 10)})`, ), "", "## Unknowns", "- Who owns the workflow we sell into: Not available from public sources.", "- Contract values and team size: Not available.", "", "## Sources", ...pages.map((page) => `- ${page.title}: ${page.url}`), ...seedSources.map((source) => `- ${source.title}: ${source.link}`), ].join("\n"); console.log(accountBrief);示例输出
# Account brief — Example Robotics
存进 LiveDoc
把简报和来源存进 LiveDoc,下一次跟进可以直接复用。
account.ts type LiveDocData = { data: { short_id: string } }; const accountDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Account: ${company}`, description: `Briefs and sources checked ${today}`, }); await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/urls`, { urls: [ ...pages.map((page) => ({ url: page.url, title: page.title })), ...seedSources.map((source) => ({ url: source.link, title: source.title })), ], }); await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/doc`, { title: `Account brief ${today}`, content: accountBrief, }); console.log(accountDoc.data.short_id); // the next call reuses this LiveDoc示例输出
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
包含什么
- 来自 Chat 的有来源公司概览
- 官网、定价页和招聘页的 Markdown 提取
- X 上带日期的公开动态
- 结构化客户简报
- 保存证据的 LiveDoc
不做什么
- 不提供联系人邮箱、电话或个人资料
- 不读私有数据或仅登录可见的页面
- 不写 CRM,也不替你发消息
- 人数、收入、融资只在来源明确给出时记录
- 优先级和意图会明确标为推断
常见问题
它会给联系人邮箱吗?
不会。workflow 只做公开研究,不提供邮箱、电话或个人资料。
数据来自哪里?
Chat 返回有来源的公司概览,Web Fetch 读官网、定价和招聘页,X Search 补充公开动态。每条都保留链接和日期。
可以研究非科技公司吗?
可以。公开信息少的行业,简报会明确标出未知项,而不是编造。
会写进 CRM 吗?
不会。它只生成 Markdown 简报,CRM 写入需要你自己的集成。
优先级是事实吗?
不是。简报把“可能优先级”标为推断,并给出依据;销售仍需自己判断。
一次要花多少?
Chat、抽取和 X 搜索都按用量计费;当前费率在价格页面,prompt 会先请求确认。
相关 workflow
改成你的版本
同一套配方,按你实际的交付方式调整。
只研究一个细分
把范围缩到某个行业或地区,简报会更具体。
加入最近一次发布会
把发布会页面作为额外来源,开场话题会更有时效性。
和竞品拆解一起用
把客户简报里的优先级与竞品拆解里的定位对照,找到差异化切入点。
继续深入
这套配方背后的参考页面,以及下一步可以看什么。