Felo API PlatformFelo API Platform

วิจัย

เปลี่ยนคำถามหนึ่งข้อเป็นบรีฟวิจัยที่มีแหล่งอ้างอิง

ถามเว็บ บันทึกหน้าเว็บที่อยู่เบื้องหลังคำตอบเป็น Markdown เพิ่มสิ่งที่ผู้ปฏิบัติพูดบน X และเก็บหลักฐานใน LiveDoc ที่ค้นซ้ำได้

เวลา20 นาทีระดับระดับกลางอัปเดต2026-10-29
สำหรับใครผู้ก่อตั้งและปฏิบัติการนักวิจัยตลาดทีม GTM

คัดลอกพรอมป์ต์

แทนช่องในวงเล็บเหลี่ยมแล้ววางใน Claude Code, Codex หรือ AI ที่เข้าถึงเทอร์มินัล ระบบจะติดตั้งสกิล Felo ถามก่อนใช้เครดิต และรันเวิร์กโฟลว์

สร้างสรุปงานวิจัยที่มีแหล่งอ้างอิงสำหรับ [คำถามหรือการตัดสินใจ]

ขอบเขต: [ตลาด ภูมิภาค ภาษา] ช่วงเวลา: [30 วันล่าสุด / 12 เดือนล่าสุด] ผู้อ่าน: [ใครจะอ่าน] ความลึก: [ภาพรวมหนึ่งหน้า / สรุปฉบับเต็ม]

สร้างสรุป Markdown ที่มี:
1. คำตอบสั้นสามข้อ
2. ตารางหลักฐาน: ข้อกล่าวอ้าง ชื่อแหล่ง URL วันที่เผยแพร่
3. จุดที่แหล่งข้อมูลขัดแย้งกัน
4. สิ่งที่ยังไม่ทราบ
5. รายการแหล่งอ้างอิงทั้งหมด

กฎ:
- ทุกข้อกล่าวอ้างเชิงข้อเท็จจริงต้องมีลิงก์แหล่งที่มา แยกข้อเท็จจริง ความคิดเห็น และการอนุมานของคุณ
- ห้ามแต่งคำพูด ตัวเลข วันที่ หรือแหล่งข้อมูลขึ้นมา ถ้าข้อมูลขาดให้เขียน “ไม่มีข้อมูล” ไม่ใช่ศูนย์
- ใช้แหล่งข้อมูลปฐมภูมิก่อน ใช้ X เป็นสัญญาณจากผู้ปฏิบัติงาน ไม่ใช่หลักฐาน
- แปลงช่วงเวลาเป็นวันที่เริ่มและสิ้นสุดที่ชัดเจน และระบุเขตเวลา
- ก่อนใช้เครดิต ให้แสดงการเรียก API ที่จะทำและรอการอนุมัติจากฉัน
- ห้ามสร้างงานประจำ ส่งข้อความ หรือเผยแพร่สิ่งใด
- เขียนผลลัพธ์ลง ./research-brief.md และสรุปในแชท

สำเนายังรวมขั้นตอนติดตั้งและกฎความปลอดภัย

สิ่งที่คุณได้รับ

ตัวอย่างผลลัพธ์จากการรันหนึ่งครั้ง ไม่ใช่การสร้างสด

ตัวอย่างสรุป (ตัดตอน)

โมเดลเล็กจะแทนโมเดลใหญ่ในบอทสนับสนุนหรือไม่?

คำตอบสั้น

  • โมเดลเล็กเพียงพอสำหรับการจำแนกและตอบคำถามชั้นแรกแล้ว
  • คอขวดคือคุณภาพการค้นคืน ไม่ใช่ขนาดโมเดล
  • ทีมที่เปลี่ยนรายงานต้นทุนต่อตั๋วลดลง ไม่ใช่อัตราแก้ไขเพิ่มขึ้น
ข้อกล่าวอ้างแหล่งวันที่
คุณภาพการค้นคืนกำหนดคุณภาพคำตอบhttps://example.com/rag-eval2026-10-12
ต้นทุนต่อตั๋วที่แก้ไขลดลง 38%https://example.com/support-case2026-09-28

จุดที่แหล่งข้อมูลขัดแย้ง

เบนช์มาร์กผู้ขายเกือบเท่ากัน แต่การทดสอบอิสระยังพบช่องว่างในการคืนเงินหลายขั้นตอน

ยังไม่ทราบ

ช่องว่างจะปิดด้วยเครื่องมือที่ดีขึ้นหรือต้องใช้โมเดลใหญ่กว่า

การเรียกที่แน่นอน

สำหรับนักพัฒนา: เวิร์กโฟลว์เดียวกันในรูปโค้ดตามลำดับการทำงาน

