AI PLAY玩法更新持续收录
← 回到更新流

2026-09-09 · 原文发布日

挖竞品测评视频评论区,自动归类六大购买异议

每周一自动运行:用Bright Data抓取指定竞品YouTube测评视频的热门或最新评论(不需要YouTube API配额),代码规则把每条评论归入价格、性能、复杂度、缺功能、迁移、信任六类异议,并提取评论者提到的替代产品名,按声量和点赞排序后选代表性原话,再由OpenAI为每类写一句洞察和整体总结,结果逐类写入Google Sheets并把摘要推到Slack。

原文要点

这是n8n.io上的免费工作流模板(编号19404,Daniel Shashko发布)。流程每周一早晨定时或手动启动,从设置节点读取YouTube视频URL列表,调用Bright Data数据集接口抓取评论(不用YouTube API配额),轮询抓取完成后下载快照;代码节点把评论按关键词规则归入价格、性能、复杂度、缺功能、迁移、信任六类异议并提取观众提到的替代产品名,按评论数和点赞数排序选出代表原话,OpenAI为每类写一句洞察加整体总结,逐类追加到Google Sheets,摘要推送到Slack频道。

这次做成什么

在n8n里搭一条每周自动运行的竞品评论异议分析线:抓竞品测评视频评论→规则分类→AI写洞察→落表并推Slack。因模板无工作流文件下载,本站给出独立设计的等价练习方案,界面节点名以n8n实际版本为准。

准备什么

  • n8n实例(云端或自托管,可新建空白工作流)
  • Bright Data账号及API Token(HTTP Header Auth凭据)
  • OpenAI API Key(用于生成洞察文字)
  • Slack工作区及可发消息的Bot凭据与目标频道
  • 一个已建好的Google Sheet,含run_date/theme/comments/likes/share_pct/top_quote六列
  • 3至5个竞品YouTube测评视频链接(练习可用公开视频)

具体怎么做

  1. 配置Settings节点与四个凭据

    新建工作流,第一个节点放Edit Fields(Set),命名为Settings,写入字段:video_urls(逗号分隔的视频URL)、comments_per_video(如100)、sort_by(top或newest)、min_comment_chars(如20)、sheet_url。在Credentials里分别创建Bright Data的Header Auth(名称Authorization,值Bearer 你的Token)、OpenAI、Slack、Google Sheets OAuth2四条凭据,并在对应节点选中。

  2. 加触发器并触发Bright Data抓取

    在Settings前加Schedule Trigger,设为每周一上午执行(练习阶段用Manual Trigger手动跑)。Settings后接HTTP Request节点:POST到Bright Data的数据集采集接口,body传入视频URL列表、每视频评论数和排序方式;请求头自动带Bearer凭据。响应里记下snapshot id。

  3. 轮询并下载评论快照

    再加一个HTTP Request轮询抓取状态,接IF节点判断状态是否为ready,未ready则Wait节点等待后回环重试;ready后用HTTP Request下载快照JSON。接Code节点做过滤:去掉长度小于min_comment_chars的评论,按评论ID去重,并把返回错误或无评论的视频记入crawl_gaps数组随结果下传。

  4. 运行六类异议分类代码

    接一个Code节点粘贴下方分类代码:对每条评论做小写关键词匹配,命中则归入对应主题(一条评论可属多类),并用正则提取"switched to X / 换成了X"等句式里的替代产品名;随后按主题统计评论数、点赞总和、占比share_pct,各取点赞最高的一条作为top_quote,输出每主题一行的数组。

  5. OpenAI写洞察并落表推Slack

    把六类统计结果传给OpenAI Chat节点,用下方提示词让模型为每类写一句洞察和一段整体总结。之后Google Sheets节点选Append操作,把run_date、theme、comments、likes、share_pct、top_quote逐行写入你的表;最后Slack节点向目标频道(如#product)发一条消息,包含整体总结、各主题声量、top quote、被点名的替代产品和crawl_gaps提示。

  6. 端到端跑一次并核对

    用下方合成评论CSV在Code节点里先行演练分类逻辑,确认六类都有输出后,再真实触发一次完整流程:检查Sheet是否新增六行、Slack摘要是否包含代表原话与抓取缺口说明,确认无误后把Schedule Trigger激活。

可直接复制的材料

六类异议分类与统计代码(Code节点用)

本站独立编写的等价实现,非原作者代码;关键词表可按你的行业增补。

// 输入:items 每项含 {id, text, likes, videoId}
const RULES = {
  price: ['expensive','too much','price','pricing','cost','贵','太贵','价格','订阅费'],
  performance: ['slow','lag','crash','bug','慢','卡','崩溃','闪退','加载'],
  complexity: ['confusing','hard to use','learning curve','complicated','复杂','难用','上手','看不懂'],
  missing_features: ['missing','wish it had','no support for','doesn't have','缺少','没有这个功能','希望支持'],
  switching: ['switched to','moved to','migrated','换到','换成了','迁移到','改用'],
  trust: ['scam','privacy','security','trust','data leak','隐私','不安全','泄露','不放心']
};
const ALT_RE = /(?:switched to|moved to|换到|换成了|改用)\s*([A-Za-z0-9\u4e00-\u9fa5 ._-]{2,30})/i;
const stats = {};
for (const key of Object.keys(RULES)) stats[key] = {theme:key, comments:0, likes:0, top:{text:'',likes:-1}, alternatives:new Set()};
for (const item of $input.all()) {
  const t = (item.json.text||'');
  const low = t.toLowerCase();
  const m = t.match(ALT_RE);
  for (const [key, words] of Object.entries(RULES)) {
    if (words.some(w => low.includes(w.toLowerCase()))) {
      const s = stats[key];
      s.comments += 1;
      s.likes += (item.json.likes||0);
      if ((item.json.likes||0) > s.top.likes) s.top = {text:t, likes:item.json.likes||0};
      if (m) s.alternatives.add(m[1].trim());
    }
  }
}
const total = Object.values(stats).reduce((a,s)=>a+s.comments,0) || 1;
return Object.values(stats).map(s => ({json:{
  run_date: new Date().toISOString().slice(0,10),
  theme: s.theme,
  comments: s.comments,
  likes: s.likes,
  share_pct: Math.round(s.comments/total*1000)/10,
  top_quote: s.top.text,
  alternatives: [...s.alternatives].join(', ')
}}));

OpenAI洞察提示词

{{ $json }}处接入上一步Code节点输出;可按需改为英文输出。

你是产品竞争情报分析师。下面是某竞品测评视频评论区按六类异议(价格price、性能performance、复杂度complexity、缺功能missing_features、迁移switching、信任trust)统计出的数据,每类含评论数comments、点赞总数likes、占比share_pct、代表性原话top_quote和被观众提到的替代产品alternatives。请用中文输出:1)为每个有评论的类别写一句不超过40字的洞察,必须引用该类数据;2)写一段不超过120字的整体总结,指出声量最高的两类异议和对我们的产品启示;3)如alternatives非空,单独列一行"被提及的替代产品"。只输出这三部分,不要寒暄。

