抖音续火花助手

Douyin Streak Keeper · 好友火花自动续期服务

{{ sessionTag.text }} 运行中…
{{ whoInitial }} {{ whoName }} {{ whoSub }}
账号 刷新 {{ currentAuth.ok ? currentAuth.user : '登录' }}
登录凭证
{{ status.state_file_exists ? (status.session_status === 'expired' ? '已过期' : '已就绪') : '未就绪' }}
自动续火花
{{ settingsForm.auto_run_enabled ? (status.running ? '运行中…' : '已开启') : '已关闭' }}
距下次自动续火花
{{ settingsForm.auto_run_enabled ? (countdownText || '未设置') : '已暂停' }}
距下次自动补发
{{ retryCountdownText }}
今日运行
{{ todayStats.count }} 次
今日已成功
{{ todayStats.ok }} 人
今日失败
{{ todayStats.fail }} 人
今日待发
{{ pendingSendCount }} 人
首条消息额度
{{ bChannelCount }} / {{ bChannelLimit }} 条
累计执行次数
{{ status.history_count }}

今日总览(全部账号) 一眼看清每个账号今天是否续好、还差多少人、下次什么时候跑 刷新

{{ ovSummary.accounts }}
账号(启用 {{ ovSummary.enabled }})
{{ ovSummary.selected }}
今日勾选
{{ ovSummary.done }}
已续上
{{ ovSummary.pending }}
待续上

实时执行 {{ live.running ? '正在运行中…' : '最近一次运行过程' }} · 账号 {{ live.account || accountId }} 完成明细 →

{{ shortTime(d.ts) }} {{ liveMark(d) }}

任务已启动,等待浏览器输出…

快捷操作

漏人预警:{{ atRisk.length }} 位「已有火花」的好友当前未勾选,自动发送会漏掉它们 → {{ atRiskNames }} 去勾选 →

{{ c.label }}
关闭后定时任务不再自动发送;「立即续火花」手动触发不受影响 对无会话好友(灰行)通过 creator 通道发首条消息(高风险,单日 ≤{{ config.first_message_daily_limit || 1 }} 条)
立即续火花 模拟运行(不实际续火花) 立即刷视频 停止刷视频 {{ feedWarm.msg }} 账号体验(手动使用) 停止体验 选择 State 文件 上传登录凭证
注意:体验期间浏览器被占用,自动续火花不会启动(定时任务会一直等到你停止)。 用完请点上面的「停止体验」把浏览器还回去;直接在远程桌面关掉窗口也可以,服务会自动收尾。

登录凭证通过本机 extract_cookie.py 扫码获取,上传后服务即可自动执行续火花任务。首次使用前请完成凭证上传。

自动补录与保障 自动化内核 手动时间 每天 00:00~24:00 把勾选好友全部续上 · 首批续火花 08:00 · 保底补录 22:00 · 常规发送 23:00 收口 · 23:00~24:00 为自愈窗口,绝不跨天

单个好友发送失败时,当轮即时重试 次
自动补录:失败后按档位递增重试(建议分钟级),最多 轮;间隔档位(秒)
常规发送收口 保存策略 更多设置

这里与「设置 → 当天必达保障」是同一份配置,改哪边都生效;上方标签显示当前是由 自动化内核统一安排时间,还是按各账号手动设置的时间发送。

每日自动流程:首批续火花(默认 08:00,可在「定时设置」改时间)全量发送勾选名单 → 谁失败就按档位就近自动补录(最多 {{ settingsForm.auto_retry_max }} 轮,补成功即停)→ 保底补录(默认 23:00,只补“当天还没续成功”的人) → 超过 {{ settingsForm.retry_deadline }} 不再补录;00:00 后新的一天从勾选名单重新开始,天然闭环。
手动「立即续火花」强制真实全量发送,不受“同日已成功”跳过限制(自动轮次才自动跳过,避免重复打扰)。 注意:登录失效 / 触发风控时自动停止补录 —— 这是护号而非放弃,重新扫码后自动恢复。

