Felo API PlatformFelo API Platform

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.

Waktu20 menitTingkatMenengahDiperbarui2026-10-29
Untuk siapaPendiri & operatorPeneliti pasarTim GTM

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.

Contoh ringkasan (kutipan)

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.
KlaimSumberTanggal
Kualitas pengambilan menentukan kualitas jawabanhttps://example.com/rag-eval2026-10-12
Biaya per tiket terselesaikan turun 38%https://example.com/support-case2026-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
  1. 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": "…" }
      ]
    }
  2. 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…"
  3. 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 limit untuk 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": "…" }
    ] } }
  4. 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 queries
  5. Tanya ulang buktinya

    Ini manfaatnya: pertanyaan berikut melakukan pencarian semantik pada LiveDoc, bukan web terbuka. Berikan resource_ids hanya 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

Sesuaikan

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.

Halaman referensi di balik resep ini dan langkah berikutnya.