概述
此工作流程在 Reddit 上搜索需求信号(人们寻求工具、抱怨现有解决方案或描述未满足的需求)并按新近度进行过滤。仅包含过去 7 天的话题,确保您看到当前的需求,而不是过时的对话。结果根据参与度(点赞+评论)进行评分,以优先考虑高信号线程。
触发器
手动或计划(每天/每周)
计划
每日或每周
工作流步骤
定义需求查询
创建一个痛点查询列表,例如“X 需要工具”、“寻找 Y 的替代品”、“任何人构建 Z”。每个查询都针对特定的问题域。
通过 Scavio 搜索 Reddit
对于每个查询,请调用 Scavio Reddit 搜索。 API 返回包含标题、分数、评论计数、时间戳和 URL 的结构化线程。
按新近度过滤
丢弃超过 7 天的线程。这可确保您看到当前的需求信号,而不是存档的讨论。
按参与度评分
按综合得分对剩余主题进行排序:点赞数 + (2 * 评论)。具有活跃讨论的帖子表明需求比仅支持投票的帖子更强烈。
输出排序的需求信号
将前 20 个线程写入报告文件或数据库。每个条目都包含痛点查询、话题标题、参与度分数和 URL。
Python 实现
import requests, os, json
from datetime import datetime, timedelta
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": SCAVIO_KEY}
QUERIES = [
"need tool for invoice automation",
"looking for alternative to Ahrefs",
"anyone built a lead scoring system",
]
RECENCY_DAYS = 7
def search_demand(query: str) -> list:
resp = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "reddit", "query": query, "sort": "new"}, timeout=10)
threads = resp.json().get("organic", [])
cutoff = datetime.utcnow() - timedelta(days=RECENCY_DAYS)
fresh = []
for t in threads:
score = t.get("score", 0) + 2 * t.get("comments", 0)
fresh.append({"title": t["title"], "score": score,
"url": t.get("link", ""), "query": query})
return sorted(fresh, key=lambda x: x["score"], reverse=True)
all_signals = []
for q in QUERIES:
all_signals.extend(search_demand(q))
all_signals.sort(key=lambda x: x["score"], reverse=True)
for s in all_signals[:20]:
print(f"[{s['score']}] {s['title']} ({s['query']})")JavaScript 实现
const QUERIES = [
"need tool for invoice automation",
"looking for alternative to Ahrefs",
"anyone built a lead scoring system",
];
async function searchDemand(query) {
const resp = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "reddit", query, sort: "new" })
});
const threads = (await resp.json()).organic || [];
return threads.map(t => ({
title: t.title, score: (t.score || 0) + 2 * (t.comments || 0),
url: t.link || "", query
})).sort((a, b) => b.score - a.score);
}
const allSignals = [];
for (const q of QUERIES) {
allSignals.push(...await searchDemand(q));
}
allSignals.sort((a, b) => b.score - a.score);
for (const s of allSignals.slice(0, 20)) {
console.log(`[${s.score}] ${s.title} (${s.query})`);
}使用的平台
来自任何subreddit的社区、帖子及线程评论