======================================== 贝成口腔 · 广告创意盯盘助手(服务器版) ======================================== 一、这个程序做什么 每天 8:00-22:00 每个整点,自动做三件事: 1. 读取 config\腾讯账户简称.xlsx 的账户清单,拉取当日累计数据 (消耗 / 转化 / CPA / 有效人数 / 有效成本) 2. 生成一张 372px 宽的盯盘卡图片(异常标红/标橙) 3. 推送到企业微信群 全程不需要打开 WorkBuddy,服务器自己跑。 二、目录说明 盯盘助手.exe 主程序(双击无效,用命令行/定时任务调用) config\腾讯账户简称.xlsx ★账户清单,增删账户只改这张表 config\accounts.json 运行参数(回溯天数、并发数);accounts 数组只在 Excel 读不到时兜底 config\rules.json 判定阈值(CPA 超线、有效成本超线等) config\wecom.json 企业微信群机器人地址 + 推送时段 config\credentials.json 腾讯广告授权(有效期到 2026-12-11,到期需替换) install-task.ps1 一键安装定时任务(第一次部署时运行) reports\realtime\ 生成的盯盘卡图片(按 盯盘-YYYYMMDD-HHMM.png 留档) logs\ 运行日志(每天一个文件) 三、账户清单怎么维护(重点) 直接编辑 config\腾讯账户简称.xlsx,第一行是表头,下面一行一个账户: 账户名称 | 账户ID | 简称 | 目标CPA 晋江市青阳贝成口腔门诊部有限公司 | ID: 30300648 | 晋江一 | 180 泉州新贝成口腔门诊有限公司 | ID: 60494197 | 泉州一 | 石狮贝成口腔门诊部 | 71234567 | 石狮一 | · 列顺序随意,多余的列会被忽略;列名认「账户名称 / 账户ID / 简称 / 目标CPA」 · 账户ID 三种写法都认:"ID: 30300648"、"30300648"、纯数字 30300648 · 简称就是卡片上显示的名字,建议 3-4 个字;留空则用「账户名称」,都空则显示「账户+ID」 · 目标CPA 留空 = 用该账户近 7 日均值自适应,一般不用填 · 增删账户 / 改名后直接保存,不需要重新打包、不需要重启任务, 下一个整点自动按新清单抓(每次运行都会重新读这张表) · 重复的账户ID 只保留第一行;空行自动跳过 四、部署步骤(Windows Server) 1) 把整个文件夹复制到服务器,例如 D:\ad-monitor\ ⚠ 路径建议放在 D 盘根目录下 2) 确认服务器已安装 Microsoft Edge(Windows Server 2022 自带; 没有的话装一下,程序用无头 Edge 截图生成图片) 3) 右键 install-task.ps1 → 使用 PowerShell 运行 脚本会自动:建目录 → 自检跑一次 → 注册每小时任务 → 发测试消息到群里 4) 群里收到「投放在线测试」消息 = 部署成功 五、日常操作 手动跑一次: .\盯盘助手.exe once 只出图不推送: .\盯盘助手.exe render 发测试消息: .\盯盘助手.exe test 常驻守护模式: .\盯盘助手.exe daemon (不开定时任务时用,窗口别关) 查看定时任务: Get-ScheduledTask -TaskName "贝成口腔-广告盯盘-每小时" 删除定时任务: Unregister-ScheduledTask -TaskName "贝成口腔-广告盯盘-每小时" 六、改阈值 / 推送时段 - 改推送时段:改 config\wecom.json 的 hours(默认 [8..22]) - 改异常阈值:改 config\rules.json 的 realtime 段 cpa_warn 转化成本超线(默认 200) valid_cost_warn 有效成本超线(默认 350) min_valid_cost_yuan 低于该消耗不判异常(默认 30) - 改完不需要重新打包,下一次整点自动生效 七、授权到期怎么办(重要) config\credentials.json 有效期到 2026-12-11。 到期前在 WorkBuddy 里重新生成腾讯广告 API Key, 把新的 credentials.json 覆盖到服务器 config\ 目录即可(无需重启任务)。 授权失效的表现:日志里出现「报表查询失败: ... AUTH_EXPIRED / Access token is empty」 八、常见问题 1) 群里没收到消息 · 看 logs\当天日期.log 有没有「✓ 完成」 · 若日志显示「不在推送时段」,说明当前小时不在 hours 列表里 · 若显示 webhook errcode 非 0,检查 config\wecom.json 的地址是否被删/换群 2) 账户改了没生效 · 看日志第 2 行「账户来源: Excel config\腾讯账户简称.xlsx(N 个:晋江一 / ...)」 N 和你表格里的行数是否一致、名字对不对 · 若显示的是「accounts.json」→ Excel 没读到,常见原因: a. 文件被 Excel 打开占用(关掉 Excel 再试) b. 表格另存成了老的 .xls 格式 → 用「另存为」存成 .xlsx c. 账户ID 列里没有 5 位以上的数字(比如填了文字账户名) · 若某个账户数据全是 0,日志里会有 「resource owner is not permitted to operate this [xxxx] 'account_id'」 = 该账户没授权给这套 API 应用,先在腾讯广告后台加授权,或从表格里删掉 3) 报「找不到 Edge/Chrome」 · 服务器没装浏览器,装 Edge 后重试(这是唯一的外部依赖) 4) 数据全是 0 · 腾讯接口延迟约 10-30 分钟;早上 8 点刚过时当日数据可能还很少,属正常 5) 图片想看历史 · reports\realtime\ 里按「盯盘-YYYYMMDD-HHMM.png」保存了每一张 九、这台电脑(当前)与服务器的关系 程序和配置都在服务器上跑,本地 WorkBuddy 可以完全关闭。 本地项目目录仅作开发/改样式用,改完重新执行 node deploy\build-exe.mjs 再覆盖服务器文件。 账户清单以 deploy\腾讯账户简称.xlsx 为源文件,打包时会自动同步到 dist\config\。