上次执行 {{ fmt(status.last_run.at) }} 完整过程 →

成功 {{ status.last_run.ok.length }} 人: {{ n }}
失败 {{ status.last_run.failed.length }} 人: {{ f.name }}
跳过 {{ status.last_run.skipped.length }} 人: {{ s.name }}
自动补录已安排:{{ lastRunFailedCount }} 人本轮未成功。系统会按档位递增自动就近补录: 第 1 轮约 5 秒、第 2 轮约 10 秒、第 3 轮约 15 秒…(最多 {{ settingsForm.auto_retry_max }} 轮,补成功即停)。 若仍未全部成功,交给当天 23:00 保底补录统一兜底(最晚至 {{ settingsForm.retry_deadline }},绝不跨天)。 补录过程会作为一次新运行出现在「续火花记录」里。若想立刻重试: 立即补发

续火花记录 每次运行的执行过程全程留痕,按天追溯(保留最近 90 次)

刷新记录

该月份暂无运行记录(真实/模拟都不含时请切换月份或清空筛选)。

还没有运行记录:点「立即续火花」或等定时任务执行后,这里会按次展示每一步执行过程。

数据总览 按每天 / 每周 / 每月统计真实运行与发送结果(不含模拟运行)

按天 按周 按月 刷新 显示最近 {{ statsGroups.length }} 个{{ dimUnit }}
真实运行次数
{{ totalStats.runs }} 次
累计成功发送
{{ totalStats.ok }} 人
累计失败
{{ totalStats.fail }} 人
整体成功率
{{ totalStats.rate !== null ? totalStats.rate + '%' : '—' }}

还没有可用于统计的发送记录:点「立即续火花」或等定时任务执行后,这里会自动生成趋势图与每日/周/月统计。

统计洞察 逐日成功率 · 失败原因 Top · 连续火花天数 Top(当前账号) 刷新

逐日成功率(近 {{ insDays }} 天)

{{ d.date.slice(5) }} {{ d.rate === null ? '—' : d.rate + '%' }} 成功 {{ d.ok }} / 失败 {{ d.fail }} / 运行 {{ d.runs }} 次

暂无真实运行记录。

失败原因 Top

{{ i + 1 }} {{ f.reason }} {{ f.count }} 次 · 涉及 {{ f.people }} 人 {{ f.count }}

暂无失败记录。

连续火花天数 Top

{{ i + 1 }} {{ s.display_name }} 连续 {{ s.streak_days }} 天 {{ s.streak_days }}

暂无火花数据,先「同步联系人」拉取火花天数。

好友台账 共 {{ ledger.length }} 人 · 已勾选 {{ ledgerSelectedCount }} 人

同步联系人 采集抖音号 保存勾选 导出 CSV 导入 CSV 添加

最近采集:{{ fmt(harvestLast.at) }} · {{ harvestLast.count }} 条映射

获取失败:{{ ledgerError }},可手动添加好友后保存勾选。

台账为空:点击「同步联系人」从抖音聊天列表拉取(含火花天数),或手动添加好友后保存勾选。勾选即续火花目标。

灰行 = consumer 私信无会话(自动识别,勾选默认跳过,不会被通道 A 发送);如需发送请开启「允许首条消息」走通道 B。

当前显示 {{ ledgerFiltered.length }} / {{ ledger.length }} 人

将打开创作者中心好友列表,滚动采集全部好友的抖音号(拦截 user_detail 接口,只读、不发送消息),约需 1~2 分钟。

采集频率建议:每周 1 次或手动触发,避免频繁操作触发风控。

消息模板 每行一条,每次随机抽一条;共 {{ messagesList.length }} 条

