2026-09-03 · 原文发布日
从 Reddit 求助帖里挖软件创业机会
每天定时用 Apify 的 Reddit 抓取器搜索近一天的求助类帖子,规范化字段并与历史去重,先过滤推广和低信号内容,再把剩余帖子批量交给 Gemini 评估是否为可付费的软件机会并打分,只保留 75 分以上的结果,以帖子 ID 为唯一键写入或更新 Google Sheets,适合找创业选题的人持续收集真实痛点。
原文要点
原模板定位为免费n8n流程:每天09:00调度,用Apify Reddit Scraper抓取近一天问题导向帖子,规范化、去重并预过滤推广/低信号内容;剩余批量送Google Gemini只输出可变现软件机会JSON,解析后只留score≥75,再以Reddit post ID作唯一键追加或更新Google Sheets。需要Apify OAuth2与actor harshmaur/reddit-scraper访问权、Gemini(PaLM)凭据、Sheets OAuth2与固定列。
这次做成什么
在站内照着搭一个“Reddit痛点→Gemini评分→Sheets机会库”的最小闭环;不假设能下载原工作流,本站用一页可复现字段映射、评分提示词和合成数据做独立练习,最终得到一张只会保存高分机会的表。
准备什么
- n8n可用实例与Schedule Trigger、HTTP或Apify节点、Code节点、Google Sheets节点权限
- Apify账号OAuth2连接且可调用harshmaur/reddit-scraper,可能产生Apify用量费用
- Google Gemini(PaLM) API凭据,模型名以n8n节点可选为准不硬写
- Google Sheets OAuth2,目标表格含id,title,community,url,isOpportunity,opportunityScore,problem,solutionIdea,whyPeoplePay,evidence,category
具体怎么做
建表与触发器
在Google Sheets新建Opportunities页,首行按prerequisites列名创建;n8n添加Schedule Trigger设为每天09:00,时区用工作流时区,手动Execute先跑通。
抓取近一天求助帖
Apify节点选Reddit Scraper actor,搜索词用问题导向短语如"looking for a tool"、"is there an app that"、"how do I automate",limit先设20,时间范围last day;输出字段映射成id,title,selftext,subreddit,permalink,created_utc,score,num_comments。
规范化、去重、预过滤
Code节点把permalink补成url,community= subreddit,剔除title/selftext含"promo"、"for hire"、"giveaway"或正文少于80字符的条目;读取Sheets已有id列,凡id已存在直接丢弃,只保留新候选。
批量评分与门槛分支
把候选合并成数组传入Gemini节点,提示词要求只返回JSON数组;解析后按opportunityScore>=75且isOpportunity=true分支,低于门槛进入Discard记录不写入主表。
写入更新与回读检查
Google Sheets节点用Append or Update,match column=id;成功后回读最近3行,确认75分以上存在、低分未入库、重复id只更新不追加。
可直接复制的材料
Gemini机会评分提示词
本站独立编写;{{$json.candidates}}需按你的n8n表达式替换,Gemini模型/参数在节点内核对。
你是软件创业选题评估器。输入是Reddit帖子JSON数组,字段含id,title,community,url,text,score,comments。只分析真实用户痛点,忽略招聘、推广、玩梗、政治争吵。对每个可能可付费机会输出一个对象,字段必须为:id,isOpportunity,opportunityScore,problem,solutionIdea,whyPeoplePay,evidence,category。opportunityScore为0-100整数,至少同时满足:痛点反复出现或影响工作流、用户表达愿意节省时间/金钱、可用软件而非纯硬件解决,才给75以上。evidence必须引用帖子里的一句短原文并翻译说明。只输出JSON数组,不要Markdown,不要解释,不要给低信号帖子编造机会。输入:{{$json.candidates}}Sheets列与合成候选CSV
合成CSV仅作练习;前两条应进入评分,第三条推广低信号应被过滤,URL为虚构。
id,title,community,url,isOpportunity,opportunityScore,problem,solutionIdea,whyPeoplePay,evidence,category
t3_demo001,"每周手动汇总五个表太痛苦",r/smallbusiness,https://reddit.example/t3_demo001,,,,,,,
t3_demo002,"求一个能把发票照片变成记账分类的工具",r/freelance,https://reddit.example/t3_demo002,,,,,,,
t3_demo003,"免费送大家我的Logo求反馈",r/design,https://reddit.example/t3_demo003,,,,,,,Code节点字段映射示例
本站示例,节点名ReadSheetIds要改成你的读取节点;正则可按社群噪音增减。
const seen = new Set($items('ReadSheetIds').map(i=>i.json.id));
const out=[];
for (const item of $input.all()) {
const p=item.json;
const text=((p.title||'')+' '+(p.selftext||'')).toLowerCase();
if (!p.id || seen.has(p.id)) continue;
if ((p.selftext||'').length<80) continue;
if (/promo|giveaway|for hire|hiring|免费|推广/.test(text)) continue;
out.push({json:{id:p.id,title:p.title,community:p.subreddit,url:p.permalink?.startsWith('http')?p.permalink:'https://www.reddit.com'+p.permalink,text:p.selftext,score:p.score||0,comments:p.num_comments||0}});
}
return out;输入与输出示例
本站虚构演示,未调用Apify/Gemini;分数是练习判定,不是作者结果。
输入
两条合成候选:t3_demo001说每周花3小时把五个表复制成周报;t3_demo003是"免费送Logo求反馈"带推广词。对应输出
预过滤后只剩t3_demo001;Gemini应返回一行JSON:{"id":"t3_demo001","isOpportunity":true,"opportunityScore":86,"problem":"多表手工汇总周报","solutionIdea":"连接表格源自动生成周报草稿","whyPeoplePay":"每周节省约3小时且减少漏项","evidence":"每周手动汇总五个表太痛苦","category":"B2B自动化"},随后Sheets按id更新这一行。做完检查这些
- Schedule Trigger显示每天09:00,手动执行一次能在日志看到Apify返回条数
- Code节点输出不含已存在id、不含少于80字符或含promo/giveaway/for hire的帖子
- Gemini输出可被JSON.parse解析,且只保留opportunityScore>=75且isOpportunity=true进入主分支
- Sheets执行Append or Update后同一id不产生第二行,首次回读能看到高分机会行
容易卡住的地方
- Apify actor访问、Gemini调用和Google配额可能收费,免费模板不等于第三方免费
- Reddit搜索词太宽会抓来招聘和玩梗,预过滤词表要按噪音迭代
- Gemini偶发返回Markdown围栏,解析节点要兼容```json或直接要求仅JSON
- created_utc与last day边界可能漏跨时区帖子,练习阶段先接受近24小时窗口
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Find software startup opportunities in Reddit posts with Apify, Gemini and Sheets
- 原作者
- Yadnyesh Rana
- 原始发布日期
- 2026-09-02T17:44:40.355Z
- 来源
- https://n8n.io/workflows/19088