แสดงการเรียก API จริง
  1. ถามเว็บ

    Chat ค้นเว็บ จัดอันดับแหล่ง เขียนคำตอบ และคืนรีซอร์สที่ใช้ เก็บสามอันดับแรก: แต่ละขั้นถัดไปตามลิงก์ใดลิงก์หนึ่ง ตัวช่วยส่งคีย์ครั้งเดียวและโยนข้อผิดพลาดเมื่อไม่ใช่ 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) };
    }

    ตัวอย่างผลลัพธ์

    {
      "answer": "Recent developments include …",
      "sources": [
        { "link": "https://example.com/article", "title": "…" }
      ]
    }
  2. ดาวน์โหลดหน้าเว็บเบื้องหลังคำตอบ

    ข้อความตัดตอนไม่พอสำหรับบรีฟ ดาวน์โหลดหน้าเป็น Markdown โดยเปิดโหมดอ่าน เพื่อให้การอ้างอิงและหัวเรื่องอยู่โดยไม่มีเสียงรบกวนจากเมนู ขอ URL เดิมซ้ำอาจใช้แคชการสกัด

    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 })),
      ),
    );

    ตัวอย่างผลลัพธ์

    // pages[0].content
    "# Example Article\n\nExtracted article content…"
  3. เพิ่มสิ่งที่ X พูด

    ข่าวครอบคลุมประกาศ X แสดงสิ่งที่คนเจอจริง ค้นเจ็ดวันล่าสุดและเก็บผู้เขียนกับเวลาเพื่อให้บรีฟอ้างที่มาได้ เพิ่ม limit เพื่อขยาย แต่ละหน้าผลลัพธ์มี 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,
    });

    ตัวอย่างผลลัพธ์

    { "data": { "tweets": [
      { "content": "…", "author": { "username": "…" }, "created_at": "…" }
    ] } }
  4. เก็บหลักฐานใน LiveDoc

    สร้าง LiveDoc และเพิ่มแหล่งเป็นรีซอร์ส URL API ลบ URL ซ้ำที่เคยเห็นและคืน resource id ต่อ URL คำถามถัดไปจึงค้นหลักฐานเดิมได้โดยไม่ดาวน์โหลดซ้ำ

    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. ถามหลักฐานอีกครั้งภายหลัง

    นี่คือประโยชน์: คำถามถัดไปค้นเชิงความหมายบน LiveDoc แทนเว็บเปิด ส่ง resource_ids เฉพาะเมื่อต้องการจำกัดชุดที่รู้จัก

    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);
    }

    ตัวอย่างผลลัพธ์

    [
      { "title": "…", "content": "…", "score": 0.92 }
    ]

รวมอะไรบ้าง

  • คำตอบพร้อมแหล่งจาก Chat API และหน้าเว็บเบื้องหลัง
  • สกัดหน้าเต็มเป็น Markdown สำหรับแหล่งที่แข็งที่สุด
  • โพสต์ X พร้อมผู้เขียนและวันที่เป็นสัญญาณผู้ปฏิบัติ
  • LiveDoc เก็บหลักฐานให้ค้นได้สำหรับคำถามภายหลัง

สิ่งที่ไม่ทำ

  • เฉพาะแหล่งสาธารณะ หน้าแบบเสียเงินหรือต้องล็อกอินอาจล้มเหลว
  • ความครอบคลุมของ X เป็นสัญญาณ ไม่ใช่แบบสำรวจตัวแทน
  • ไม่มีการสัมภาษณ์ ข้อมูลส่วนตัว หรือฐานข้อมูลเสียเงิน
  • เมื่อหลักฐานบาง บรีฟบอกตรง ๆ แทนการเติมช่องว่าง
  • รันหนึ่งครั้งต่อพรอมป์ต์ การตั้งเวลาอยู่ที่เอเจนต์หรือ cron ของคุณ

คำถาม

แหล่งมาจากไหน?

Chat API คืนหน้าที่ใช้ Web Fetch เปลี่ยนหน้าที่แข็งที่สุดเป็น Markdown และ X Search เพิ่มโพสต์ที่มีวันที่ของผู้ปฏิบัติ ทุกรายการเก็บ URL

วิจัยตลาดนอกเทคโนโลยีได้ไหม?

ได้ เปลี่ยนช่องขอบเขตเป็นตลาดของคุณ ตลาดเฉพาะอาจมีแหล่งสาธารณะน้อยกว่า บรีฟจะทำเครื่องหมายช่องว่างแทนการเดา

หลักฐานยังอยู่หลังรันไหม?

อยู่ หากขั้น LiveDoc ทำงาน short_id ที่คืนมาช่วยให้คำถามถัดไปค้นหน้าเดิมโดยไม่ต้องดาวน์โหลดซ้ำ

บรีฟหนึ่งชุดมีค่าใช้จ่ายเท่าไร?

คิดเป็นเครดิตตามการใช้งาน อัตราปัจจุบันอยู่ที่หน้าค่าบริการ พรอมป์ต์ขออนุมัติก่อนใช้จ่าย

รันทุกสัปดาห์ได้ไหม?

ได้ แต่พรอมป์ต์นี้รันครั้งเดียว ตั้งเวลาในเอเจนต์หรือ cron ที่รันเวิร์กโฟลว์เดิม

ถ้าแหล่งอยู่หลังเพย์วอลล์?

ข้ามและทำเครื่องหมายว่าไม่พร้อมใช้ บรีฟไม่เติมช่องว่างด้วยข้อเท็จจริงหรือคำอ้างที่กุขึ้น

เวิร์กโฟลว์ที่เกี่ยวข้อง

ปรับให้เป็นของคุณ

สูตรเดิม ปรับตามวิธีที่คุณส่งมอบจริง

เขียนบรีฟลงไฟล์

รวมคำตอบ ข้อความตัดตอนจากหน้า และคำอ้างจาก X เป็น Markdown แล้วส่งให้เครื่องมือรายงานหรือคอมมิตลงรีโปเอกสาร เก็บลิงก์แหล่งไว้ข้างข้อความอ้าง — บรีฟมีค่าเท่ากับการอ้างอิงของมัน

รันตามกำหนด

ห่อ `answer()` ใน cron และเขียนบรีฟแต่ละชุดลงไฟล์ที่ลงวันที่ LiveDoc เดียวกันสะสมแหล่ง สัปดาห์ที่สี่ตอบด้วยหลักฐานสามสัปดาห์แรก

ข้าม LiveDoc

ถ้ามีฐานข้อมูลอยู่แล้ว เก็บคำตอบแชตและหน้าที่สกัดไว้ที่นั่น ขั้น LiveDoc มีไว้ค้น ไม่ใช่ที่เก็บเริ่มต้น

หน้าเอกสารอ้างอิงเบื้องหลังสูตรนี้และก้าวต่อไป