Penyelidikan
Kaji niche produk sebelum memesan stok
Kumpulkan konteks kategori, tangkap halaman pesaing pada tarikh dinyatakan, baca aduan pembeli di X dan simpan bukti serta memo dalam LiveDoc untuk disemak sebelum pesanan.
Salin prompt
Ganti medan dalam kurungan siku lalu tampal ke Claude Code, Codex atau AI dengan akses terminal. Ia memasang skill Felo, bertanya sebelum kredit digunakan dan menjalankan aliran kerja.
Kaji niche produk ini sebelum kami menyimpan stok atau melancarkan: [produk atau kategori]. Pasaran: [negara atau wilayah]. Saluran: [marketplace / DTC / runcit]. Tempoh siaran pembeli: [30] hari lepas. Produk setanding atau URL pesaing: [URL]. Kekangan bajet dan margin: [kekangan]. Audiens: [pasukan]. Hasilkan memo Markdown dengan: 1. Keputusan satu perenggan: patutkah dikaji lebih lanjut, dan apa yang akan mengubah pendapat anda. 2. Isyarat permintaan: apa kata sumber tentang minat, bermusim dan pengganti. 3. Produk pesaing: apa yang setiap satu dakwa, harga yang dicatat pada halaman dan kelemahan menurut pembeli. 4. Kedudukan harga: harga yang benar-benar ditemui pada halaman, setiap satu dengan tarikh catatan. 5. Aduan dan keperluan yang belum dipenuhi, dengan petikan, akaun dan tarikh. 6. Risiko dan soalan terbuka yang perlu diselesaikan sebelum membeli stok. 7. Sumber: setiap halaman dan siaran yang digunakan, dengan URL dan tarikh. Peraturan: - Gunakan hanya apa yang API kembalikan. Jangan reka saiz pasaran, anggaran jualan, bilangan ulasan atau harga pesaing. - Laporkan harga tepat seperti dicatat, dengan URL halaman dan tarikh catatan. Jangan sesekali purata atau normalkan. - Anggap siaran X sebagai anekdot, bukan data pasaran, dan nyatakan apabila sampel terlalu nipis. - Pisahkan dakwaan vendor daripada laporan pembeli. - Sebelum menggunakan kredit, tunjukkan pengekstrakan dan carian yang dirancang dan tunggu kelulusan saya. - Jangan hubungi pembekal, buat pesanan atau hantar mesej kepada sesiapa di X. - Tulis hasil ke ./product-research.md dan ringkaskan dalam chat.
Salinan turut menyertakan langkah pemasangan dan peraturan keselamatan.
Apa yang anda dapat
Contoh output daripada satu larian. Bukan penjanaan langsung.
Kajian produk — kategori contoh
Keputusan
Patut diteliti lebih dekat, tetapi bukti awam tidak cukup untuk keputusan stok. Soalan terbuka di bawah ialah langkah seterusnya.
Konteks kategori
Pembeli membandingkan ruang kaunter dan kebersihan lebih daripada tekanan. Tiada sumber awam menyokong anggaran saiz pasaran.
Halaman pesaing
- Example A — halaman produk (ditangkap 2026-10-30)
- Example B — halaman produk (ditangkap 2026-10-30)
Apa dilaporkan pembeli
- @example_buyer: “Penggantian ketiga dalam setahun; meterai rosak.” — 2026-10-19
- @example_home: “Pembersihan mengambil beberapa minit, tiada siapa sebut.” — 2026-10-24
Kedudukan harga
Harga ditangkap pada 2026-10-30 daripada halaman berpaut. Terdapat dua peringkat; setiap halaman dipetik terus, tidak dipuratakan.
Risiko dan soalan terbuka
- Ketahanan meterai ialah aduan paling berulang.
- Tiada sumber meliputi kadar pemulangan.
- Semak masa pembekal dan kos penghantaran sebelum memesan.
Sumber
- https://example.com/product-a — 2026-10-30
- https://x.com/example_buyer/status/... — 2026-10-19
Panggilan sebenar
Untuk pembangun: aliran kerja sama sebagai kod, mengikut urutan pelaksanaan.
Tunjukkan panggilan API sebenar
Minta gambaran kategori dari Chat
Mula dari jawapan bersumber, bukan halaman kosong: Chat mencari web awam, menyusun halaman dan memulangkan sumber digunakan. Tanya konteks permintaan, pengganti dan aduan biasa dalam satu pertanyaan, lalu simpan sumber teratas sebagai senarai bukti.
product-research.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 niche = "portable espresso maker"; // replace with the category you are judging const context = await felo<ChatData>("/v2/chat", { query: `Demand, price bands, and buyer complaints for ${niche} in the US`, }); const sources = context.data.resources.slice(0, 5);Contoh output
{ "answer": "Buyers compare on counter space and cleanup …", "sources": [ { "link": "https://example.com/category-guide", "title": "…", "snippet": "…" } ] }Tangkap halaman pesaing
Ekstrak dua atau tiga halaman produk pesaing sebagai Markdown dengan mod bacaan. Tujuannya dakwaan dan harga di halaman hari ini, bukan helaian spesifikasi ditulis semula. Simpan URL dengan kandungan dan catat tarikh tangkap: harga tanpa tarikh ialah khabar angin.
product-research.ts const PRODUCT_PAGES = [ { url: "https://example.com/product-a", title: "Example A — product page" }, { url: "https://example.com/product-b", title: "Example B — product page" }, ]; type ExtractData = { data: { content: string } }; const listings = await Promise.all( PRODUCT_PAGES.map((page) => felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, }).then((extracted) => ({ ...page, content: extracted.data.content })), ), );Contoh output
[ { "url": "https://example.com/product-a", "title": "Example A — product page", "content": "# Example A\n\nSpecs and price as displayed…" } ]Baca apa yang pembeli laporkan di X
Halaman pembekal menyenaraikan ciri; pembeli menggambarkan kegagalan. Cari niche dengan kata geseran — penghantaran, kualiti, bayaran balik — dalam 30 hari dan simpan akaun, tarikh dan pautan. Ini anekdot, bukan data permintaan, dan memo mesti menyatakannya.
product-research.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number; reply_count: number }; url: string; }[]; }; }; const since = Math.floor((Date.now() - 30 * 24 * 60 * 60 * 1000) / 1000); const search = await felo<XData>("/v2/x/tweet/search", { query: `"${niche}" (shipping OR quality OR refund)`, limit: 50, since_time: since, }); const complaints = search.data.tweets;Contoh output
{ "data": { "tweets": [ { "content": "Third replacement in a year; the seal fails.", "author": { "username": "example_buyer" }, "created_at": "2026-10-19T15:02:00Z", "metrics": { "retweet_count": 1, "favorite_count": 12, "reply_count": 3 }, "url": "https://x.com/example_buyer/status/..." } ] } }Tulis memo
Langkah ini kod mudah: gabungkan jawapan kategori, tarikh tangkap, petikan pembeli dan senarai sumber menjadi satu Markdown. Jujur tentang soalan terbuka — memo berguna kerana memisahkan apa yang halaman buktikan daripada apa yang perlu disahkan dengan pembekal.
product-research.ts const capturedOn = new Date().toISOString().slice(0, 10); const memo = [ `# Product research — ${niche}`, "", "## Category context", context.data.answer, "", "## Competitor pages", ...listings.map( (page) => `- [${page.title}](${page.url}) — captured ${capturedOn}`, ), "", "## What buyers report", ...complaints.slice(0, 10).map( (post) => `- @${post.author.username} (${post.created_at.slice(0, 10)}): ${post.content}`, ), "", "## Sources", ...sources.map((source) => `- [${source.title}](${source.link})`), ].join("\n"); console.log(memo);Arkib bukti dalam LiveDoc
Jalankan sekali setiap niche: cipta LiveDoc dan simpan
short_iddalam konfigurasi. Tambah halaman pesaing dan sumber Chat sebagai sumber URL supaya arkib menyahduplikasi, kemudian memo sebagai dokumen. Sebelum beli, cari tangkapan dan lihat harga mana bergerak.product-research.ts type LiveDocData = { data: { short_id: string } }; const research = await felo<LiveDocData>("/v2/livedocs", { name: `Product research: ${niche}`, description: "Competitor pages, buyer posts, and the memo", }); await felo(`/v2/livedocs/${research.data.short_id}/resources/urls`, { urls: [ ...listings.map((page) => ({ url: page.url, title: page.title })), ...sources.map((source) => ({ url: source.link, title: source.title })), ].slice(0, 10), }); await felo(`/v2/livedocs/${research.data.short_id}/resources/doc`, { title: `Product memo — ${capturedOn}`, content: memo, });Contoh output
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Termasuk
- Gambaran kategori bersumber dari Chat dan halaman di sebaliknya
- Halaman pesaing sebagai Markdown dengan tarikh tangkap
- Aduan pembeli di X dengan akaun, tarikh dan pautan
- Memo Markdown dari input ini
- Satu LiveDoc dengan bukti dan memo
Apa yang tidak dilakukan
- Sumber awam sahaja; laporan berbayar, sebut harga pembekal dan jualan dalaman di luar skop
- Tidak menganggar saiz pasaran, jumlah atau margin
- Harga direkod seperti ditangkap, tidak dinormalisasi atau dipuratakan
- Post X ialah anekdot, bukan data permintaan
- Tidak menghubungi pembekal, tidak memesan dan tidak mengubah senarai
Soalan
Dari mana konteks pasaran?
Chat API memulangkan jawapan bersumber dan halaman awam yang digunakan. Halaman pesaing dari URL anda dan diekstrak Web Fetch; post pembeli dari X Search. Tiada data jualan peribadi.
Adakah ia kata produk akan laku?
Tidak. Ia menyusun bukti awam — konteks, harga ditangkap dan aduan — lalu menulis apa yang belum diketahui. Mengesahkan permintaan perlukan data anda seperti iklan, pra-pesanan atau perbualan pembekal.
Jika marketplace menyekat pengekstrakan?
Web Fetch mengambil halaman awam satu URL pada satu masa dan sesetengah tapak menyekat. Guna halaman produk atau pembekal yang boleh diakses dan biar memo menanda tangkapan hilang daripada meneka harga.
Bagaimana elak harga pesaing lapuk?
Setiap harga dalam memo terikat pada URL dan tarikh tangkap. Jalankan semula pengekstrakan dekat keputusan belian; arkib menyimpan tangkapan lama untuk melihat pergerakan.
Adakah ia menghubungi pembekal atau penjual?
Tidak. Aliran hanya baca: ekstrak halaman, cari post awam dan tulis memo setempat. Tidak menghantar mesej, tidak memesan dan tidak mengubah senarai.
Berapa kos satu kajian?
Setiap panggilan Chat, pengekstrakan dan carian X menggunakan kredit mengikut penggunaan; kadar semasa di halaman harga. Prompt meminta kelulusan sebelum berbelanja.
Aliran kerja berkaitan
Tukar satu soalan kepada brief penyelidikan bersumber
Tanya web, simpan halaman di sebalik jawapan sebagai Markdown, tambah apa yang pengamal katakan di X dan simpan bukti dalam LiveDoc yang boleh dicari semula.
Buka aliran kerjaKandunganTukar perbualan sosial kepada brief mendengar mingguan
Cari post X minggu ini tentang jenama dan pesaing, tambah konteks web bersumber, baca halaman di sebaliknya dan arkibkan setiap edisi supaya minggu berikut bermula dari yang diketahui.
Buka aliran kerjaPejabatTukar halaman penyelidikan kepada pembentangan
Ekstrak halaman, simpan sebagai konteks LiveDoc, biar PPT Task API membina deck dan tanya sehingga pautan siap.
Buka aliran kerjaSesuaikan
Resipi sama, disesuaikan dengan cara anda benar-benar menyampaikan.
Tambah transkrip ulasan video
Jika kategori ada video ulasan, ambil transkrip dengan YouTube Subtitling dan tambah dua atau tiga petikan bertimestamp ke bahagian pembeli. Ulasan video tetap pengalaman seorang: kekalkan label anekdot.
Bandingkan dua calon
Jalankan langkah sama setiap calon dan letakkan memo bersebelahan: ciri didakwa, harga ditangkap, aduan berulang dan soalan terbuka. Perbandingan kekal kualitatif sehingga ada data jualan atau pemulangan.
Kemas kini sebelum beli
Jalankan semula pengekstrakan sehari sebelum pesanan. Simpan LiveDoc sama dan tambah memo baharu supaya arkib menunjukkan perubahan antara kajian dan pembelian.
Teruskan
Halaman rujukan di sebalik resipi ini dan langkah seterusnya.