Nội dung
Biến thảo luận xã hội thành báo cáo lắng nghe hằng tuần
Tìm bài X tuần qua về thương hiệu và đối thủ, thêm bối cảnh web có nguồn, đọc các trang đằng sau và lưu mọi bản tin để tuần sau bắt đầu từ điều đã biết.
Sao chép prompt
Thay các trường trong ngoặc vuông rồi dán vào Claude Code, Codex hoặc AI có quyền truy cập terminal. Nó cài skill Felo, hỏi trước khi dùng credit và chạy quy trình.
Thực hiện bản tóm tắt lắng nghe mạng xã hội cho [thương hiệu, sản phẩm hoặc danh mục]. Từ khóa theo dõi: [thương hiệu], [tên sản phẩm], [tên đối thủ], [từ khóa danh mục]. Khung thời gian: [7 / 14] ngày qua. Múi giờ: [múi giờ]. Độc giả: [nhóm]. Nguồn được phép: chỉ bài đăng X công khai và trang web công khai. Tạo: 1. Tóm tắt năm dòng về những gì đã thay đổi trong cuộc trò chuyện. 2. Các chủ đề, mỗi chủ đề gồm điều mọi người nói, bài đăng hỗ trợ và khoảng ngày chúng bao phủ. 3. Nhắc đến đối thủ: ai được giới thiệu và trong ngữ cảnh nào. 4. Rủi ro: phàn nàn, sự cố, câu hỏi lặp lại hoặc phản ứng tiêu cực. 5. Bước tiếp theo, chia thành “trả lời ngay”, “theo dõi” và “chuyển cho sản phẩm”. 6. Danh sách nguồn với mọi bài đăng và trang, URL và ngày. Quy tắc: - Chỉ báo bài đăng và trang API trả về. Không bịa điểm cảm xúc, số tương tác, trích dẫn hay nguồn. - Coi X là tín hiệu, không phải khảo sát đại diện. Nói rõ khi mẫu quá nhỏ để kết luận. - Tách lời khách hàng khỏi bản tóm tắt của bạn và trích ngắn kèm liên kết. - Chuyển khung thời gian thành ngày bắt đầu và kết thúc rõ ràng, ghi múi giờ. - Trước khi tiêu tín dụng, hiển thị các tìm kiếm và trích xuất dự định và chờ tôi phê duyệt. - Không trả lời, đăng bài, theo dõi hay nhắn cho ai. Bản tóm tắt này chỉ đọc. - Ghi kết quả vào ./social-listening.md và tóm tắt trong chat.
Bản sao cũng gồm các bước cài đặt và quy tắc an toàn.
Bạn nhận được gì
Kết quả mẫu của một lần chạy. Không phải tạo trực tiếp.
Social listening brief — 2026-10-30
Điều gì đã thay đổi
- Phàn nàn về luồng xuất dữ liệu thành chủ đề chính.
- Đối thủ rẻ hơn được khuyên trong các luồng giá.
- Sự cố 2026-10-27 không còn được nhắc.
Chủ đề
- Xuất dữ liệu chậm từ sau cập nhật — @example_dev: “Nút xuất giờ mất vài phút cho tài liệu 40 trang.” (2026-10-28); @example_ops: “Có ai thấy xuất dữ liệu xếp hàng cuối tháng không?” (2026-10-29)
- Một lựa chọn rẻ hơn được khuyên — Example Rival xuất hiện trong các luồng hỏi giá thấp hơn
Đối thủ
Example Rival được khuyên khi hỏi lựa chọn rẻ hơn; lời khuyên về giá, không phải tính năng.
Rủi ro
Phàn nàn xuất dữ liệu xuất hiện trong luồng gần hỗ trợ, có thể lan sang hội thoại rời bỏ.
Tiếp theo
- Trả lời ngay: luồng xuất dữ liệu ngày 2026-10-28.
- Theo dõi: phàn nàn có lan sang nhóm API không.
- Chuyển cho sản phẩm: độ trễ xuất dữ liệu cuối tháng.
Nguồn
- https://x.com/example_dev/status/... — 2026-10-28
- https://example.com/export-thread — 2026-10-29
Các lệnh gọi chính xác
Dành cho lập trình viên: cùng quy trình dưới dạng mã, theo thứ tự chạy.
Hiện lệnh gọi API thật
Tìm bài trong tuần
Dùng X Search cho thương hiệu và đối thủ trong 7 ngày, giữ tài khoản và ngày.
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;Kết quả mẫu
{ "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/..." } ] } }Thêm bối cảnh web có nguồn
Hỏi Chat bối cảnh thảo luận và lấy danh sách trang có nguồn.
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);Kết quả mẫu
{ "answer": "The main threads are …", "sources": [ { "link": "https://example.com/thread", "title": "…", "snippet": "…" } ] }Đọc các trang đằng sau
Dùng Web Fetch đọc hai hoặc ba trang liên quan nhất và thêm dữ kiện, liên kết.
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 })), ), );Kết quả mẫu
// pages[0].content "# Example thread summary\n\nExtracted page content…"
Viết báo cáo theo chủ đề
Soạn Markdown với chủ đề, bài đại diện, bối cảnh, rủi ro và điểm cần chú ý.
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);Lưu và so với tuần trước
Lưu báo cáo và nguồn trong LiveDoc, tuần sau tra bản tin trước.
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));Kết quả mẫu
[ { "title": "Social listening — 2026-10-23", "content": "…", "score": 0.88 } ]
Bao gồm
- Bài X có ngày trong tuần
- Bối cảnh web có nguồn
- Tóm tắt thảo luận theo chủ đề
- Báo cáo tuần sẵn để chia sẻ
- LiveDoc với mọi bản tin
Không làm gì
- Độ phủ X không đầy đủ và không đại diện mọi người dùng
- Không kết luận cảm xúc dứt khoát
- Không tự đăng hay trả lời
- Không tin nhắn riêng hay cộng đồng kín
- Một lần chạy mỗi tuần; lịch do agent hoặc cron của bạn
Câu hỏi
Điều gì tính là nguồn?
Mỗi bài X giữ liên kết, tài khoản và ngày; bối cảnh web từ trang công khai Chat và Web Fetch. Khẳng định không nguồn không được đưa vào.
Có theo dõi đối thủ không?
Có. Tìm thương hiệu và đối thủ cùng lúc rồi nhóm trong báo cáo.
Có đo cảm xúc không?
Nó tóm tắt chủ đề và giọng điệu nhưng đánh dấu là nhận định biên tập, không khẳng định phần trăm cảm xúc chính xác.
Nhìn lại bao lâu?
Mặc định 7 ngày gần nhất cho báo cáo tuần; muốn cửa sổ lớn hơn thì đổi `since_time`.
Có chạy hằng tuần không?
Có. Đặt cùng prompt vào cron hoặc bộ lập lịch agent và ghi vào cùng LiveDoc.
Một báo cáo tốn bao nhiêu?
X Search, Chat và trích xuất trang tính theo mức dùng; giá hiện tại ở trang giá và prompt hỏi duyệt trước khi chi.
Quy trình liên quan
Biến một câu hỏi thành báo cáo nghiên cứu có nguồn
Hỏi web, lưu các trang đằng sau câu trả lời thành Markdown, thêm điều người thực hành nói trên X và giữ bằng chứng trong LiveDoc có thể tìm lại sau.
Mở quy trìnhNghiên cứuTạo bản phân tích đối thủ để đội bán hàng dùng ngay
Thu thập trang của đối thủ, bài viết xung quanh và điều người mua nói trên X, rồi dựng bản phân tích trong đó mỗi khẳng định có nguồn, ngày và trạng thái.
Mở quy trìnhNội dungXuất bản bản tin AI hằng ngày mà nhóm bạn thực sự đọc
Lấy bản tóm tắt tin có nguồn, thêm thảo luận của người thực hành trên X, lấy một bản ghi video, dựng bản tin Markdown và lưu vào LiveDoc.
Mở quy trìnhTùy biến
Cùng công thức, điều chỉnh theo cách bạn thực sự triển khai.
Chỉ một chủ đề
Giới hạn ở một lần ra mắt hoặc tranh luận để tập trung.
Thêm ý kiến YouTube
Bổ sung bằng bản ghi video nhưng đánh dấu là trải nghiệm cá nhân.
Chuyển thành báo cáo tháng
Đổi tần suất sang hằng tháng cho thương hiệu và PR.
Đi tiếp
Các trang tham chiếu đằng sau công thức và nơi đi tiếp.