数据:
{{ $json }}

合成测试评论数据

本站虚构练习数据,可在Code节点演练分类;真实运行时由Bright Data快照替代。

id,text,likes,videoId
c1,"太贵了,一年订阅费比我预算高一倍",42,vidA
c2,"app经常崩溃,导出大文件就闪退",35,vidA
c3,"界面太复杂,新手完全看不懂",18,vidA
c4,"缺少API接口,希望支持自动化",27,vidB
c5,"我已经换成了NovaCRM,迁移很顺利",51,vidB
c6,"担心隐私问题,不知道数据存哪",12,vidB
c7,"加载特别慢,等半分钟才出报表",22,vidB
c8,"价格还行就是功能少,没有批量导入",9,vidA

输入与输出示例

本站虚构演示,未真实运行,数字由合成数据按代码逻辑推得。

输入

video_urls为两条虚构竞品视频vidA/vidB,comments_per_video=100、min_comment_chars=10;用上方8条合成评论代替真实抓取结果喂入分类代码。

对应输出

分类统计关键行示例:{theme:'switching',comments:1,likes:51,share_pct:12.5,top_quote:'我已经换成了NovaCRM,迁移很顺利',alternatives:'NovaCRM'};performance类comments=2、likes=57、share_pct=25.0;price类comments=2、likes=51、share_pct=25.0;missing_features类comments=1、likes=27、share_pct=12.5。OpenAI节点据此输出如"整体总结:价格与性能两类异议声量最高(各占25%),观众对订阅费用和运行稳定性不满,已有人迁移到NovaCRM,建议评估定价并优先强化导出稳定性。",Sheet新增六行,Slack收到含top quote和NovaCRM点名的摘要。

做完检查这些

  • Schedule Trigger设为每周一执行,且Manual Trigger可单独手动触发整流
  • Code节点输出恰好覆盖六个主题键,share_pct合计约100%,top_quote取该类点赞最高评论
  • Google Sheets每次运行新增六行且列顺序为run_date/theme/comments/likes/share_pct/top_quote
  • Slack消息中同时出现整体总结、至少一条代表原话和crawl_gaps说明
  • 长度小于min_comment_chars的评论被过滤,重复评论ID只计一次

容易卡住的地方

  • Bright Data数据集需先在其后台建好对应YouTube评论采集数据集,否则HTTP请求返回404或空快照
  • 轮询没有上限会死循环,建议给IF回环加最大重试次数(如20次)
  • 关键词分类是规则匹配,讽刺或双语评论可能误归多类,share_pct按命中计可超过按评论数占比
  • OpenAI与Bright Data均按用量计费,comments_per_video调大前先小规模试跑
  • 一条评论命中多类是模板设计如此,不要改成单分类

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Mine YouTube buyer objections with Bright Data, OpenAI, Google Sheets and Slack
原作者
Daniel Shashko
原始发布日期
2026-09-08T16:23:57.636Z
来源
https://n8n.io/workflows/19404