wbl-ai-report v1.0.4
中国 AI 企业 + 大咖周报。采集要全,成稿要短。 网格扫完白名单官方渠道;写入 HTML 时每条一两句。无内容的企业/大咖整块不出现,报告不加附录。
版本:1.0.4(同一技能升级,不覆盖 v1.0.3 源包)
红线
- 企业动态只认官方渠道:官网、官方文档/社区/仓库、
channels.jsonsocial字段里status=verified的 B 站官方账号。媒体只可当线索,必须回到官方原文,否则不写。 - 只输出
channels.json里的 11 家。域名必须落在该企业allowed_hosts(或content_apis的base_url域)。不得自行扩企业。DeepSeek 已于 v1.0.3 在allowed_hosts显式加入github.com(deepseek-ai官方仓库)与deepseek-harness.github.io(Harness 官方文档站),这两个域可作 DeepSeek 开源发布的主链;其余企业默认不引入开放平台域名。 - 大咖只收本人或所属机构官方号;主链必须具体、写入前校验可访问;不编造,无日期/无法核实/无官方来源一律不写(细则见 collection-rules.md §3/§4/§8)。
- 官方内容分发源(
content_apis,当前仅腾讯 WorkBuddy):只收事件类(产品能力发布、企业落地案例、正式合作/落地),教程/技巧类、纯品牌软文一律忽略(细则见 collection-rules.md §2.6)。 - 报告里禁止出现:附录、巡检过程、补充说明、「已巡检」「暂无更新」「可以暂时不追」「为何没算进去」、空状态、噪音条、待核时清单。
- 去重粒度 = 事件级 + 视角级:月度/周报合集按
date_range全集组织,仅排除「企业 + 事件 + 日期」三重完全相同的条目;上一期已报道的本月事件若本期有更新(如 API 上线、新版本、落地案例等后续动作)仍应入条。同名事件不同动作拆多条。 - 公告拆分:同一官方页面内含多个独立事件(如「V4-Pro 上线 + API 调价 + Harness 开源」一页多事)时,逐事件单列,不得合并为一条(细则见 collection-rules.md §4.x)。
- 链接真实性红线:报告中每一个
<a href>指向的 URL 必须是采集时实际访问过、确认可达的官方页面。严禁出现以下任一情况:
- 占位符 URL(含UNKNOWN、TODO、FIXME、example.com、placeholder、xxx等字样)
- 未经验证就拼凑的 URL(如仿造mp.weixin.qq.com/s/xxx格式但xxx是编的)
- 用企业首页 / 产品首页 URL 替代文章级 URL(如用doubao.com/work充当某条新闻的来源链)
- 推荐阅读使用example.com或任何不存在页面的假域名
找不到真实文章 URL 时的默认动作(按优先级):
1. 使用模板的 LINK_FAILED 变体(渲染为纯文字标题 +「原文暂不可达」标签,不带超链接)
2. 如果连新闻事实都无法从官方渠道核实,整条不写
3. 企业 / 大咖 0 条可用时整块不输出(已有规则)
输出目录
权威日志是用户目录里的 generate_log.json,不是技能包内文件。不硬编码路径。
按这个顺序找,找到就用,不要先问:
- 当前对话已用过的
output_dir - 工作区及邻近目录里已有的
generate_log.json或*AI周报.html(用该文件所在目录) - 日志里已有可访问的
output_dir
都找不到再问:「请指定周报生成的输出目录」。目录不存在则给两个选项:自动创建(默认 D:\AI周报生成)或用户自建后重指定。确认后写入 output_dir。
用户说「更换目录」时重新询问并更新 output_dir。
命名:YYYYMMDD_AI周报.html(生成当天),日志 {output_dir}/generate_log.json。
时段(先算再采)
优先级(用户指定 > 日志推演)
① 用户明确指定时间范围时——严格按用户指定执行,不得自行偏移、裁剪或改口径。
- 例子:「查 8 月份的 AI 简报」→ 起点 2026-08-01 00:00,终点 2026-08-31 23:59
- 用户说「最近一周」「上周」等相对表述 → 按当前日期计算出明确起止再采
- 口头报一句:「按您指定,本次覆盖 {start} 至 {end}」,直接开始采集
② 用户未指定时间范围(含定时任务)——按上次生成日志连续推演。
时区 Asia/Shanghai。读 {output_dir}/generate_log.json 的 records:
| 情况 | 起点 | 终点 | period_mode |
|---|---|---|---|
records 空或不存在 |
上一个自然周周一 00:00 | 该周日 23:59 | first_week |
| 已有记录 | 最后一条 date_range_end 的次日 00:00 |
本次生成时刻 | since_last |
旧日志只有 date_range 字符串时,解析其中的结束日期再按上式算。
口头报一句:「本次覆盖时段是 {start} 至 {end}({period_mode}),开始采集。」无需等待,除非用户当场改时段。
无论哪种情况,起点终点一经确定,全程采集、筛选、去重均以此为界,报告头展示的时段与此一致。
写法
先总后分。只写有内容的块。目录锚点与章节同步:无大咖则目录也不放「大咖观察」。
每条固定四件套:标题 + 日期 + 1–2 句 + 来源。
- 第一句:发生了什么(产品/价格/能力/下线)
- 第二句(可省):读者要做什么
- 不写企业小结、不写「适用:」空话、不写巡检备注
好:Hy3 成为正式主力(256K,MoE)。仍在用 hy3-preview 的 API,需在 8 月 31 日前改模型名。
坏:经巡检腾讯云文档发现更新,详见下文要点……本条可暂时不追。
协议/隐私:只在影响计费、额度或产品能力时写;纯品牌稿、无日期 Banner、首页轮播不写(细则见 collection-rules.md §4)。
单家超过 15 条:全写进清单,每条仍一两句,不要深写(细则见 collection-rules.md §6)。
社交平台(B 站官方账号)
channels.jsonsocial字段只收录 B 站官方账号(status=verified,全部经official_verify.type=1实测核验)。- 采集优先用动态 API(返回 JSON,含视频/专栏/图文与发布时间,可精确筛时段);方法见 collection-rules.md §2.5。
- 公众号(正文抓不全)与小红书(全站 IP 风控 300012)已剔除,不再采集;
no_bilibili_reason字段注明的企业(如 DeepSeek 官方声明无 B 站号)只用官网通道。
官方来源地图见 references/official-sources.md。详细检索步骤见 references/collection-rules.md。
官方内容平台(content_apis)
channels.json的content_apis是官方内容分发平台的接口配置(当前仅腾讯 WorkBuddy:腾讯云 CS 承载的公众号文章库,接口直抓,含日期可精确筛时段)。- 采集走 POST 接口:列表
queryByCategoryId按分类分页取记录(标题/时间/摘要),详情aggArticleOverview取完整图文 HTML。 - 入选粒度:仅事件类(产品能力发布、企业落地案例、正式合作/入职);教程/技巧类忽略。细则见 collection-rules.md §2.6。
报告结构(不得打乱)
- 报告头:标题、覆盖时段、生成日期、有内容的企业数 / 动态条数 / 大咖条数(不含时段模式)
- 本期总览:1 条主线;3 个方向(模型 / 应用 / 生态);3 项可执行学习动作
- 企业官方详报:只输出本时段有官方稿的企业;同一页面多事件按红线 7 拆分单列
- 大咖观察:只输出本时段有原发的大咖;全员无则整章(含目录)不输出
- 推荐阅读:3 条,从学习动作展开,理由各一句
视觉以 report_template.html 为壳。卡片不要加 news-detail、news-impact、企业小结。
工作流程
0. 时段(先算再采)
- 用户明确指定时间范围 → 严格按用户指定,
period_mode = user_specified,口头报:「按您指定,本次覆盖 {start} 至 {end}」 - 用户未指定(含定时任务)→ 读日志推演:空则上一自然周(
first_week),否则最后一条date_range_end次日 00:00 至本次生成时刻(since_last) - 无线索则按
first_week。口头报时段后开始采集。
1. 读配置
读 channels.json、influencers.json、references/collection-rules.md。
2. 企业网格
对每家企业:先打开 list_pages,再按 allowed_hosts + 产品词做 site: 检索,核日期;social 字段里 status=verified 的 B 站账号按 §2.5 动态 API 补采(DeepSeek 等无 B 站账号的企业跳过);存在 content_apis 的企业按 §2.6 内容平台接口补采(当前为腾讯 WorkBuddy)。媒体线索必须回到官方原文。与日志已报事件去重。0 条则该企业不写入 HTML。
3. 大咖网格
对每个名字搜本人/机构公众号、视频号、腾讯直播。只收原发。0 条不写该人;全员 0 条不写整章。
4. 校验与成稿
全部正刊、大咖、推荐阅读做链接校验。素材齐后再写总览。套模板,保存 {output_dir}/YYYYMMDD_AI周报.html。
4.5 链接自检(保存前必做,不过不放行)
扫描生成的 HTML,逐条检查所有 href 属性,全部通过后才可保存:
- [ ] 不含
UNKNOWN/TODO/FIXME/example.com/placeholder/xxx等占位标记 - [ ] 企业新闻 URL 不是裸首页(如
doubao.com/work、klingai.com/、open.bigmodel.cn/);必须是文章 / 文档 / 公告 / 仓库 Release 级 URL - [ ] 推荐阅读 URL 不是
example.com或其它占位域名;必须有真实可访问的文章页 - [ ] 大咖「查看原文」URL 不是占位符;无真实链接时改用
RECOMMEND_ITEM_LINK_FAILED变体或不写该条
发现任何一项不通过:改用 LINK_FAILED / RECOMMEND_ITEM_LINK_FAILED 模板变体或删除该条,不得放过。
5. 追加日志
保留 output_dir,向 records 追加一条,不覆盖历史。计数只记实际写入报告的企业/大咖/条数。
generate_log.json
{
"output_dir": "用户指定的输出目录绝对路径",
"records": [
{
"generate_date": "2026-08-24",
"generate_time": "2026-08-24 11:34",
"report_file": "20260824_AI周报.html",
"period_mode": "since_last",
"date_range": "2026-08-10 to 2026-08-24",
"date_range_start": "2026-08-10",
"date_range_end": "2026-08-24",
"companies_count": 8,
"influencer_count": 1,
"total_items": 12,
"influencer_items": 1,
"enterprises": ["腾讯", "阿里", "字节跳动"],
"influencers_covered": ["李开复"]
}
]
}
period_mode取值:first_week(无记录初采)/since_last(未指定时段,沿用日志)/user_specified(用户指定范围)companies_count/enterprises:写入报告的企业,不是名单全长influencer_count/influencers_covered:写入报告的大咖,不是种子名单全长- 下次时段只看最后一条的
date_range_end(用户指定时不依赖日志)
文件结构
wbl-ai-report/
SKILL.md
channels.json
influencers.json
report_template.html
references/collection-rules.md
references/official-sources.md
CHANGELOG.md
_meta.json
{output_dir}/
YYYYMMDD_AI周报.html
generate_log.json
定时
每周一 09:00(Asia/Shanghai),cron 0 9 * * 1。定时任务等同"用户未指定时段":已有日志则走 since_last,不要误用「上周」覆盖已生成区间;用户若在触发消息中指定了时段,则优先按用户指定执行(user_specified)。