{昵称}→对方显示名 · {星期}→今天星期几 · {日期}→如 9月5日 · {日期长}→如 2026-09-05
例:「{昵称},{星期}也要开心呀」发送时会自动替换成对方名字和当天星期,同一句每天也不重样
保存 随机抽一条试发 {{ samplePreview }}

定时设置 只放「什么时候发」;发送节奏 / 拟人化 / 保活养号 / 通知 / 运行环境都在左侧「设置」页

默认 08:00:到点把勾选名单全量发送一轮 默认 22:00:只补“当天还没续成功”的人(当天已成功者自动跳过);留空 = 关闭。建议设在 23:00 之前 —— 23:00~24:00 要完整留给自愈窗口(排障 + 兜底),这样所有兜底就不会挤在同一小时里互相抢锁 到点后 0~N 秒内随机执行(默认 15 秒),避免“像机器一样准点” 0 = 关闭(用上面的秒级抖动)。设为 N 分钟后,会在到点后的 0~N 分钟内随机选出真正开始时刻,把发车时间打散;受当日补录截止约束,绝不会跨天 留空 = 沿用工作日的「首批续火花时间」 留空 = 沿用工作日的「保底补录时间」 这些日期改用上面的「周末时间表」,但照常发送 格式「分组名=HH:MM」。到点只发该分组已勾选好友;分组在「好友与消息」页设置。当天 22:00 保底补录与 23:00~24:00 自愈窗口仍会全量兜底,配错也不会漏人 固定 03:00 自动采集好友抖音号(creator 页,只读);建议每周 1 次 保存 发送节奏 / 拟人化 / 保活养号 / 通知 / 运行环境等设置,已移到左侧「设置」页。

自动化内核 全局设置 · 对所有账号生效,不是单账号的

打开后,每天「续火花助手」的所有流程都按内核排定的时刻发车:各账号的首批 / 保底补录 不会再撞车,保活 / 采集 / 养号会自动给正事让路,23:00~24:00 只做排障自愈与兜底。 关闭则退回「各账号按自己设的时间跑,撞上了再排队」。
注意:这是全局开关 —— 切换账号不会改变它,所有账号共用同一份安排。

一个硬约束:定时任务是在你设定的时刻被唤醒的,所以内核只会把发车点往后排开、 不会提前替你设的时间。排班结果随时可在「智能编排」页查看。

配置项 读取失败 共 {{ cfgItemsTotal }} 项 · 全部由后端定义,后端新增的配置项会自动出现在这里

重新读取 保存全部 改动即自动保存(停止输入 1 秒内落盘,失焦立刻落盘);「已自定义」表示该账号单独设过值。 最后保存 {{ cfgSavedAt }}

每次保存只提交改动的那一项(增量保存),不会动其它任何设置 —— 这也是"改一个开关、别处配置却没了"这个老问题的根治办法。

{{ g.label }} 共 {{ (g.items || []).length }} 项

{{ it.label }}

{{ g.desc }}

输入中… 未保存 已自定义
{{ it.help }} {{ condHint(it) }}
立即刷视频 停止刷视频
{{ feedWarm.msg }} 单独开一次浏览器只刷视频、不发任何消息。手动点击优先级最高:不受上面的开关与「临近发送时段不刷」限制。
发送测试通知
选邮箱模板会自动填入服务器 / 端口 / 加密方式;改完先保存,再点「发送测试通知」—— 收到即说明渠道可用。SMTP 授权码在邮箱后台开启 SMTP 服务后生成(不是登录密码)。

登录会话 「账号名 + 密码」登录后产生的凭证 · 主访问令牌不在此列

当前身份: {{ currentAuth.user }}({{ currentAuth.kind_label }}) 未登录 权限:{{ currentAuth.scope_label || '—' }} 有效至 {{ fmtTs(currentAuth.expires_at) }}

这里列出所有正在生效的登录 —— 每台设备登录一次就多一条。 在别人电脑上登过、或怀疑某个凭证泄露了,直接在这里注销: 被注销的浏览器需要重新登录,访问令牌不受影响。

