Felo API PlatformFelo API Platform

เนื้อหา

เปลี่ยนบทสนทนาโซเชียลเป็นบรีฟฟังรายสัปดาห์

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

เวลา25 นาทีระดับระดับกลางอัปเดต2026-10-30
สำหรับใครแบรนด์และการสื่อสารการตลาดผลิตภัณฑ์การจัดการชุมชน

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

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

ทำสรุป social listening สำหรับ [แบรนด์ ผลิตภัณฑ์ หรือหมวดหมู่]

คำที่ติดตาม: [แบรนด์], [ชื่อผลิตภัณฑ์], [ชื่อคู่แข่ง], [คำสำคัญหมวดหมู่]
ช่วงเวลา: [7 / 14] วันล่าสุด เขตเวลา: [เขตเวลา] ผู้อ่าน: [ทีม]
แหล่งที่อนุญาต: เฉพาะโพสต์ X สาธารณะและหน้าเว็บสาธารณะ

สร้าง:
1. สรุปห้าบรรทัดว่าบทสนทนาเปลี่ยนอะไร
2. ธีม แต่ละธีมมีสิ่งที่คนพูด โพสต์ที่สนับสนุน และช่วงวันที่ที่โพสต์ครอบคลุม
3. การกล่าวถึงคู่แข่ง: ใครถูกแนะนำ และในบริบทใด
4. ความเสี่ยง: ข้อร้องเรียน ระบบล่ม คำถามซ้ำ หรือปฏิกิริยาเชิงลบ
5. ขั้นตอนต่อไป แยกเป็น “ตอบตอนนี้” “จับตา” และ “ส่งต่อฝ่ายผลิตภัณฑ์”
6. รายการแหล่งอ้างอิงของทุกโพสต์และหน้าเว็บ พร้อม URL และวันที่

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

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

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

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

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

สรุป social listening — 2026-10-30

สิ่งที่เปลี่ยน

  • ข้อร้องเรียนเรื่องขั้นตอนส่งออกกลายเป็นธีมหลัก
  • คู่แข่งที่ถูกกว่าถูกแนะนำในกระทู้ราคา
  • เหตุขัดข้อง 2026-10-27 ไม่ถูกพูดถึงแล้ว

ธีม

  1. ส่งออกช้าตั้งแต่อัปเดต — @example_dev: “ปุ่มส่งออกตอนนี้ใช้เวลาหลายนาทีสำหรับเอกสาร 40 หน้า” (2026-10-28); @example_ops: “มีใครเห็นการส่งออกต่อคิวช่วงสิ้นเดือนไหม?” (2026-10-29)
  2. มีการแนะนำทางเลือกที่ถูกกว่า — Example Rival ปรากฏในกระทู้ที่ถามราคาต่ำกว่า

คู่แข่ง

Example Rival ถูกแนะนำเมื่อถามหาทางเลือกที่ถูกกว่า คำแนะนำเกี่ยวกับราคา ไม่ใช่ฟีเจอร์

ความเสี่ยง

ข้อร้องเรียนเรื่องส่งออกปรากฏในกระทู้ใกล้ฝ่ายสนับสนุน อาจไปถึงบทสนทนาการเลิกใช้

ต่อไป

  • ตอบตอนนี้: กระทู้ส่งออก 2026-10-28
  • จับตา: ข้อร้องเรียนลุกลามถึงกลุ่มผู้ใช้ API หรือไม่
  • ส่งต่อฝ่ายผลิตภัณฑ์: ความหน่วงส่งออกช่วงสิ้นเดือน

แหล่งข้อมูล

  • https://x.com/example_dev/status/... — 2026-10-28
  • https://example.com/export-thread — 2026-10-29

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

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

