前几天群里有个朋友问我:能不能给自己关注的UP主每一条新视频都留一条带观点的评论,不是那种复制粘贴的“前排打卡”,而是真的能跟视频内容对上的走心回复。手动一条条写太费时间,我第一反应就是把整个流程自动化:用影刀6.0跑RPA流程,用大模型API负责生成评论内容。于是就有了这套“AI生成评论 + 影刀自动提交”的方案,实测跑通了在B站批量评论的完整链路。
这套方案适合谁?如果你是内容创作者,想维护自己的账号权重和互动率,或者你是运营、市场同学需要做用户反馈调研,又或者你纯粹是想省掉每天手动刷评论的时间,都可以参考。我会把从环境搭建、API接入、影刀流程编排到踩坑记录全部拆开讲,尽量做到你照着操作就能跑起来。
在开始之前必须说明:自动化评论属于平台明令限制的行为,批量刷评论存在封号风险。这篇文章的目标是帮你理解RPA和大模型结合的技术实现方式,请务必用小号测试,控制频率,遵守平台社区规则。
1. 整体设计思路:为什么是“影刀6.0 + AI”这个组合
1.1 RPA和脚本的本质区别,选影刀而不是自己写爬虫的理由
很多人第一反应是:用Python写个脚本直接调B站接口不就行了?理论上可以,但实际操作下来问题很多。B站的内部接口有签名校验,风控会检测请求频率和User-Agent,评论区接口一段时间就会调整参数。你花大力气逆向出来的东西,可能一周后就失效了。更麻烦的是,一旦频繁请求触发风控,关联账号会被限制评论,甚至直接封禁。
RPA走的是另外一条路:它模拟的是真实用户在浏览器里的点击、输入、滚动行为。对平台来说,看到的不是一堆冷冰冰的HTTP请求,而是一个“真人”在网页上操作,识别维度完全不同。影刀6.0在国产RPA里对网页元素的识别能力算是第一梯队,能捕获动态加载的评论区组件,还支持中途插入Python代码块,这对调用大模型API特别方便。
再说个实际体验:影刀的可视化流程编排让整个自动化逻辑一眼能看懂,不需要像写爬虫那样维护一堆代码。出问题时还能一步步看日志定位,这对于“偶尔跑一次,跑完就放着”的场景是最合适的。
1.2 AI在方案中扮演的角色,评论内容生成思路
RPA只解决“怎么操作网页”的问题,真正让这套方案有价值的是“评论内容从哪来”。如果只是把预设好的模板轮换着发,评论一眼就能看出来是机器人,用户根本不会互动,UP主也可能直接拉黑。
我的做法是把大模型当成“评论写手”。具体来说,每次打开一个视频页面,先提取视频标题、UP主名字、发布时间,然后把这些信息拼进一个提示词模板里,让大模型以“一个普通观众”的身份生成一条有观点、口语化、字数适中的评论。因为每一条评论都是根据当前视频信息实时生成的,所以内容天然不重复,而且能跟视频主题对得上。
这里有个很关键的思路:AI不是用来“批量复制”的,而是用来“批量原创”的。同样是自动评论,模板机的评论会被淹没,大模型生成的评论却可能真的引发UP主回复。这种互动质量上的差异,才是这个方案的核心价值。
1.3 完整链路预览
整个自动化流程可以拆成几个环节,我用文字版流程图列出来:
- 从指定UP主的主页抓取所有视频链接,存入列表
- 逐个打开视频页,提取标题、简介、UP主名称
- 将提取到的信息拼接到提示词模板,调用大模型API生成评论
- 对生成的评论做简单合规校验和长度检查
- 点击评论区输入框,填入评论内容,点击发布
- 随机延时一段时间,继续处理下一个视频
这个流程里,第1步和第2步是用影刀的网页操作指令完成的,第3步是Python代码块调用API完成的,第4到第6步又是影刀操作。影刀提供了“执行Python代码”的指令,这就是整个流程能串联起来的关键。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前必须搞懂的三件事:环境、账号与风控
2.1 影刀6.0环境搭建和浏览器扩展配置
影刀6.0安装过程不复杂,官网下载安装包,一路下一步就行。安装完以后,第一次启动会让你绑定账号,这一步必做,因为它需要把流程同步到云端。真正需要注意的地方是浏览器扩展。
影刀操作网页有两种模式:一种是内置的“网页自动化”,通过浏览器扩展来控制Edge或者Chrome;另一种是“桌面自动化”,直接操作整个屏幕上的元素。做评论这种对元素定位要求高的任务,建议用浏览器扩展模式,识别精度高得多。
我踩过的坑是:安装扩展的时候,如果浏览器里已经开了很多标签页,扩展有时候不会自动加载。解决办法是打开浏览器的扩展管理页面,找到影刀扩展手动启用,然后重启浏览器。另外B站页面会在评论区懒加载,也就是你滚动到评论区附近才会渲染输入框,所以流程里必须在点击评论输入框之前加一个“滚动到评论区”的操作,等到输入框出现再执行点击,否则会报“元素未找到”。
2.2 大模型API的选择和调用前准备
国内可用的API选择很多,我这边用的是豆包大模型API,注册后创建一个应用就能拿到API Key和Endpoint。选它的主要原因是国内直连速度快,内容审核也相对完善,生成评论这类文本足够用。当然,用其他同类API也没有问题,接口基础结构差别不大。
调用前的准备工作有三件:
- 创建应用并获取API Key,妥善保存
- 确认模型的上下文长度,至少支持4k token,因为提示词模板加返回内容需要一定空间
- 在控制台开启内容审核服务,防止生成违规文本,审核这块靠API自带的能力比你自己写关键词过滤靠谱得多
这里特别提一下:千万别把API Key写死在流程里的明文位置,影刀有变量管理,建议把Key存在全局变量里,流程分享的时候再把Key置空。虽然是个人流程,但养成好习惯能避免很多麻烦。
2.3 B站账号安全和评论频率控制策略
自动化评论最容易出问题的就是账号风控。B站对评论频率的限制比较严格,如果短时间内在不同视频下刷评论,很容易被判定为异常行为,轻则评论被吞,重则临时禁言。
我的经验是把节奏放慢,让行为像真人。具体来说:
- 两个视频之间的间隔不要固定,用随机延时,我一般设在45秒到90秒之间
- 每天跑的总量控制在20到30条以内
- 优先选择UP主当天新发的视频,不要去轰炸老视频
- 如果某条评论提交后页面提示“操作频繁”,立即停止流程,等半小时再试
这其实是在提醒一个很重要的事实:技术只是工具,能不能长期用下去,取决于你多克制。批量互动讲究可持续,不是一次性梭哈。
3. 从零搭一条自动评论流水线(核心实操)
3.1 第一步:获取视频列表并进入视频页
这个环节要做到的是:打开指定UP主的主页,把页面里所有视频链接收集起来。
影刀里可以用“打开网页”指令,直接传入UP主主页地址。主页加载完成后,需要滚动几次到底部,触发页面瀑布流加载更多视频,然后用“获取元素列表”指令选中所有视频链接元素。B站UP主主页的视频卡是一个个a标签,这个捕获起来不难。
需要注意一个问题:B站主页是单页应用,滚动加载出来的视频是动态插入DOM的。影刀捕获元素时,可能会只捕获到首屏的一部分链接。解决办法是用“循环”指令配合滚动:先抓一批链接,滚动一段距离,再抓下一批,最后去重合并。虽然看起来麻烦,但实际操作下来也就多写几个指令的事。
拿到链接列表后,下一步就是循环处理。用“重复执行列表”指令,把链接存到一个变量里,然后每次打开一个链接。这里有一个小技巧:每个视频打开之后不要立即操作,先加一个“等待元素出现”指令,等待播放器区域加载完成,这样能避免后续提取信息时页面还没渲染完。
3.2 第二步:页面信息提取和提示词组装
视频页面加载完成后,需要提取三项核心信息:标题、UP主名称、视频标签。标题在h1标签里,UP主名称在页面右侧作者信息区,视频标签一般在视频简介下面,都是静态文本,影刀的“获取元素文本”指令可以直接提取。
拿到这些信息之后,提示词组装就是一个字符串拼接的活儿。可以在影刀里直接用“设置变量”指令拼接,或者在Python代码块里拼接。我个人建议在Python里组装,因为大模型提示词里经常需要加引号、换行符,Python处理起来更舒服。
组装提示词的时候,我常用的模板是这样的:
python复制prompt = f"""你是一个B站用户,请根据下面的信息生成一条评论。
视频标题:{title}
UP主:{up_name}
视频标签:{tags}
要求:
1. 评论内容与视频主题相关,有真实观点
2. 口语化,像真实用户在弹幕区聊天的感觉
3. 字数控制在30到60字之间
4. 不要使用夸张语气,不要涉及敏感话题
5. 不要提“AI”“机器人”等内容
"""
注意Prompt里的“不要提AI”这一点很关键。大模型默认情况下倾向于在生成内容时暴露自己的身份,偶尔直接写“作为AI模型,我无法判断...”,这种内容放进评论里基本就废了。在提示词里明确约束,能大幅度降低这种概率。
3.3 第三步:调用大模型API生成评论
提示词拼好之后,接下来就是调用API。影刀里有一个“执行Python代码”的指令,可以在流程中间直接跑Python脚本。我在这里放了一段调用豆包API的代码,实际使用的是OpenAI兼容格式的接口,换其他厂商只需要改base_url和model名就行。
python复制import requests
import json
import os
api_key = os.environ.get("DASHSCOPE_API_KEY", "你的Key")
url = "你的API Endpoint"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"model": "doubao-pro-32k",
"messages": [
{"role": "system", "content": "你是一个B站用户,擅长写自然、有温度的评论。"},
{"role": "user", "content": prompt}
],
"temperature": 0.9,
"max_tokens": 200
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
data = resp.json()
# 解析返回内容,这里以主流OpenAI兼容格式为例
comment = data["choices"][0]["message"]["content"].strip()
# 去掉可能出现的换行符和多余空格
comment = " ".join(comment.split())
print(comment)
说一下这里的几个参数为什么这么设置。temperature是随机性控制,设成0.9会生成更多样化的表达,如果设成0,大模型每次都会生成几乎一样的“标准答案”,评论就失真了。max_tokens设成200完全够用,评论通常不会超过100个字。
注意一个常见问题:返回的评论内容可能包含双引号、换行符,直接填入输入框没问题,但是如果你想在影刀界面里调试查看,建议先做一个清洗处理,把换行符替换掉,不然日志里看着很乱。
3.4 第四步:定位评论输入框并提交
评论内容生成后,最核心的操作来了:把内容填进B站评论输入框,然后点击发布。
先说一下页面结构:B站的评论区在页面底部,有一个占位符样式的输入区域,点击之后才会变成可输入的textarea。所以流程是:
- 用“滚动到元素”滚动到评论区
- 点击占位符输入区域
- 等待textarea出现(用“等待元素出现”指令,超时时间设5秒)
- 用“填写输入框”填入评论内容
- 点击“发布”按钮
这里最大的坑是textarea的出现时机。如果页面加载慢,或者滚动不到位,点击占位符之后textarea可能还没渲染出来。千万不要一进页面就开始点输入框,最好先等待1到2秒,再执行点击。影刀的“等待元素出现”指令就是干这个的,在填写输入框之前先等textarea出现,确认存在再填。
另外一个细节是发布按钮的状态:B站评论按钮在输入内容为空时是灰色不可点击状态,填入内容后恢复正常。如果填入的内容在清洗后变空(比如大模型生成了空字符串),发布按钮永远点不了。所以要加一个判断:如果评论内容长度为0,跳过当前视频,直接进入下一个,避免流程卡死。
3.5 第五步:循环、延时与容错设计
每完成一条评论,流程就该进入下一个视频。循环本身很简单,但有几个细节直接决定稳定性。
第一是随机延时。影刀自带的“等待”指令是固定时间,但固定延时很容易被识别出机器行为,所以我在Python代码块里用random模块做随机延时:
python复制import random
import time
# 两个视频之间随机等45到90秒
time.sleep(random.uniform(45, 90))
第二是失败重试机制。在影刀里可以把“提交评论”的一段流程包在“重试”指令里,如果发布按钮点击后页面出现异常提示,或者发布后的反馈不对,就重新执行当前视频的评论流程,最多重试2次。注意不要无限重试,否则单个视频出问题会拖住整个流程。
第三是异常视频跳过。有些视频可能设置了关闭评论区,或者UP主自己限制了评论。点击发布后,B站可能会弹出“评论区已关闭”的提示。影刀里可以加一个“如果元素存在”的判断,检测到评论区关闭提示就跳过当前视频,进入下一个。
4. 实操中踩过的坑和排查记录
4.1 评论输入框“找不到”的几种情况
这是我在调试过程中遇到最多的问题,没有之一。排查下来主要是三种情况:
第一种是页面没滚动到评论区,元素在视口之外,影刀定位不到。解决办法是用“滚动到元素”指令显式滚动。
第二种是加载延迟。B站评论区是动态渲染的,首屏加载不会立刻出现输入框。我测试的时候发现,有时候页面加载完立刻去点输入框,点击事件被浏览器当作无效点击忽略了,因为元素虽然存在但还没绑定事件。解决办法是在点击之前加一个固定等待,我的经验是等1.5秒比较稳妥。
第三种是页面结构变化。B站网页版偶尔会更新DOM结构,之前捕获的元素路径可能失效。影刀的网页元素捕获是快速的,如果报元素找不到,重新捕获一次元素就行。这种问题偶尔出现,不用太紧张。
4.2 评论内容被吞,如何提前预判和自检
比找不到输入框更隐蔽的问题是:流程显示发布成功,但评论实际上没显示出来。这种情况通常是内容触发了B站的过滤机制,或者账号状态异常。
我想到一个办法:在提交之前,自建一个简单的文本过滤逻辑。除了依赖API自带的内容审核,我还在代码里加了一层关键词拦截,把明显违规、广告性质的词汇提前挡住。虽然不全面,但能过滤掉大部分明显问题。
另一个排查思路是检查返回的页面文案。B站发布评论成功,页面会刷新评论区列表,如果没有刷新,说明评论可能是“发出来了但被折叠”。这种情况人工去检查一次就行,如果频繁出现,就说明内容还是太模板化,需要调整提示词让生成结果更口语化。
4.3 登录验证和Cookie失效问题
影刀操作网页时,如果用的是一个没有登录的浏览器实例,打开B站视频页会处于未登录状态,发评论会被引导到登录页。所以必须在最开始做登录。
我的做法是:先在影刀打开的浏览器里手动登录一次账号,然后用影刀的“获取Cookies”指令把登录态保存下来。后续流程每次启动时,先“设置Cookies”再打开B站页面。Cookie一般能维持一段时间,但如果账号退出了,或者B站强制刷新会话,流程就会卡在登录页面。
解决方式是加一个登录状态检测:打开视频页之后,先判断页面上是否存在“登录”按钮,如果存在,就暂停流程并提示重新登录。我还在流程里加了一个手动介入步骤,一旦检测到未登录,就自动打开登录页面让我手动扫码,扫完码流程继续跑。
4.4 几个值得加上的小功能
在基础流程跑通之后,我陆续加了几个增强功能,效果很明显。
第一个是评论质量打分。在生成完评论后,再调用一次大模型,让模型用1到10分评价这条评论是否自然、是否有观点,低于7分就重新生成。虽然多了一次API调用,但能明显避免生成一堆“打卡”“学习了”这种水评。
第二个是运行日志。影刀本身有日志功能,但我额外把每次生成的评论、提交结果、延时时间都写到一个本地文件里。这样后续想分析哪些视频评论被UP主回复了,直接翻日志就行。
第三个是“只看新视频”过滤。UP主主页里很多是老视频,评论了也不会有互动。我在抓链接阶段加了一个日期判断,只保留最近5天发的视频,这样能提高评论的有效性。日期信息可以从视频元素的文本里提取,或者在进入视频页后从发布时间标签读取。
4.5 常见问题速查表
我把实际运行中遇到过的问题整理成一个表,方便你对照排查。
| 问题表现 | 可能原因 | 解决方法 |
|---|---|---|
| 打开视频页后找不到评论输入框 | 页面未滚动到评论区,或textarea未渲染 | 先滚动到评论区,等待1.5秒再点击输入区域 |
| 点击发布按钮无反应 | 评论内容为空,或按钮处于禁用状态 | 检查生成内容长度,内容为空时跳过当前视频 |
| 评论提交成功但页面不显示 | 触发内容过滤,或账号被限制 | 降低评论频率,检查内容是否过于模板化 |
| 流程跑到一半停在登录页 | Cookie失效,会话过期 | 增加登录状态检测,手动扫码后继续 |
| 大模型API返回超时 | 网络问题或API服务不稳定 | 设置30秒超时,加重试机制,最多重试2次 |
| 生成的评论偶尔出现AI口吻 | 提示词约束不足 | 在提示词中增加“不要提AI,不要写成AI回答”的明确要求 |
| 评论间隔过长,一晚上跑不了几条 | 随机延设置太长 | 调整为30到60秒之间,同时保持自然随机 |
5. 写在最后的个人体会
整套方案跑通之后,我对“RPA + AI”这个组合的感触又深了一层。纯RPA只能解决重复劳动的问题,但做出来的内容是僵硬的;纯AI有生成能力但没法操控网页。两者组合,等于给AI装上了“手”,也给RPA装上了“脑子”。这套思路不只适用于B站评论,换成小红书、抖音的批量互动,甚至自动发布文章、自动回复私信,逻辑都是一样的。
最后再分享一个建议:自动化工具是放大器,你给它什么样的策略,它就放大什么结果。如果只是追求数量,封号是迟早的事;但如果把节奏放慢,把内容质量做好,当作日常运营的辅助,那这套方案就能稳定用很长时间。你能走多远,往往不取决于工具多强大,而取决于你多克制。