刷新 注销全部登录 共 {{ authSessions.length }} 个登录会话

登录用户 「账号名 + 密码」登录的用户 · 在这里增删改,并分配能管理哪些抖音账号

登录用户不再需要写进 .env(.env 只保留管理员访问令牌): 密码以哈希保存到 data/auth_users.json,在这里管理即可,改完立即生效。 未分配 = 不能管理任何账号;打开「与管理员齐平」则该用户可管理全部抖音账号 (但新建/删除账号、注销会话等系统设置仍只有管理员能做)。

新增用户 刷新 共 {{ scopeUsers.length }} 个登录用户

每日汇总日报 每天固定时间,把「全部账号」当天的续火花结果汇总成一封通知(全局设置,跨账号汇总)

与「每轮执行报告」互补:日报每天只发一封,用于一眼看清全局 服务器时区;建议设在常规收口时刻(默认 23:00)之后,如 23:50 复用该账号已配置的通知渠道(SMTP / Server酱 / Bark / Webhook) 刷新预览 立即发送日报 保存
{{ (digestPreview && digestPreview.title) || '当前汇总预览' }} 生成于 {{ digestPreview.generated_at }} · 账号 {{ digestPreview.accounts }} 个(启用 {{ digestPreview.enabled_accounts }}) 点击「刷新预览」查看当前各账号状态
暂无预览数据,点「刷新预览」重新读取。

智能编排 {{ orchPlan.day || '' }} · {{ orchPlan.daytype_label || '' }}

1
采用下面的时间表
只改「几点发」,不改发给谁、不改发什么;随时可以在「定时设置」里手动改回。
{{ orchPendingCount ? ('一键采用(改 ' + orchPendingCount + ' 个时段)') : '无需调整' }}
2
(可选)以后都交给内核安排?
打开后:每天的时间由内核自动排、保活与养号自动给正事让路、23 点后只做兜底重试。 不开也完全能用 —— 做完第 1 步,时间就已经是错开的了。
3
到这里就完事了
每天实际怎么跑,看上面的表即可。
本页下方还有两块进阶功能,不看也不影响使用: 「多账号时间总览」= 把各账号的定时配置摊在一张表里看(并带一键错峰); 「一键优化参数」= 把发送节奏、补录档位等一次调到推荐值。 最下方是「高级设置」(兜底时段等)与「运行锁体检」。

每个账号今天的时间表

含这个账号当天要做的全部事情:续火花、登录态保活、顺带刷视频、采集。 「说明」列写的就是为什么排在这个点。

{{ g.name }} {{ g.items.length }} 项 今天还需续火花 {{ g.items.filter((i) => i.pending).reduce((n, i) => n + (i.pending_count || 0), 0) }} 人
重新算一遍 每天 {{ orchPlan.heal_window.start }} ~ {{ orchPlan.heal_window.end }} 是「兜底时段」: 到点还没续上的人会在这段时间反复重试,保证 0 点前收尾。

时间调整 每天几点开始发、几点兜底补、多个账号之间会不会撞车

{{ tpPlain.title }}

{{ tpPlain.desc }}

{{ timeplanRows.length }}
参与定时的账号
{{ tpFirstTimes }}
第一批发车时刻
{{ tpLastTimes }}
兜底补录时刻
{{ tpDeadlineTimes }}
之后当天不再补
第一批 到点把当天勾选的好友全量发一轮 兜底补录 只补当天还没续成功的人,已成功的自动跳过 之后不再补 超过该时刻当天就不再启动新补录,消息绝不跨天

每天的实际安排 各账号按预计耗时依次排队,上一个跑完下一个再发,不会同时抢浏览器

