[[ p.entry ]]
这台机器:[[ p.device.account || "(没读到号名)" ]] · [[ p.device.name ]] · 旧记录
[[ p.note ]]
C 端账号属于某个品牌,请到品牌地址登录。
这个地址是平台(SaaS)后台的地址。品牌地址会用它自己的域名与端口认出你的品牌,你不用自己选。
忘了品牌地址就找客服要一条;或者用 App 里「打开网页配置」那个按钮,它会带你到正确的地址。
用 App 里的手机号与密码登录。
第一次用:先在 App 里用激活码开通这台机器(激活码只用于开通与换机,日常登录不需要它)。
手机号与密码各 6 位以上。
看不清?点击图片换一张。
[[ loginErr ]]
上次登录时间:[[ conflict.last_login_at ? fmtTime(conflict.last_login_at) : "未知" ]]
继续登录会让另一个网页端会话下线。
(不影响手机端,手机端与网页端各自独立计一台设备)
同一个浏览器刷新/换网络不会弹这个框;
同一台电脑换一个浏览器会算另一台。
保存后立即生效。正在直播时约 25 秒内自动同步;没在播时,下次开播生效。
绑定(扫码登录)只能在手机上做:网页这一页只管"这台机器绑了哪个号", 绑不绑、什么时候绑,都要在 App 里操作。另外,某个账号一旦在网页上配过, 手机 App 里那个本机开关就不再起作用。
手机当前在「[[ platforms.active_label ]]」这个入口上(手机在线状态同步; 改另一个入口的配置不会影响它现在这一场)。
还不知道手机现在在哪个入口 —— App 下一次心跳(约 2 分钟)会上报。
这个账号还没有绑定的机器 —— 先在 App 里用激活码开通那台机器,这里就会显示它绑了哪个平台。
[[ p.entry ]]
这台机器:[[ p.device.account || "(没读到号名)" ]] · [[ p.device.name ]] · 旧记录
[[ p.note ]]
这个平台还没接入(绑不上号、也读不到弹幕)。下面的设置在接入之后生效, 现在保存了不会改变任何行为。
试运行入口:这条链只在「抖音普通直播」上做过真机验证。这里的设置会按 这个入口独立保存与下发,但整条链(登录、读弹幕、上屏)还没在电商/团购上验过 —— 别把它当成"已经跑通"。
保存后立即生效;正在直播时约 25 秒内自动同步,没在播的下次开播生效。
[[ pfErr ]]
每段话会按人设换个说法再合成,音色按段轮换、 同一段固定用同一个声音。改写过一次就记住(同一段不再花钱)。
这段会替换默认口吻,只作用于这个平台的弹幕回复; 话术播报不受它影响。
这里管你自己的红线(品牌方禁用词、平台整改点名的词), 会追加进这个平台回复指令的底线。
关键词规则本身是账号级的(左轨「关键词」里统一维护), 这里只控制这个平台怎么用它们。
下面三枚开关与「AI 自动回复」那一组是同一个开关 —— 我们只有一条回复链,没有"关键词一套、AI 一套"两套嗓子。
填了这里就按这里的台词轮播,下面的报时格式 / 模板不再生效 (前缀 / 后缀仍会加上)。支持 {hour}{minute}{period}{time}{viewerCount}; 留空 = 回到格式模板。
「完整时间」和「自定义」都按下面那条模板念; 「简洁时间」念 15:30,「仅整点」念下午三点(后两档不用模板)。
支持 {hour}、{minute}、{period}、{time};
可每行写一条,多条时按顺序轮流用(不是随机挑)。
{viewerCount}:手机按进场估算;不可靠时带它的台词整条跳过(退化纯时间)。
副播只用于 AI 语音回复、进场欢迎语音、自动报时。 话术正文永远用主播声音,不受影响。
还没选副播声音 —— 点「添加副播声音」。
暂无内容
自动发言已开启但一条文案都没有,实际不会发任何内容。
AI 不可用时用这些兜底。一行一条,逗号不算分隔符。
暂无内容
数字取自中控台页面上真实显示的那个数(不是我们按场次自增)。 要先填下面的读数选择器,否则一次都不会播 —— 读不到就不报,绝不编数字。
在中控台页面按 F12 选中那个数字 → 右键「复制 selector」→ 粘到这里。 填错不会播报(读回空就保持沉默,不会拿别的数字顶上)。
互动采集靠它进入观众端页面。分享链接、整段分享文案、 纯房间号都能直接粘 —— 短链(v.douyin.com/…)不用先展开, 手机端会自己跟一次跳转。
已识别房间号:[[ pf.room_id ]]
还没认出房间号 —— 不影响:手机端会按这段内容自己解析。
每次在这个区间内随机取值。太短听不出来,太长会显得卡顿; 建议 200~800 毫秒。
保存后,话术生成和直播即时回复都会用这里的值; 没保存过平台配置时,话术生成按默认 200–800ms / 8%,即时回复不额外改变自然停顿。
模板 一行一条,触发时随机抽一条。 不要用逗号分多条 —— 手机端按换行切,一行里的逗号是这句话的一部分。
[[ ev.help ]]
它走 AI 回复通道(会抢话术、即时播), 所以默认间隔给得很大,别调太激进。
实时改写不需要额外生成,写好的就能直接用。 按全部话术合计约 [[ pfOptions.round_minutes ]] 分钟一轮(估算)。
还没有话术 —— 先去「话术」页生成一份,回来再选。
已选 [[ (pf.rewrite_voice_keys || []).length ]] 个 (最多 [[ pfOptions.max_voices || 10 ]] 个),每一轮随机用其中一个。
没找到音色 —— 换个词搜,或先去「音色」页添加。
只用于 AI 语音回复、进场欢迎、自动报时;话术正文仍用主播声音。 勾选顺序就是轮换顺序,最多 10 个。
主推商品的信息会原样拼进 AI 提示词。
设为「主推商品」的那一条会被原样拼进 AI 的提示词(商品名 / 直播间价 / 库存 / 卖点); 自由文本提示词降级为补充说明。两者可以共存。
库存不填 = 不报库存(不是 0);填 0 会让 AI 对观众说「没货了」。
改商品(价格/库存/主推)或改提示词后,保存话术时会自动生成新音频。
| 商品名 | 直播间价 | 库存 | 核心卖点 | 操作 |
|---|---|---|---|---|
| [[ clip(row.name, 16) ]] 主推 | [[ row.price_text || "—" ]][[ row.price_unit ? " / " + row.price_unit : "" ]] | [[ row.stock === null || row.stock === undefined ? "不报" : row.stock ]] | [[ clip((row.highlights || []).join("、"), 24) || "—" ]] | |
| 没有符合筛选条件的记录 —— 还没有结构化商品。填一条能让 AI 报价、报库存都准确。 |
已到上限 50 条:新增前请先删掉不用的。
每件商品只用一条标「默认」的提示词。
| 名称 | 关联商品 | 内容 | 状态 | 操作 |
|---|---|---|---|---|
| [[ clip(row.name, 12) ]] | [[ productNameById(row.product_id) ]] | [[ clip(row.body_view || row.body, 36) ]] | 默认 备用 | |
| 没有符合筛选条件的记录 —— 还没有商品信息提示词。 |
[[ promptMeta.note ]]
话术是账号级的,改完下次开播生效。
话术是账号级的,与直播平台无关(平台字段只是分类)。改完内容下次开播实时生效。
AI 写的稿子我们会先检查一遍,不合规的不会保存。
「新增话术」里有两条路:AI 生成(给主题,一次出一条草稿,你看过、改完再存) 与自己写。保存前会检查一遍:违规词、违规例子、你填的资料、你设的「不聊的话题」。
分组是给"这条话术属于哪一类"用的(开场 / 卖点 / 促单…):它决定你以后怎么筛、 也决定将来这些稿子能不能被复用。
已经生成过音频的话术,改完正文要重新生成音频才会更新 —— 保存时我们会告诉你有几段音频因为这次修改被标记为要重新生成。
只改标题或分组不算改稿:音频念的还是那些字,不用重训。
每一版都留着(列表行内点「历史」):可以看这一版跟现在差在哪、 要不要重训 —— 改坏了照着旧版改回去就行。
[[ clip(row.summary || row.text, 120) ]]
没有符合筛选条件的记录 —— 还没有话术 —— 点「AI 生成话术」或「新建话术」。
观众问到这些词,直播机直接回你写好的话。
规则是账号级的,所有直播平台共用;手机端每次进直播/配置页会自动同步下来 (约有 2 分钟冷却)。要不要用语音回复、要不要「只用关键词回复」,在各平台配置页里单独设置。
一条规则可以写多个触发词与多条回复 —— 命中时随机抽一条,同一个问题被反复问, 答案不会像复读机。
多条规则同时命中时,优先级数字大的先答(同分按创建顺序)。
| 规则 | 关键词 | 回复 | 间隔 | 状态 | 操作 |
|---|---|---|---|---|---|
| [[ clip(row.label, 12) ]] | [[ clip((row.keywords || []).join("、"), 18) ]] | [[ clip((row.replies || []).join(" / "), 26) ]] | [[ row.cooldown_sec ? row.cooldown_sec + " 秒" : "不限" ]] | [[ row.answerable ? "开启" : "不答" ]] 待重烧 [[ row.stale_count ]] | |
| 没有符合筛选条件的记录 —— 还没有规则。点右上角「新增规则」,填触发词与回复内容。 |
改完的规则,手机端下次进直播页才更新。
手机每次开播前会自己取一次;正在播的那一场不会中途改口。
还没有商品信息提示词。
| 问题 | 会怎么答 | 来源 | 检查 |
|---|---|---|---|
| [[ clip(row.question, 12) ]] | [[ row.ignored ? "(忽略,不回答)" : clip(row.answer, 40) ]] | [[ viaLabel(row.via) ]] | [[ row.ok ? "✅" : "⛔ " + (row.violations || []).map((v) => v.matched || v.category).join("、") ]] |
[[ previewAll.summary.cost_note ]]
[[ preview.rule ? "这条命中了你的关键词规则,没有调用 AI(不占每日额度)。" : "今天还能自检 " + preview.selfcheck_remaining + " 次(自检不扣语音时长)。" ]]
本次用的商品:[[ preview.product.name ]] ([[ preview.product.price_text || "没填价格" ]];库存 [[ preview.product.stock === null ? "不报" : preview.product.stock ]])
[[ w ]]
现在还没接上 AI(用的是本地占位回答)。
占位回答只会照抄你填的资料,不会编;接上 AI 之后这里才是真的回答。
[[ canClone ? "余额充足,可以克隆" : "余额不够克隆一次(需要 2 小时)" ]]
[[ row.status_hint || row.status_label ]]
还没有你自己的音色。点右上角「克隆新音色」——录 10~30 秒清晰人声就行。
服务商还没给你开通公共音色。
[[ voicePage.note ]]
[[ voiceCheck ]]
兑卡自己来;充值、续期找客服或代理办。
一张码只有一次机会,兑过就作废。到手的是两样之一: 语音时长(不过期、可累积,生成与播出都从这里扣)或 有效期(在原来的到期日上顺延)。
账号还有余量时,续费卡兑不了(会提示你到期后再来)—— 这时候那张卡不作废,等到期那天再兑一次就生效。
兑完这里三个数字立刻更新:语音时长、有效期、下面的兑换记录。
账号已到期,播出会停。
配置还能改、账号还能用,上面那个兑换也是通的。 兑一张续费卡、或找客服续期,即刻恢复,不用重启 App。
| 时间 | 到账 | 备注 |
|---|---|---|
| [[ String(row.at || "").slice(0, 16).replace("T", " ") ]] | ¥[[ row.amount_cents ]](历史充值) [[ row.direction === "in" ? "+" : "-" ]][[ row.minutes_text ]] | [[ clip(row.reason + (row.code_hint ? "(卡密 " + row.code_hint + ")" : ""), 30) ]] |
| 没有符合筛选条件的记录 —— 还没有兑换记录。上面兑一张卡,记录会显示在这里。 |
播出按实际时长扣语音时长,播多少扣多少,没有最低消费。
断网超过 30 分钟的那一段不算钱;单场最长按 24 小时计(防长时间无人挂机)。
「来源」写的是这笔账怎么来的:手机报了结束 / 手机没报结束(按最后一次信号算)。
| 开始 | 状态 | 实际 | 按这个算钱 | 断网不计 | 来源 |
|---|---|---|---|---|---|
| [[ String(row.started_at || "").slice(0, 16).replace("T", " ") ]] | [[ sessionStatusLabel(row.status) ]] | [[ row.minutes_text ]] | [[ row.billed_text ]] | [[ row.gap_minutes ? row.gap_minutes + " 分钟" : "—" ]] | [[ sessionSourceLabel(row.source) ]] |
| 没有符合筛选条件的记录 —— 还没有播出记录。开播之后这里会显示每一场的实际时长与按它算钱的时长。 |
导出的只有「配置」,不含余额与音频。
导出的是话术库、关键词规则、商品(含它们的描述)、各平台配置(还有店铺口吻与禁区)。
余额、有效期、卡密、音色与已经生成的音频都不在导出里 —— 权益不随配置迁移,音色要去新账号重新选、音频要重新生成。
导入完成:商品 [[ importResult.created.products ]] · 店铺设置 [[ importResult.created.personas ]] · 话术 [[ importResult.created.scripts ]] · 关键词 [[ importResult.created.qa_rules ]] · 平台配置 [[ importResult.created.platform_configs ]]
跳过([[ s.section ]])[[ s.name ]]:[[ s.reason ]]
改完密码,其他设备上的登录立刻失效。
你在这台浏览器上不会掉线。
忘记密码:本系统未接入短信通道,请找客服人工重置。
[[ currentModeHint ]]
[[ draftNote ]]
保存前会检查一遍:不合规的不会保存。
[[ (voicePage.limits || {}).hint ]]
已选:[[ drawer.form.file_name ]]
上传后会生成一个只属于你的音色。
克隆声音必须有授权 —— 勾上那一句才能保存。
你写的是「怎么讲」,商品信息会自动附在后面。
那件商品的信息与知识库事实(价格、优惠、营业时间)会自动附在后面, 不用写任何符号。最多 [[ promptMeta.max_chars || 4000 ]] 字。
一件商品同时只用一条,没标「正在用」的是备用。
有几处没认出来的写法:[[ promptPreview.unknown.join(" ") ]] 没有多余的符号 渲染结果是:[[ promptPreview.product ? promptPreview.product.name : "(主推商品)" ]]
你还没有商品 —— 商品那一段会是空的
知识库还是空的 —— 只有一段空标题
[[ promptPreview.text ]]
触发词写得越短越容易误答;拿不准就用默认的「包含」。
一条规则可以写多个触发词与多条回复,命中时随机抽一条。
随机抽,不像复读机;间隔挡住的是「同一个人连问三遍就答三遍」。