研究
把市場問題變成一份 go-to-market 簡報
向市場提出一個精確的問題,讀答案背後的品類和定價頁面,收集買家在 X 上怎麼描述問題,再保存一份有來源主張和開放問題的 GTM 簡報。
複製 prompt
把方括號裡的欄位替換掉,然後貼到 Claude Code、Codex 或任何能存取終端機的 AI。它會安裝 Felo skill、在花額度前詢問,並執行這套工作流程。
為[產品]進入[地區]的[細分市場或 ICP]製作一份 go-to-market 研究簡報,語言為[語言]。 模式:[自助 / 業務主導 / 通路]。它支援的決策:[發布 / 定價 / 重新定位]。時間範圍:[過去 90 天 / 過去 12 個月]。 輸出一份 Markdown 簡報,包含: 1. 細分市場定義:他們是誰、今天用什麼、來源對規模怎麼說——引用來源,或寫「暫無資料」。 2. 買家語言:他們如何描述問題,附連結和日期。 3. 替代方案:他們從什麼切換過來,包括試算表和「什麼都不做」。 4. 異議,以及買家要求的證明。 5. 公開來源無法回答的開放問題。 6. 完整來源清單。 規則: - 每個市場主張都需要連結和日期。不要憑感覺估算市場規模、成長或預算。 - 區分獨立來源、廠商頁面和你自己的推論。 - X 只用於語言和異議,不作為市場規模的證據。 - 把時間範圍和地區落實為明確值。 - 消耗額度前,先展示預計執行的 API 呼叫並等待我批准。 - 不要發布、傳送、排程,或寫入任何 CRM。 - 將結果寫入 ./gtm-brief.md,並在對話中總結。
複製的內容也包含安裝步驟和安全規則。
你會得到什麼
一次執行的範例輸出,不是即時生成。
GTM 簡報 — [地區] 的 [細分]
細分定義
用試算表排程的小型營運團隊。規模:所查閱的公開來源暫無資料——沒有來源就不要在簡報裡寫數字。
買家語言
- 「我們還在用試算表做這件事」 — X 貼文,2026-10-18
- 「最難的是設定」 — X 貼文,2026-10-02
標示為語言,不作為普遍性證據。
買家提到的替代方案
試算表、現有套件,以及什麼都不做。來源:https://example.com/thread(2026-10-18)。
異議與所需證明
安全審查與遷移路徑。買家要求可具名的參考客戶;我們目前沒有公開的,所以這仍是開放問題。
開放問題
- 這個細分裡有多少已有專門預算項?
- 異議會隨公司規模變化嗎?
來源
- https://example.com/category-page
- https://example.com/pricing-page
- https://example.com/thread
實際呼叫
給開發者:同一套工作流程的可複製程式碼,依執行順序排列。
展開實際 API 呼叫
框定市場問題
Chat 會回傳答案和用過的頁面,所以從一個窄到能回答的問題開始:誰在買、他們今天用什麼、會遇到什麼異議。把資源保留為線索連結;答案是線索,連結才是證據,它們最後會組成來源列表。下方的 helper 只送出一次 Key,非 2xx 回應會拋錯。
gtm.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 product = "scheduling tool"; // replace with your product const segment = "operations teams at 50-200 person companies"; const region = "DACH"; const market = await felo<ChatData>("/v2/chat", { query: `Who buys ${product} for ${segment} in ${region}, what do they use today, and what objections come up?`, }); const seedSources = market.data.resources.slice(0, 5);範例輸出
{ "answer": "Buyers in this segment usually start from spreadsheets and …", "sources": [ { "link": "https://example.com/category-page", "title": "…", "snippet": "…" } ] }讀品類頁面本身
抓取框定市場的頁面:品類概覽、對比頁和定價頁。用 readability 抽成 Markdown,並給每頁蓋上抓取日期,因為市場閱讀的品質取決於背後的頁面。
gtm.ts type ExtractData = { data: { content: string } }; const marketPages = [ { url: "https://example.com/category", title: "Category overview" }, { url: "https://example.com/comparison", title: "Comparison page" }, { url: "https://example.com/pricing", title: "Pricing page" }, ]; const pages = await Promise.all( marketPages.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/category", "checkedAt": "2026-10-30", "content": "# Category overview\n\nExtracted page text…" }收集買家怎麼描述問題
在 X 搜尋買家遇到問題時使用的詞,而不是你的產品名。保留帳號和日期;簡報用這些貼文取得語言和異議,絕不把它們當作市場規模或異議普遍程度的度量。
gtm.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 language = await felo<XData>("/v2/x/tweet/search", { query: `(spreadsheet OR "scheduling tool") (alternative OR "looking for")`, limit: 25, since_time: since, }); const quotes = language.data.tweets.slice(0, 5);範例輸出
{ "data": { "tweets": [ { "content": "we are still doing this in a spreadsheet", "author": { "username": "example_ops" }, "created_at": "2026-10-18T11:05:00Z", "metrics": { "retweet_count": 1, "favorite_count": 18 } } ] } }圍繞決策寫簡報
把細分定義、買家語言、替代方案、異議和開放問題拼成一段 Markdown。每條主張保留來源和日期,市場規模只有來源提供時才寫,公開來源回答不了的內容放進開放問題,而不是推論。
gtm.ts const today = new Date().toISOString().slice(0, 10); const sourceLine = (title: string, url: string, date: string) => `- ${title}: ${url} (checked ${date})`; const brief = [ `# GTM brief — ${segment} in ${region}`, "", "## Segment definition", "See the category page for how the segment is described. Market size: Not available from public sources reviewed.", "", "## Buyer language", ...quotes.map((post) => `- @${post.author.username}, ${post.created_at.slice(0, 10)}: ${post.content}`), "", "## Alternatives buyers mention", "Spreadsheets, an incumbent suite, and doing nothing. Treated as language until a source ranks them.", "", "## Objections and proof required", "Migration path and a named reference. Marked open: whether the objection changes by company size.", "", "## Open questions", "- How much of the segment already has a dedicated budget line?", "- Which objection blocks a pilot most often?", "", "## Sources", ...pages.map((page) => sourceLine(page.title, page.url, page.checkedAt)), ...seedSources.map((source) => `- ${source.title}: ${source.link}`), ].join("\n"); console.log(brief);範例輸出
# GTM brief — operations teams at 50-200 person companies in DACH
把證據留給下一個市場
每個細分和地區建一個 LiveDoc,把抓到的頁面作為 URL 資源加進去,再把簡報本身作為文件資源加進去。下一個市場從同一批來源開始,不用重新抓品類頁,重複 URL 會自動去重。
gtm.ts type LiveDocData = { data: { short_id: string } }; const briefDoc = await felo<LiveDocData>("/v2/livedocs", { name: `GTM: ${segment} — ${region}`, description: `Market evidence checked ${today}`, }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/urls`, { urls: pages.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/doc`, { title: `GTM brief ${today}`, content: brief, }); console.log(briefDoc.data.short_id); // reuse for the next region範例輸出
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
包含什麼
- 來自 Chat API 的有來源市場閱讀,以及背後的頁面
- 品類、對比和定價頁面的 Markdown 擷取
- X 上帶帳號和日期的買家語言與異議
- 圍繞發佈決策而不是話題組織的簡報
- 讓下一個地區或發佈重複使用證據的 LiveDoc
不做什麼
- 只涵蓋公開來源;沒有付費市場報告、panel 或客戶訪談
- 絕不估算市場規模或成長——缺失資料寫「暫無資料」
- X 貼文提供語言和訊號,不代表買家的有代表性樣本
- 它不會替你選擇細分或定價
- 它不會發佈簡報,也不會寫進 CRM
常見問題
需要買付費市場研究報告嗎?
不需要。工作流程讀公開來源並標出空白。如果你已經有報告,把它作為文件資源加進 LiveDoc,像其他來源一樣引用。
可以研究其他語言的市場嗎?
可以。設定地區和語言佔位符。引語保留原文,並在旁邊附翻譯,方便本地 reviewer 檢查措辭。
它會給我市場規模嗎?
只有當某個來源明確給出時才會,並附連結和日期。否則簡報寫「暫無資料」,不會編數字,也不會從一則貼文外推。
它能和客戶對話嗎?
不能。它只讀公開來源。把訪談筆記作為文件資源加進去並標為內部;簡報不會把私人筆記當成公開證據。
它和研究簡報工作流程有什麼區別?
研究簡報回答一個問題。這套工作流程把證據組織成 go-to-market 決策——細分、買家語言、替代方案、異議和買家要求的證明——輸出可以直接餵給發佈計畫。
一份簡報要花多少?
每次 chat、擷取和 X 搜尋都會消耗按用量計費的額度;目前費率在價格頁面。prompt 會在花額度之前請求確認。
相關工作流程
改成你的版本
同一套配方,依你實際的交付方式調整。
依地區各跑一次
保持章節結構不變,只改地區和語言佔位符。每個地區一個 LiveDoc、同樣的問題,這樣幾份簡報可以對比,而不是變成三份互不相關的文件。
加入你自己的訪談筆記
把客戶通話筆記貼成文件資源並標為內部。簡報可以把它們放在公開證據旁邊引用,但絕不會把私人筆記當成公開來源。
餵給發佈 deck
把異議和證明部分交給 deck 工作流程,並保留來源列表。簡報是證據層,deck 是它的展示,不是第二個真相來源。
繼續深入
這套配方背後的參考頁面,以及下一步可以看什麼。