{{ r.name }}{{ r.id }} 停用 自动运行已关 第一批 {{ r.schedule_time || '未设' }} 兜底 {{ r.schedule_time2 || '关闭' }} {{ r.retry_deadline }} 之后不再补 {{ r.keepalive_enabled ? '保活:每 ' + r.keepalive_interval_hours + ' 小时刷新一次登录态' : '登录态保活已关闭' }} · {{ r.schedule_harvest_day !== 'off' ? '每周' + tpWeek(r.schedule_harvest_day) + '扫一遍好友' : '不每周扫好友' }}
{{ t }}
暂无账号数据。

手动改时间 一般不用动;改完点该行「保存本账号」立即生效

直接改下面每个账号的「第一批 / 兜底补录」时间即可。出现红色提示说明配置有问题(例如兜底时间没有晚于第一批),照提示调一下就好。

账号撞车时怎么排队 多个账号设了同一个时间点时,它们共用同一个浏览器,只能一个接一个地跑

打开「自动排队」后,到点那一刻,排在前面的账号先跑,后面的账号自动往后挪几分钟依次发车; 不会改动你设置的时间,关掉开关就立刻恢复原样。

推荐开启:多个账号撞在同一时刻时自动依次往后挪,谁都不耽误 分钟:上一个账号跑完后,隔这么久再发下一个,给收尾留余量 分钟:防护上限,避免某个账号被推得太晚、挤掉当天的补录时间 重新检查一次 {{ tpPlan.summary.conflicts ? '发现 ' + tpPlan.summary.conflicts + ' 处撞车' : '没有撞车' }}
想看看具体是怎么排的?(点开看明细)
{{ dt.label }}({{ dt.slots.length }} 个时段)
{{ c.at }} 前后有 {{ c.account_count }} 个账号撞车(已排队错开)
这几对没能挪开(受当天截止时间限制),建议手动把其中一个的时间改掉: {{ r.a }}({{ r.a_time }}) ↔ {{ r.b }}({{ r.b_time }});
{{ tpText }}

一键优化设置 综合全部账号,把「发车时间 / 自动补录与保障 / 发送节奏 / 登录态保活 / 多账号排队」一次调到最优

目标只有一个:让每个账号在当天 24:00 前,把当天勾选的好友全部续上火花。

点下面的按钮,系统会先把所有账号扫一遍,算出「现状 → 建议」的完整清单。这一步只看不改,你看过之后再决定要不要保留。

一键优化全部账号

会检查并优化

  • 发车时间:第一批 / 兜底补录 / 之后不再补的时刻
  • 自动补录与保障:单人即时重试、补录档位与轮数、最终兜底
  • 发送节奏:好友间隔、随机抖动、随机发车窗口
  • 登录态保活:是否保活、保活间隔
  • 多账号排队:多个账号撞在同一时刻时自动依次发车
  • 风控安全项:无会话好友首条消息、浏览器窗口

不会触碰

  • 登录凭证与扫码登录(按你的要求不包含在内)
  • 通知渠道的密钥(邮箱授权码 / 各推送 Key)
  • 好友名单、分组、消息模板等内容数据
  • 不会删除任何数据;改完不满意,随时可以手动改回来

上次优化的结果 {{ optApplied.at }}

{{ optApplied.message }}
{{ a.name }} {{ a.id }} {{ a.count }} 项改动
{{ c.group }}
{{ c.label }} {{ optFmt(c.from) }} → {{ optFmt(c.to) }}
当前所有参数都已经是最优,没有任何需要改动的地方 共 {{ optSummary.changes }} 项建议改动,涉及 {{ optSummary.changed_accounts }} 个账号 · 确认后才会生效

账号数据云同步 把本机这套的数据(登录凭证 / 设置 / 台账 / 运行记录)推送到云端那套,云端运行同一份代码即可接收

云端需为同版本(含 /api/sync/import) 全选 清空(全部) 登录凭证 设置(定时/消息/通知) 好友台账 运行记录/统计 浏览器档案(设备身份·推荐) 开始上传到云端 探测云端 {{ probeMsg }}

