Riset
Ubah satu pertanyaan menjadi brief riset bersumber
Tanya web, simpan halaman di balik jawaban sebagai Markdown, tambahkan apa yang dikatakan praktisi di X, dan simpan bukti dalam LiveDoc yang bisa ditelusuri lagi.
Salin prompt
Ganti kolom dalam kurung siku lalu tempel ke Claude Code, Codex, atau AI dengan akses terminal. Ia memasang skill Felo, bertanya sebelum memakai kredit, dan menjalankan alur kerja.
Susun ringkasan riset bersumber untuk [pertanyaan atau keputusan]. Cakupan: [pasar, wilayah, bahasa]. Rentang waktu: [30 hari terakhir / 12 bulan terakhir]. Audiens: [siapa yang membaca]. Kedalaman: [ringkasan satu halaman / ringkasan lengkap]. Hasilkan ringkasan Markdown berisi: 1. Jawaban singkat dalam tiga poin. 2. Tabel bukti: klaim, judul sumber, URL, tanggal terbit. 3. Bagian yang tidak disepakati sumber. 4. Hal yang masih belum diketahui. 5. Daftar sumber lengkap. Aturan: - Setiap klaim faktual membutuhkan tautan sumber. Pisahkan fakta, opini, dan inferensimu. - Jangan pernah mengarang kutipan, metrik, tanggal, atau sumber. Data yang hilang ditulis “Tidak tersedia”, bukan nol. - Utamakan sumber primer. Gunakan X sebagai sinyal praktisi, bukan bukti. - Ubah rentang waktu menjadi tanggal mulai dan selesai yang eksplisit, sebutkan zona waktunya. - Sebelum memakai kredit, tampilkan panggilan API yang direncanakan dan tunggu persetujuan saya. - Jangan membuat tugas berulang, mengirim pesan, atau menerbitkan apa pun. - Tulis hasilnya ke ./research-brief.md dan ringkas di chat.
Salinan juga menyertakan langkah pemasangan dan aturan keamanan.
Yang Anda dapatkan
Contoh keluaran dari satu eksekusi. Bukan pembuatan langsung.
Apakah model kecil menggantikan model besar di bot dukungan?
Jawaban singkat
- Model kecil sudah cukup untuk klasifikasi dan jawaban lini pertama.
- Hambatannya kualitas pengambilan, bukan ukuran model.
- Tim yang beralih melaporkan biaya per tiket lebih rendah, bukan tingkat penyelesaian lebih tinggi.
| Klaim | Sumber | Tanggal |
|---|---|---|
| Kualitas pengambilan menentukan kualitas jawaban | https://example.com/rag-eval | 2026-10-12 |
| Biaya per tiket terselesaikan turun 38% | https://example.com/support-case | 2026-09-28 |
Titik sumber tidak sepakat
Benchmark vendor hampir setara; uji independen masih menemukan celah pada pengembalian dana bertahap.
Masih tidak diketahui
Apakah celah menutup dengan alat lebih baik atau perlu model lebih besar.
Panggilan persisnya
Untuk developer: alur kerja yang sama sebagai kode, sesuai urutan eksekusi.
Tampilkan panggilan API asli
Tanya web
Chat mencari web, memeringkat sumber, menulis jawaban, dan mengembalikan resource yang dipakai. Simpan tiga teratas: setiap langkah berikut mengikuti salah satu tautan. Helper mengirim kunci sekali dan melempar error di luar 2xx.
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 }[] }; }; export async function answer(question: string) { const chat = await felo<ChatData>("/v2/chat", { query: question }); return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) }; }Contoh keluaran
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }Unduh halaman di balik jawaban
Kutipan tidak cukup untuk brief. Unduh halaman sebagai Markdown dengan mode baca, agar kutipan dan judul bertahan tanpa gangguan navigasi. Meminta URL yang sama lagi bisa memakai cache ekstraksi.
research.ts type ExtractData = { data: { content: string } }; const pages = await Promise.all( sources.map((source) => felo<ExtractData>("/v2/web/extract", { url: source.link, output_format: "markdown", with_readability: true, with_cache: true, }).then((page) => ({ ...source, content: page.data.content })), ), );Contoh keluaran
// pages[0].content "# Example Article\n\nExtracted article content…"
Tambahkan apa kata X
Berita meliput pengumuman; X menunjukkan apa yang orang temui dalam praktik. Cari tujuh hari terakhir dan simpan penulis serta waktu agar brief bisa mengatribusikan setiap klaim. Naikkan
limituntuk memperluas; setiap halaman hasil punya cursor.research.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; }[]; }; }; const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000); const social = await felo<XData>("/v2/x/tweet/search", { query: question, limit: 10, since_time: since, });Contoh keluaran
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }Arsipkan bukti di LiveDoc
Buat LiveDoc dan tambahkan sumber sebagai resource URL. API mendeduplikasi URL yang sudah dilihat dan mengembalikan resource id per URL, jadi pertanyaan berikutnya bisa menelusuri bukti yang sama tanpa mengunduh ulang.
research.ts type LiveDocData = { data: { short_id: string } }; const doc = await felo<LiveDocData>("/v2/livedocs", { name: `Research: ${question.slice(0, 60)}`, description: "Sources collected while answering the question", }); await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, { urls: sources.map((source) => ({ url: source.link, title: source.title })), }); console.log(doc.data.short_id); // keep this for later queriesTanya ulang buktinya
Ini manfaatnya: pertanyaan berikut melakukan pencarian semantik pada LiveDoc, bukan web terbuka. Berikan
resource_idshanya untuk membatasi ke subset yang dikenal.research.ts type Retrieved = { data: { title: string; content: string; score: number }[]; }; async function ask(livedoc: string, query: string) { const hits = await felo<Retrieved>( `/v2/livedocs/${livedoc}/resources/retrieve`, { query }, ); return hits.data.filter((hit) => hit.score >= 0.7); }Contoh keluaran
[ { "title": "…", "content": "…", "score": 0.92 } ]
Termasuk
- Jawaban bersumber dari Chat API dan halaman di baliknya
- Ekstraksi halaman lengkap dalam Markdown untuk sumber terkuat
- Post X dengan penulis dan tanggal sebagai sinyal praktisi
- LiveDoc yang menjaga bukti bisa ditelusuri untuk pertanyaan berikutnya
Yang tidak dilakukan
- Hanya sumber publik; halaman berbayar atau login bisa gagal
- Cakupan X adalah sinyal, bukan survei representatif
- Tanpa wawancara, data privat, atau basis data berbayar
- Saat bukti tipis, brief menyebutnya alih-alih mengisi celah
- Satu eksekusi per prompt; penjadwalan ada di agent atau cron Anda
Pertanyaan
Dari mana sumbernya?
Chat API mengembalikan halaman yang dipakai, Web Fetch mengubah yang terkuat menjadi Markdown, dan X Search menambah post bertanggal dari praktisi. Setiap item menyimpan URL.
Bisa riset pasar di luar teknologi?
Bisa. Ganti kolom cakupan dengan pasar Anda. Pasar niche mungkin punya lebih sedikit sumber publik; brief menandai celah itu alih-alih menebak.
Apakah bukti tersimpan setelah eksekusi?
Ya, jika langkah LiveDoc berjalan. short_id yang dikembalikan memungkinkan pertanyaan berikutnya menelusuri halaman yang sama tanpa mengunduh ulang.
Berapa biaya satu brief?
Ditagih dalam kredit sesuai pemakaian; tarif saat ini ada di halaman harga. Prompt meminta persetujuan sebelum mengeluarkan biaya.
Bisa dijalankan setiap minggu?
Bisa, tetapi prompt ini berjalan sekali. Letakkan penjadwalan di agent atau cron yang menjalankan alur yang sama.
Bagaimana jika sumber di balik paywall?
Dilewati dan ditandai tidak tersedia. Brief tidak pernah mengisi celah dengan fakta atau kutipan yang dibuat-buat.
Alur kerja terkait
Terbitkan ringkasan berita AI harian yang benar-benar dibaca tim
Dapatkan ringkasan bersumber, tambahkan diskusi praktisi di X, ambil transkrip video, susun edisi Markdown, dan arsipkan di LiveDoc.
Buka alur kerjaKantorUbah halaman riset menjadi presentasi
Ekstrak halaman, simpan sebagai konteks LiveDoc, biarkan PPT Task API membangun deck, dan tanyakan sampai tautan selesai.
Buka alur kerjaDukunganJawab pertanyaan dukungan dari dokumentasi Anda sendiri
Buat LiveDoc, muat pusat bantuan dan runbook internal, ambil bagian yang menjawab tiket, dan biarkan model menjawab hanya dari bukti itu.
Buka alur kerjaSesuaikan
Resep yang sama, disesuaikan dengan cara Anda benar-benar mengirim.
Tulis brief ke file
Gabungkan jawaban, kutipan halaman, dan kutipan X menjadi Markdown lalu berikan ke alat laporan atau commit ke repo docs. Jaga tautan sumber di dekat klaim — brief bernilai sebesar kutipannya.
Jalankan terjadwal
Bungkus `answer()` dalam cron dan tulis setiap brief ke file bertanggal. LiveDoc yang sama mengumpulkan sumber, minggu keempat menjawab dengan bukti tiga minggu pertama.
Lewati LiveDoc
Jika sudah punya basis data, simpan jawaban chat dan halaman yang diekstrak di sana. Langkah LiveDoc untuk pencarian, bukan penyimpanan default.
Lanjut
Halaman referensi di balik resep ini dan langkah berikutnya.