แสดงการเรียก API จริง
  1. ค้นโพสต์ของสัปดาห์

    ใช้ X Search กับแบรนด์และคู่แข่งใน 7 วันล่าสุด เก็บบัญชีและวันที่

    listening.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 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() - 7 * 24 * 60 * 60 * 1000) / 1000);
    
    const search = await felo<XData>("/v2/x/tweet/search", {
      query: '"Acme" OR "Acme app"',
      limit: 50,
      since_time: since,
    });
    
    const posts = search.data.tweets;

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

    { "data": { "tweets": [
      {
        "content": "The export flow is slow again.",
        "author": { "username": "example_dev" },
        "created_at": "2026-10-28T09:14:00Z",
        "metrics": { "retweet_count": 4, "favorite_count": 21, "reply_count": 6 },
        "url": "https://x.com/example_dev/status/..."
      }
    ] } }
  2. เพิ่มบริบทเว็บพร้อมแหล่ง

    ถาม Chat บริบทของการพูดคุยและรับรายการหน้าพร้อมแหล่ง

    listening.ts
    type ChatData = {
      data: {
        answer: string;
        resources: { link: string; title: string; snippet: string }[];
      };
    };
    
    const context = await felo<ChatData>("/v2/chat", {
      query: "Recent customer complaints and competitor mentions around Acme",
    });
    
    const sources = context.data.resources.slice(0, 5);

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

    {
      "answer": "The main threads are …",
      "sources": [
        { "link": "https://example.com/thread", "title": "…", "snippet": "…" }
      ]
    }
  3. อ่านหน้าเบื้องหลัง

    ด้วย Web Fetch อ่านสองหรือสามหน้าที่เกี่ยวข้องที่สุดและเพิ่มข้อเท็จจริงกับลิงก์

    listening.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      sources.slice(0, 3).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 thread summary\n\nExtracted page content…"
  4. เขียนรายงานตามหัวข้อ

    ประกอบ Markdown ด้วยหัวข้อ โพสต์ตัวแทน บริบท ความเสี่ยง และจุดติดตาม

    listening.ts
    const date = new Date().toISOString().slice(0, 10);
    
    const ranked = [...posts].sort(
      (a, b) => b.metrics.favorite_count - a.metrics.favorite_count,
    );
    
    const brief = [
      `# Social listening brief — ${date}`,
      "",
      "## What the web says",
      context.data.answer,
      "",
      "## What people are posting",
      ...ranked.slice(0, 10).map(
        (post) =>
          `- @${post.author.username} (${post.created_at.slice(0, 10)}): ${post.content}\n  ${post.url}`,
      ),
      "",
      "## Pages behind the answer",
      ...pages.map((page) => `- [${page.title}](${page.link})`),
      "",
      "## Sources",
      ...sources.map((source) => `- [${source.title}](${source.link})`),
    ].join("\n");
    
    console.log(brief);
  5. เก็บและเทียบสัปดาห์ก่อน

    เก็บรายงานและแหล่งใน LiveDoc สัปดาห์ถัดไปค้นฉบับก่อน

    listening.ts
    type LiveDocData = { data: { short_id: string } };
    
    const archive = await felo<LiveDocData>("/v2/livedocs", {
      name: "Social listening archive",
      description: "One document resource per weekly brief",
    });
    
    await felo(`/v2/livedocs/${archive.data.short_id}/resources/doc`, {
      title: `Social listening — ${date}`,
      content: brief,
    });
    
    type Retrieved = { data: { title: string; content: string; score: number }[] };
    
    const previous = await felo<Retrieved>(
      `/v2/livedocs/${archive.data.short_id}/resources/retrieve`,
      { query: "what changed since last week" },
    ).then((res) => res.data.filter((hit) => hit.score >= 0.7));

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

    [
      { "title": "Social listening — 2026-10-23", "content": "…", "score": 0.88 }
    ]

รวมอะไรบ้าง

  • โพสต์ X ของสัปดาห์พร้อมวันที่
  • บริบทเว็บพร้อมแหล่ง
  • สรุปการพูดคุยตามหัวข้อ
  • รายงานสัปดาห์พร้อมแชร์
  • LiveDoc เก็บทุกฉบับ

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

  • ความครอบคลุม X ไม่ครบและไม่เป็นตัวแทนผู้ใช้ทั้งหมด
  • ไม่มีข้อสรุปอารมณ์ขั้นสุดท้าย
  • ไม่โพสต์หรือตอบกลับอัตโนมัติ
  • ไม่มี DM หรือชุมชนปิด
  • รันสัปดาห์ละครั้ง การตั้งเวลาอยู่ที่เอเจนต์หรือ cron

คำถาม

อะไรนับเป็นแหล่ง?

ทุกโพสต์ X เก็บลิงก์ บัญชี และวันที่ บริบทเว็บมาจากหน้าสาธารณะ Chat และ Web Fetch ข้อความอ้างที่ไม่มีแหล่งไม่ถูกใส่

ติดตามคู่แข่งได้ไหม?

ได้ ค้นแบรนด์และคู่แข่งพร้อมกันแล้วจัดกลุ่มในรายงาน

วัดอารมณ์ไหม?

สรุปหัวข้อและโทน แต่ระบุว่าเป็นการตัดสินของบรรณาธิการ ไม่ได้อ้างเปอร์เซ็นต์อารมณ์ที่แน่นอน

ย้อนหลังไกลแค่ไหน?

ค่าเริ่มต้น 7 วันล่าสุดสำหรับรายงานสัปดาห์ ต้องการหน้าต่างใหญ่ขึ้นให้เปลี่ยน `since_time`

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

ได้ วางพรอมป์ต์เดิมใน cron หรือตัวจัดตารางเอเจนต์และเขียนลง LiveDoc เดียวกัน

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

X Search, Chat และการสกัดหน้าคิดตามการใช้งาน อัตราปัจจุบันที่หน้าค่าบริการ และพรอมป์ต์ขออนุมัติก่อนใช้จ่าย

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

วิจัย

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

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

เปิดเวิร์กโฟลว์
วิจัย

สร้างการวิเคราะห์คู่แข่งที่ทีมขายใช้ได้จริง

รวมหน้าของคู่แข่ง ข้อมูลรอบข้าง และสิ่งที่ผู้ซื้อพูดบน X แล้วประกอบการวิเคราะห์ที่ทุกข้อความอ้างมีแหล่ง วันที่ และสถานะ

เปิดเวิร์กโฟลว์
เนื้อหา

เผยแพร่สรุปข่าว AI รายวันที่ทีมอ่านจริง

รับสรุปข่าวพร้อมแหล่ง เพิ่มการพูดคุยของผู้ปฏิบัติบน X ดึงทรานสคริปต์วิดีโอ ประกอบฉบับเป็น Markdown และเก็บใน LiveDoc

เปิดเวิร์กโฟลว์

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

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

เฉพาะเรื่องเดียว

จำกัดที่การเปิดตัวหรือข้อถกเถียงหนึ่งเรื่องเพื่อโฟกัส

เพิ่มความเห็น YouTube

เสริมด้วยทรานสคริปต์วิดีโอ แต่ระบุว่าเป็นประสบการณ์ส่วนบุคคล

เปลี่ยนเป็นรายเดือน

เปลี่ยนความถี่เป็นรายเดือนสำหรับแบรนด์และ PR

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