上传前云端会把同名旧文件备份为 *.bak.时间戳;登录凭证上传成功后,云端该账号自动恢复"已就绪"并继续自动运行。凭证与台账属隐私数据,请使用可信地址(内网或已配 HTTPS 的域名),并建议先「探测云端」确认版本。
重要:若某个账号没有勾选「登录凭证」,或它在本机本来就没登录过,同步到云端后显示"未登录"是正常现象——请先在本机用该账号完成登录,勾选凭证后再重新上传。
要实现"连登录授权一起 1:1 搬过去",请同时勾选「登录凭证」与「浏览器档案(设备身份)」(会把 Cookie/设备指纹等一起同步,云端不再是"新设备",登录态不易被抖音作废)。

当前正在执行 跨账号汇总 · 系统同一时间只运行一个浏览器任务,切换账号不影响它继续在后台完成 刷新 清理异常任务

正在执行:发送续火花、同步联系人、采集抖音号、网页登录、待执行自动补发等都会显示在这里;点了「停止」后任务会在当前步骤结束并安全退出。 「清理异常任务」用来清掉那些已远超最长执行时间、不可能还在正常跑的登记 —— 线程卡死时它的收尾代码永远执行不到,条目会一直挂在列表里,点停止也没有对象可停。

登录凭证

登录态有效期几天到几周。过期后在此页点「打开抖音窗口登录」,会弹出抖音登录窗口(扫码 / 密码 / 短信验证码均可完成),无需其它操作。

当前凭证: {{ status.state_file_exists ? (status.session_status === 'expired' ? '已过期,请重新登录' : '已就绪') : '未登录,请登录' }}
打开抖音窗口登录 取消登录 体检登录状态 打开远程桌面 清除登录态

「打开远程桌面」在新标签打开 noVNC,并自动带上缩放参数 —— noVNC 默认按远端桌面分辨率 1:1 显示,窗口比它小时只能看到画面一角 (「网页只显示一半」就是这个原因)。 如果你的 noVNC 挂在别的路径,直接把地址里的 /vnc.html 换成实际路径即可, 关键是别丢掉 resize=scale 这个参数。
画面四周的黑色不是故障:那是「远端桌面」本身(1600×1000)比你的浏览器窗口 大出来的背景,缩放到适应窗口时必然留边。想让它完全铺满、一点黑边也没有, 把地址里的 resize=scale 换成 resize=remote —— 远端分辨率会直接跟着你的窗口走(需要 x11vnc 带 -randr 参数, 用 deploy/bt_remote_login.sh 重装或给服务加上即可)。

「体检登录状态」会短暂打开一次页面确认当前凭证是否仍有效(约半分钟,不会发消息);学生离家前点一下,显示有效即可放心离校。

{{ scanStatus.message }}

登录二维码

(回退模式:本机无法弹出窗口时使用)请用手机抖音 App 扫码登录;
如需密码 / 短信验证码等网页验证,请在有桌面的电脑上重新发起。

智能编排 {{ orchPlan.day || '' }} · {{ orchPlan.daytype_label || '' }}

查看编排方案{{ orchPendingCount ? '(' + orchPendingCount + ' 处待调整)' : '' }} 一键优化参数

「查看编排方案」只改几点发,不改发给谁、不改发什么,随时可以手动改回。 「一键优化参数」是把发送节奏、补录档位等一次调到推荐值(同样是先预览、再应用)。

每天自动接管 全局设置 · 对所有账号生效

打开后,每天的发车时间由内核自动安排:账号之间不会再撞车,保活与刷视频会自动给正事让路, 晚上 {{ orchHealText }} 只做排障与兜底重试。不开也完全能用 —— 在上面点一次「查看编排方案」把时间调好就够了。

今天每个账号做什么 仅供查看 · 此表不做任何改动

{{ g.name }} {{ g.items.length }} 项 今天还需续火花 {{ g.items.filter((i) => i.pending).reduce((n, i) => n + (i.pending_count || 0), 0) }} 人
运行锁体检 当前运行锁:{{ orchLockDesc || '空闲' }}
兜底时段 ~ 账号最小间隔 分钟 保存

兜底时段(默认 {{ orchHealText }})用来排障与补发当天没续上的人,常规任务不排进来。 账号最小间隔决定两个账号的发车时间最多挨多近,默认 10 分钟。

下面是内核自动回收「卡住的运行锁」的记录 —— 有它就说明内核替你挡掉了一次可能持续整天的停摆。

需要调整 {{ orchPendingCount }} 个发车时间,方案如下 各账号时间已经错开,不需要任何调整

你什么都不用做。想看看每天的实际安排,关掉这个窗口即可。

运行日志 按天落盘 data/logs/YYYY-MM-DD.log · 保留最近 {{ logKeepDays }} 天

刷新日志 自动刷新 附带异常截图 导出日志(ZIP) 已有 {{ logDays.length }} 天:{{ logDays[logDays.length - 1].day }} ~ {{ logDays[0].day }}

日志按类别打了标签:[发送] [保活] [刷视频] [拟人化] [采集] [编排] —— 用下面的按钮点一下,就只看这一类(例如"今天刷了几条视频""拟人化到底有没有生效")。 这里只显示最近的日志;要查更早的某一天,用上面的「导出日志(ZIP)」。 导出包内含 manifest.json(环境 / 账号 / 时间范围)、 logs/日期.log(原始日志)、runs/日期.json(当天每一轮的结构化结果:谁成功、谁失败、原因)。 包内所有文本都会自动脱敏(Cookie / 会话票据 / 授权码一律打成 ***)。

来源: 只看: 命中 {{ logsStat.shown }} / {{ logsStat.total }} 行 清除筛选
{{ logsFiltered || logsEmptyHint }}

异常截图 自动留证 · 保留最近 {{ shotKeepDays }} 天

只在"非拍不可"的节点自动截图:登录态失效、会话列表始终加载不出来、限流 / 私信受限、 某位好友当轮重试后仍失败、判定消息未送达、本轮全员失败、运行异常, 以及"没有服务端回执、仅凭输入框清空判定成功"这类可疑的成功。 同类型 + 同好友 20 秒内只留一张,单轮最多 15 张,不会把磁盘刷爆。

刷新截图 清理 7 天前 全部清空 共 {{ shotSummary.count }} 张 · {{ shotSummary.mb }} MB
暂无异常截图(一切正常时不会产生截图)。
点击查看
{{ it.kind_label }} {{ it.name }}
{{ fmt(it.ts) }}
{{ it.reason }}
查看 下载 删除
异常截图

{{ shotViewer.kind_label }} · {{ fmt(shotViewer.ts) }}

下载图片 复制图片 复制链接 复制诊断信息 链接已带访问令牌,发到微信 / 新标签页可直接打开原图

每个账号独立登录、独立好友勾选与定时设置;在顶部下拉切换后,各页数据互不串扰。
登录某账号:切换到该账号后,在其「登录凭证」页点「打开抖音窗口登录」,会弹出抖音窗口, 在窗口内扫码 / 输密码 / 短信验证码均可;也可在服务所在电脑运行 python extract_cookie.py --account 账号ID,或直接上传 state.json。

新建账号

两种方式任选其一,并存互不影响: 账号名 + 密码(由管理员在「设置 → 登录用户」里添加), 或访问令牌(.env 的 AUTH_TOKEN,管理员用)。

登录后有效期 {{ authInfo.session_hours || 72 }} 小时,期间不用再输。 想立刻失效(例如在别人电脑上登录过),到「设置 → 登录会话」里注销即可。

适用于脚本 / 监控;长期有效,改 .env 后重启才换。