Back to skills
extension
Category: Data & AnalyticsNo API key required

XBJHB-DailyReport

通用上市公司公开信息日报生成技能。输入任意A股上市公司的名称和6位股票代码, 在【用户明确授权】后,仅采集该主体已公开披露的信息(公司公告、新闻媒体报道、公开市场行情数据), 执行完整工作流:监控授权确认 → 多渠道信息抓取 → A/B/C三级分类 → 审计关注要点提取 → HTML+MD双格式日报生成 → 汇总表更新 → 本地存档 + 腾讯文档云端同步。支持任意上市公司,模板统一锁定。 本技能不访问任何非公开、隐私或内部数据,不构成对第三方主体的隐蔽监控或侵入式调查。 触发词:生成XX公司日报、XX公司信息监控、上市公司日报、每日监控日报、 公司舆情日报、生成日报、今日日报、监控日报。

personAuthor: user_962fa9e0hubcommunity

通用上市公司日报生成技能 (Daily Report Generator)

概述

本技能为通用化日报生成器,支持任意A股上市公司。只需提供:

  • 公司名称(简称,如"贵州茅台")
  • 股票代码(6位数字,如"600519")

即可自动完成从信息抓取到日报交付的全流程,生成统一风格的HTML+MD双格式日报。

数据来源与合规边界(必读)

本技能仅用于正当用途下的公开信息整合(如投资研究、内部审计、合规监控、舆情跟踪), 并严格遵守以下边界:

  1. 仅采集公开信息:所有数据均来自公司对外公告、新闻媒体公开报道、证券交易所/行情服务商公开的市场数据。不抓取、不访问任何非公开、隐私、内部系统或未授权数据。
  2. 不针对个人隐私:监控对象限定为已公开上市的法人主体及其对外披露事项,不采集任何自然人(含高管个人)的隐私信息、通讯记录或内部行为数据。
  3. 必须经用户明确授权:在发起任何搜索(Step 2)之前,必须先通过 Step 1.5 监控授权与范围确认,获得用户对监控对象与搜索范围的显式确认;用户未确认或选择取消时,技能立即停止,不得默认进入抓取流程。
  4. 用户可逐项选择:用户对每一组关键词搜索均可单独勾选或取消,技能仅执行用户确认范围内的任务。
  5. 可审计、可撤回:每次执行的监控对象与范围会记录在日报执行摘要中,用户可随时停止或调整。
  6. 来源透明:日报中每条信息均标注来源与发布时间,行情数据注明数据日期,便于用户核验。

若用户要求监控非公开信息、特定自然人隐私或明显超出正当用途的数据,应明确拒绝并说明理由。

触发词

用户说出以下任一表达时触发本技能:

  • "生成XX公司日报"
  • "XX公司信息监控"
  • "上市公司日报"
  • "每日监控日报"
  • "公司舆情日报"
  • "生成日报"
  • "今日日报"
  • "监控日报"
  • "帮我做XX的日报"
  • "XX股票今日监控"

输入参数

执行前向用户确认(或直接解析)以下参数:

| 参数 | 必填 | 说明 | 示例 | |------|------|------|------| | company_name | 是 | 上市公司简称 | 西部证券 | | stock_code | 是 | 6位股票代码 | 002673 | | output_dir | 否 | 输出目录根路径(执行前必须向用户确认,见 Step 1.6) | D:\WorkBuddy Docs\信息监控与汇总 |

核心工作流

收到指令后,严格按下述步骤顺序执行。注意:Step 1.5 为强制授权前置,未通过不得进入 Step 2。


Step 1:初始化与历史回顾

  1. 解析 company_name + stock_code
  2. 计算计划保存路径(仅计算,不立即创建目录,待 Step 1.6 用户确认后再创建):
    {output_dir}\{company_name}({stock_code})每日信息汇总\
    
    • HTML 日报计划保存至:{output_dir}\{company_name}({stock_code})每日信息汇总\{company_name}日报_YYYY-MM-DD.html
    • MD 日报计划保存至:{output_dir}\{company_name}({stock_code})每日信息汇总\{company_name}日报_YYYY-MM-DD.md
  3. 在用户确认路径前,不读取也不写入该目录;待 Step 1.6 确认后,再读取历史 日报信息等级汇总.md,提取:
    • 持续跟踪事项清单(带状态emoji:✅/🚨/👤/⏰)
    • 上期严重程度评估
    • 未结诉讼/处罚/融资事项
  4. 读取 .workbuddy\automations\{stock_code}\memory.md(如有),获取上期执行摘要

Step 1.5:监控授权与范围确认(必经前置,未通过不得进入 Step 2)

本步骤是强制授权闸门,旨在消除"默认进入、无确认"的合规风险。未获得用户显式确认前,禁止执行任何 WebSearch 或行情/资金查询。

  1. 回显监控对象:向用户明确展示将要监控的主体:

    • 公司名称:{company_name}
    • 股票代码:{stock_code}
    • 用途(由用户声明,如投资研究 / 内部审计 / 合规监控)
  2. 披露数据范围:明确告知用户,本技能只会采集公开披露信息(公告、新闻、公开行情),不触及任何隐私或内部数据。

  3. 逐项列出搜索任务并请求确认:将以下 8 项搜索任务逐条列出,请用户勾选/取消(支持"全选"或"仅保留部分"):

    | 序号 | 搜索任务 | 说明 | 默认 | |------|----------|------|------| | ① | 公告搜索 | "{company_name} {stock_code} 公告" | ✅ | | ② | 最新动态 | "{company_name} 最新动态 新闻" | ✅ | | ③ | 监管处罚 | "{company_name} 监管 处罚" | ✅ | | ④ | 诉讼纠纷 | "{company_name} 诉讼 纠纷" | ✅ | | ⑤ | 舆情监控 | "{company_name} 舆情" | ✅ | | ⑥ | 行情数据 | "{company_name} {stock_code} 股价 行情" | ✅ | | ⑦ | 资金流向 | "{company_name} {stock_code} 资金流向 主力 融资融券" | ✅ | | ⑧ | 实时行情(连接器) | 如 westock-mcp / akshare-finance 可用则调用 | ⚪可选 |

  4. 等待显式确认:使用确认式交互(如 AskUserQuestion 或明确要求用户回复"确认启动"),必须收到用户明确同意后方可继续

    • 用户选择"取消" → 立即终止,不再执行任何搜索。
    • 用户取消某几项 → 仅执行被保留的任务(在 Step 2 中跳过未勾选项)。
  5. 记录授权范围:将"已确认的主体 + 已勾选的搜索任务清单"记入本次执行摘要,确保可审计。

⚠️ 任何情况下都不得跳过本步骤、不得对用户未确认的主体或任务执行搜索。若用户在对话中已事前明确授权(如"帮我监控XX公司,按默认范围来"),仍需在回复中复述本次范围并等待其确认,不得静默默认执行。


Step 1.6:保存路径确认(写盘前必经,未确认不得创建目录/写文件)

本步骤是写盘授权闸门。在创建任何目录、生成或写入 HTML/MD/汇总表之前,必须向用户明确展示拟保存位置并获得确认,杜绝静默写盘。

  1. 展示默认保存位置:基于用户输入的 output_dir(未指定时使用本机默认工作目录),向用户清晰展示即将生成的文件落点:
    • 📁 工作目录:{output_dir}\{company_name}({stock_code})每日信息汇总\
    • 📄 HTML 日报:{output_dir}\{company_name}({stock_code})每日信息汇总\{company_name}日报_YYYY-MM-DD.html
    • 📄 MD 日报:{output_dir}\{company_name}({stock_code})每日信息汇总\{company_name}日报_YYYY-MM-DD.md
    • 📄 汇总表(追加):{output_dir}\{company_name}({stock_code})每日信息汇总\日报信息等级汇总.md
  2. 请求确认或修改:使用确认式交互(如 AskUserQuestion)请用户选择:
    • 确认使用默认路径:按上述落点生成文件;
    • 修改为自定义路径:用户提供新的 output_dir,技能据此重新计算全部落点后再确认。
  3. 等待显式确认:必须收到用户明确同意后,方可创建目录并继续 Step 2 之后的流程;用户未确认前,不得执行 mkdir 或任何写盘操作。
  4. 记录路径:将最终确认的保存路径记入本次执行摘要,确保可审计。

⚠️ 任何情况下都不得跳过本步骤、不得在未获确认时静默创建目录或写入文件。


Step 1.7:本地保存路径确认记忆 + 云端同步每次询问

本步骤实现「本地路径首次确认后默认沿用」与「腾讯文档云端同步每次执行后单独询问」两条独立规则。

⚠️ 核心规则:

  • 本地路径:仅首次执行时与用户确认本地保存地点;确认后写入 path_config.jsonconfirmed_targetslocallocal_dir 有效),后续执行默认沿用该路径,不再询问
  • 云端同步每次本地日报保存完成后,都通过 AskUserQuestion 单独询问「本次是否需要同步腾讯文档」——不因历史确认而跳过。用户选择"是"才执行 Step 11.5;选择"否"则仅本地交付。
  1. 配置字段~/.workbuddy/automations/{stock_code}/path_config.json):
    {
      "stock_code": "002673",
      "company_name": "西部证券",
      "sync_local": true,
      "local_dir": "F:\\...\\信息监控与汇总",
      "sync_tencent_docs": true,
      "tencent_docs_dir_id": "PvnEpcszduWq",
      "confirmed_targets": ["local"],
      "configured": true,
      "configured_at": "2026-08-23T08:30:00+08:00"
    }
    
    • sync_local / local_dir:是否落本地、本地输出目录根;
    • sync_tencent_docs / tencent_docs_dir_id:是否同步云端、腾讯文档文件夹 file_id
    • confirmed_targets已获用户确认的本地路径标记(含 local 即本地路径已确认、可默认沿用);云端目标不在此列——云端是否同步以每次询问结果为准。
  2. 本地路径判定(仅首次确认)
    • confirmed_targetslocallocal_dir 有效 → 默认沿用,不再询问
    • 否则 → 通过 AskUserQuestion 与用户确认本地保存路径(默认 D:\WorkBuddy Docs\信息监控与汇总 或自定义),确认后调用 path_config.py --set-local --dir "..." 写入并登记 local,再执行。
  3. 云端同步判定(每次询问)
    • 每次本地日报保存完成后,无论历史状态,均通过 AskUserQuestion 询问「是否同步腾讯文档」;
    • 选择"是" → 进入 Step 11.5 执行云端同步(云端根目录定位/新建文件夹 + 同步日报);
    • 选择"否" → 本次仅本地交付,不执行任何云端操作。
  4. 更改 / 查看配置:运行 scripts/path_config.py --code {code} --status
    • 首次确认本地:--set-local --dir "..."(自动登记 local 已确认);
    • 更新云端目标:--set-tencent --dir-id "<file_id>"(仅记录云端目标,不构成永久确认);
    • 关闭本地:--disable-local;清除全部配置:--reset(下次重新确认本地路径)。
  5. 脚本层默认保存generate_report.pybackfill_summary.py 缺省 --output-dir 时自动从 path_config.json 读取本地路径(--code 参数);云端同步由独立的 Step 11.5 + sync_tencent_docs.py 负责。

Step 2:多渠道信息抓取(5组关键词并行搜索)

前置条件:必须已完成 Step 1.5 的授权与范围确认。以下搜索以用户勾选确认的范围为准;未勾选的任务一律跳过,绝不默认补跑。所有搜索均针对公开信息

使用 WebSearch 工具,对以下5组关键词分别独立搜索(附加当前年月以提升时效性):

| 序号 | 关键词模板 | 说明 | |------|-----------|------| | ① | "{company_name} {stock_code} 公告" | 公司公告 | | ② | "{company_name} 最新动态 新闻" | 最新动态 | | ③ | "{company_name} 监管 处罚" | 监管处罚 | | ④ | "{company_name} 诉讼 纠纷" | 诉讼纠纷 | | ⑤ | "{company_name} 舆情" | 舆情监控 |

补充抓取(对应 Step 1.5 中用户勾选的 ⑥⑦⑧ 项;若用户在 1.5 中未勾选则跳过):

  • ⑥ 行情数据:使用 WebSearch 搜索 "{company_name} {stock_code} 股价 行情"
  • ⑦ 资金流向:使用 WebSearch 搜索 "{company_name} {stock_code} 资金流向 主力 融资融券"
  • ⑧ 实时行情(可选):如连接器可用且用户已勾选,使用 westock-mcpakshare-finance 获取实时行情;不可用或用户未选时跳过,改用 ⑥ 的公开搜索结果

Step 3:信息分组(三版块)

将抓取到的所有信息按以下三版块归类:

| 版块 | 涵盖内容 | |------|----------| | 财务类 | 营收/利润波动、公允价值变动、现金流异常、借款及负债变化、股价行情、资金流向、融资融券、债券发行/兑付 | | 合规类 | 监管处罚、诉讼、程序合规、关联交易、反洗钱、保荐责任 | | 经营类 | 业务转型、人员变动、投资项目、重大社会活动、获奖、研报、调研、股东会 |


Step 4:分类定级(A/B/C三级)

对每条信息按以下标准定级:

| 等级 | 判定标准 | 示例 | |------|----------|------| | A类(重大事项) | 监管处罚、立案调查、重大诉讼、业绩大幅变动(±30%+)、重大重组、退市风险 | 证监局处罚决定、营收利润同比变动超30%、合并收购 | | B类(重要事项) | 定期报告、分红、增发、重大投资、分支机构调整、债券发行/兑付、股东会、薪酬制度、高管变动 | 年报季报发布、公司债发行、短融兑付、经营范围变更 | | C类(一般事项) | 日常新闻、市场评论、资金流向、业务资格、社会活动、研报 | 股价行情、主力资金流向、行业报道、投资者活动 |

去重规则:同一事项多渠道报道只记录一次,以官方公告为权威来源。


Step 5:提取审计关注要点

对每条信息从三个维度分析:

| 维度 | 关注要点 | |------|----------| | 财务类 | 营收/利润波动、公允价值变动、现金流异常、借款变化、负债变化、融资成本 | | 合规类 | 监管处罚、诉讼、程序合规、关联交易、信息披露合规、反洗钱 | | 经营类 | 业务转型、人员变动、投资项目、重大社会活动、获得奖项、业务资格变更 |

每条信息标注风险等级:高/中/低

持续跟踪事项:上期遗留的未结事项(诉讼、处罚整改进度、融资兑付等)需在当期日报中持续跟踪直至结项。


Step 6:生成HTML日报(严格锁定模板)

⚠️ 最关键步骤。 每日HTML日报必须严格按照本包内 references/html-template.md(自带原创模板,见"关键模板引用"节的来源声明)中的完整CSS模板和HTML结构规范生成,不得自行创意、不得变更配色、不得更换布局方式、不得更改类名或组件结构

推荐优先使用 scripts/generate_report.py 生成(其已内联同一套 CSS/JS,完全自包含、可复现);如需在对话中直接生成,则读取本包内 references/html-template.md 作为结构基础。

强制检查清单(生成前必检):

  • [ ] CSS变量与模板完全一致(--primary: #C7000B 等)
  • [ ] Hero背景为 linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%)
  • [ ] Hero badge文案为"内部审计 · 每日信息监控"
  • [ ] 导航栏使用 nav-bar/nav-inner/nav-link 结构,7个锚点完整
  • [ ] Section header使用 section-icon + section-title 组合
  • [ ] 卡片使用 card-top/card-seq/card-body/card-summary/card-actions 结构
  • [ ] chip类名为 chip-source/chip-time/chip-level.a/b/c
  • [ ] 审计要点使用 audit-list/audit-item(high/medium/low)/audit-priority/audit-text
  • [ ] 风险卡片使用 risk-card(h4+p) 结构,中风险使用 .mid 变体
  • [ ] 空状态使用 empty-state(icon ✅ + text)
  • [ ] Footer包含总条数和数据源
  • [ ] 全局编号贯穿连续不重置
  • [ ] 时间格式为北京人话格式(如"2小时前"/"今天上午"/"昨天"/"6月11日公告")
  • [ ] JS滚动动画和导航交互与模板一致
  • [ ] 文件UTF-8编码

动态替换内容

  • 公司名称、股票代码、日期、星期
  • A/B/C数量统计
  • 行情标签组(收盘价/涨跌幅/成交额/换手率/总市值/市盈率/市净率/主力净流入)
  • 概览表格行
  • 资讯卡片列表(全局连续编号)
  • 审计要点列表
  • 风险卡片列表
  • 明日关注列表
  • Footer总条数、数据源、生成时间

文件保存路径

{output_dir}\{company_name}({stock_code})每日信息汇总\{company_name}日报_YYYY-MM-DD.html

Step 7:生成MD日报

基于HTML日报内容,生成同结构的Markdown版本,用于存档和知识库同步。

文件保存路径

{output_dir}\{company_name}({stock_code})每日信息汇总\{company_name}日报_YYYY-MM-DD.md

Step 8:更新汇总表(每次执行强制完善,单文件)

强制要求:每一次日报执行(无论单日或按周期批量),都必须完善《{company_name}日报信息等级汇总》 这一单一汇总文件——已存在则更新对应日期行,不存在则创建该文件并写入首行。该文件是后续 复盘的唯一索引,绝不可跳过。

将当日(或当批各日)等级信息追加至:

{output_dir}\{company_name}({stock_code})每日信息汇总\日报信息等级汇总.md

推荐优先使用 scripts/generate_report.py 自动更新:新日期行会插入到第一个主汇总表(表头分隔行之后)的末尾,并自动处理表中历史遗留空行;若该日期已存在则原地替换;若汇总文件不存在则自动创建。手工追加时,请同样把新行写入顶部主表,勿插入文件末尾的备注/次要表格区域。

追加格式为表格行:

| YYYY-MM-DD | A类数量 | B类数量+说明 | C类数量+说明 | 严重程度评估 |

同时更新汇总表中的:

  • 持续跟踪事项清单
  • 重要融资事项表
  • 审计跟踪要点

Step 8.5:历史日报补录汇总表

每日日报生成并更新汇总表后,可运行补录脚本校验一致性,将任何「有日报文件但汇总表未记录」 的日期自动补录:

python scripts/backfill_summary.py --code {stock_code} --company {company_name}
  • 脚本遍历 {output_dir}\{company_name}({stock_code})每日信息汇总\ 下全部 《{company_name}日报_YYYY-MM-DD.md》,对照汇总表主表已有日期,仅补录缺失日期 (已存在行跳过,保留人工润色内容)。
  • 补录行按日期升序插入第一个主汇总表末尾;若汇总表不存在则自动创建 md(不生成 HTML)。
  • 支持 --dry-run 预览缺失清单;--output-dir 缺省从 path_config.json 读取。
  • 兼容两代日报格式:新版正文含 ### 【n】标题;旧版无标题结构但概览表「说明」列含摘要, 脚本自动优先采用概览说明、回退正文标题提取。
  • 建议每日交付前运行一次,保证汇总表与日报文件始终一致。


Step 9:最终检查

对照Step 6中的强制检查清单逐项确认。


Step 10:输出摘要

在对话中输出当日信息摘要(不超过500字),包括:

  • 今日抓取信息总数(去重后)
  • A类事项数量及简要说明
  • B类亮点事项
  • 重点审计关注事项(高优先级)
  • 如有重大事项,特别提醒
  • 行情一句话点评

Step 11:交付文件

使用 present_files 工具交付HTML+MD两个文件给用户。


Step 11.5:腾讯文档同步(用户本次确认后云端落地)

触发条件:本次执行中,用户通过 Step 1.7 的 AskUserQuestion 明确选择了「同步腾讯文档」。本地 HTML/MD 生成完毕后执行本步骤。

  1. 前置检查:确认 tencent-docs 连接器处于已连接状态。
  2. 云端根目录文件夹定位/新建(按规则在云端根目录生成「{company}({code})每日信息汇总」文件夹):
    • 调用 manage.folder_list 检索云端根目录,按标题(如「西部证券(002673)每日信息汇总」)精确匹配文件夹;
    • 命中 → 复用该文件夹 file_id,更新 path_config.jsontencent_docs_dir_idpath_config.py --set-tencent --dir-id <file_id>);
    • 未命中 → 尝试创建文件夹(若连接器提供创建接口则调用);连接器暂未开放自动建文件夹接口时,向用户说明并请其手动在腾讯文档首页创建该文件夹,或选择复用历史 tencent_docs_dir_id,回填后继续;亦可降级为同步至云端根目录(不归位文件夹)。
  3. 执行同步脚本(幂等、按天):
    python scripts/sync_tencent_docs.py --code {stock_code}
    # 其他设备路径不同可指定:--td-skill-dir "<腾讯文档技能目录>"
    # 仅预览:--dry-run   强制重传:--force
    
    • 脚本扫描本地 {local_dir}\{company}({code})每日信息汇总\ 下的全部 《{company}日报_YYYY-MM-DD.md》日报信息等级汇总.md
    • 按**精确标题(去扩展名)**检索云端,已存在则跳过(best-effort 确保归位到目标文件夹);
    • 不存在则导入为在线 Markdown 文档并移入目标文件夹;
    • 结果落盘至 ~/.workbuddy/automations/{code}/sync_result.json(imported/skipped/failed)。
    • 刷新已变更内容:若本地《日报信息等级汇总》或某日报内容有修改需覆盖云端旧版, 加 --refresh-summary(仅刷新汇总表)或 --force(全部重传)参数。 --force 会因云端允许重名而产生新文档,建议优先用 --refresh-summary 精确刷新汇总表。
  4. 记录结果:将返回的文档链接与 file_id 写入当日自动化记忆 (~/.workbuddy/automations/{code}/memory.md)。
  5. 失败降级:若连接器不可用、文件夹不可用或上传失败,降级为本地交付(present_files 本地文件), 并在回复中说明腾讯文档未同步成功及原因,不阻塞日报交付
  6. 本地留存:本地文件始终按 local_dir 留存一份,保证可追溯、可离线复盘。

Step 12:更新项目记忆

.workbuddy\memory\YYYY-MM-DD.md 追加执行记录。


Step 13:更新自动化记忆

.workbuddy\automations\{stock_code}\memory.md 追加执行摘要(高层面,不含详细内容)。


按指定时间周期建立/完善日志工作流(多日补制 / 完善)

触发:用户要求「补制 / 完善某时间周期(如 2026-07-01 ~ 2026-07-15)的日志」。

核心原则:日志必须按天保存,严禁将多天或跨期信息写入同一个日志文件。

  1. 解析周期:将用户给出的起止日期展开为逐日日期列表(含周六/日,因上市公司可能在休市日发布重要公告)。
  2. 逐日检索:对列表中每一天分别执行 Step 2 风格的关键词检索(搜索词附加该具体日期以提升时效), 获取该日公开信息。切勿一次性检索整个周期后混合归档。
  3. 按天落盘判定(对已指定路径逐日检查):
    • 检查 {local_dir}\{company_name}({stock_code})每日信息汇总\ 下是否已存在 《{company_name}日报_YYYY-MM-DD.md》
      • 已存在 → 将本次检索内容与原文比对:仅当原文未涵盖本次新检索到的信息 (新增事项 / 新来源 / 新进展)时,增量更新该文件(在原结构内追加或修订对应版块), 不整体覆盖、不丢失已有内容;去重键为「来源 + 日期 + 事项」。
      • 不存在新建 《{company_name}日报_YYYY-MM-DD.md》(及对应 HTML),按统一模板生成当日日报。
  4. 汇总表完善:全部日期处理完后,运行 python scripts/backfill_summary.py --code {stock_code}(或逐日 generate_report.py) 将各日等级信息写入 / 更新《{company_name}日报信息等级汇总.md》(单一汇总文件,有则更新、无则创建)。
  5. 云端同步(如已确认 sync_tencent_docs):执行 Step 11.5 将新增 / 更新的文件同步至腾讯文档。
  6. 校验:运行 backfill_summary.py --code {stock_code} --dry-run 确认「日报文件 ↔ 汇总记录」0 缺失。

该工作流与单日流程共用同一套脚本与模板,区别仅在于「外层按天循环 + 逐日比对更新」, 保证任意时间周期的日志都可被精确、可追溯地建立或完善。


关键模板引用

本技能依赖以下参考文档(均随本技能包一同分发,位于 references/ 目录,不依赖任何外部链接、仓库或网络下载):

| 文件 | 内容 | 来源 | |------|------|------| | references/classification-standards.md | A/B/C分类标准、审计维度、风险等级定义、持续跟踪事项管理 | 本技能原创规范 | | references/html-template.md | 完整HTML模板:CSS变量、组件样式、JS交互、HTML骨架 | 本技能自带原创骨架 |

模板来源与授权声明(重要)

references/html-template.md 是本技能自带、原创、随包分发的 HTML/CSS/JS 资源,不是从任何外部不可见位置粘贴或抓取的代码。其来源与性质明确如下:

  • 原创通用前端骨架:模板为作者原创的通用页面结构,采用系统字体栈(PingFang SC / Microsoft YaHei / Noto Sans SC 等)与纯原生 CSS/JS 实现。
  • 无任何第三方依赖:未使用 Bootstrap、Tailwind 等任何前端框架,未引入任何 CDN、外部字体文件或商业网站的专有样式/脚本,不存在复制他人受版权保护代码的情况。
  • 配色可配置:CSS 变量(如 --primary: #C7000B)为示例默认配色,用户可自由修改,不构成对任何特定品牌视觉的模仿或冒用。
  • 授权范围:本模板仅供本技能生成用户日报使用,可自由用于该用途,无额外许可限制。

以往版本曾要求"将外部 html-template.md 原样粘贴",现已澄清:该文件始终随本包提供,技能运行时应读取本包内 references/html-template.md 并据此生成,无需、也不会从任何外部/未披露来源获取代码。

生成方式(二选一,均自包含)

  1. 推荐 · 脚本生成(完全自包含):使用 scripts/generate_report.py,其已内联全部 CSS/JS(即 references/html-template.md 的同一套样式),运行时不依赖任何外部文件读取,直接根据输入 JSON 产出 HTML+MD 日报。这是最可控、可复现的生成路径。
  2. 规范生成(人工/对话式):在对话中生成日报时,读取本包内 references/html-template.md 的 CSS/JS/HTML 骨架作为结构基础,仅替换动态数据,保持组件类名与布局一致。

无论哪种方式,模板内容均来自本包自带资源,来源清晰、可审计。


依赖技能/工具

| 技能/工具 | 用途 | 场景 | |-----------|------|------| | WebSearch | 网络搜索(公开信息) | Step 2(用户勾选的 ①②③④⑤⑥⑦ 项) | | westock-mcp | 腾讯自选股行情 | Step 1.5 之 ⑧(用户勾选且连接器可用时) | | akshare-finance | AKShare行情数据 | Step 1.5 之 ⑧(用户勾选且连接器可用时) | | tushare-finance | 金融数据补充 | Step 1.5 之 ⑧(备选,用户勾选时) | | cninfo-filing-scraper | 巨潮公告检索 | Step 2 之 ①(如有,用户勾选时) | | scripts/generate_report.py | 生成 HTML+MD 日报并更新汇总表(含自动创建/更新汇总表) | Step 6/7/8 | | scripts/path_config.py | 双目标同步配置管理(本地+云端,强制确认记忆,查看/设置/关闭/重置) | Step 1.7 | | scripts/backfill_summary.py | 历史日报补录汇总表(含自动创建 md、每日 0 缺失校验) | Step 8.5 | | scripts/sync_tencent_docs.py | 本地日报目录 → 腾讯文档文件夹 幂等同步(去重/导入/归位,结果落盘) | Step 11.5 |


特殊场景处理

休市日(周六/周日/法定节假日)

  • 公告仍需查询(上市公司可能在休市日发布公告)
  • 行情数据使用最近交易日数据
  • C类事项可能较少或为零

多日补制

  • Web搜索附加具体日期
  • 按信息实际发布日期归入对应日期日报
  • 汇总表每个日期独立一行

A类为空

  • 使用 empty-state 组件:<div class="empty-state"><div class="icon">✅</div><div class="text">今日无重大事项</div></div>
  • 编号从1起,B类承接

行情数据缺失

  • 使用最近可获得的数据
  • 在标签中标注数据日期(如"收盘价(7月31日)")

文件输出规范

  • 所有文件使用 UTF-8 编码
  • HTML文件名:{company_name}日报_YYYY-MM-DD.html
  • MD文件名:{company_name}日报_YYYY-MM-DD.md
  • 金额单位统一使用"元",不进行万元/亿元转换
  • 涨跌颜色遵循中国A股惯例:涨→红(#C62828)、跌→绿(#2E7D32)
  • 货币符号使用 ¥
  • 日期格式:YYYY年M月D日 · 星期X

最终检查清单(生成前必检)

□ CSS变量是否与附录模板完全一致 □ Hero背景是否为 linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%) □ Hero badge文案是否为"内部审计 · 每日信息监控" □ 导航栏是否使用 nav-bar/nav-inner/nav-link 结构,7个锚点是否完整 □ Section header是否使用 section-icon + section-title 组合 □ 卡片是否使用 card-top/card-seq/card-body/card-summary/card-actions 结构 □ chip类名是否为 chip-source/chip-time/chip-level.a/b/c □ 审计要点是否使用 audit-list/audit-item(high/medium/low)/audit-priority/audit-text □ 风险卡片是否使用 risk-card(h4+p) 结构 □ 空状态是否使用 empty-state(icon ✅ + text) □ Footer是否包含总条数和数据源 □ 全局编号是否贯穿连续 □ 时间格式是否为人话格式 □ JS滚动动画和导航交互是否与附录模板一致 □ 文件是否UTF-8编码保存

如以上任何一项不符合,必须在交付前修正后方可交付。


版本修订说明

v1.5.0(2026-08-28)

  • 日报保存路径与云端同步规则优化
    • 本地路径首次确认后默认沿用:仅首次执行时与用户确认本地保存路径,写入 path_config.jsonconfirmed_targetslocal),后续执行默认沿用、不再询问;
    • 云端同步每次执行后单独询问:不再将 tencent_docs 视为永久确认目标;每次本地日报保存完成后通过 AskUserQuestion 单独询问「本次是否需要同步腾讯文档」,用户选择"是"才执行 Step 11.5,选择"否"则仅本地交付;
    • 云端根目录文件夹定位/新建:选择云端同步时,先按规则在云端根目录定位「{company}({code})每日信息汇总」文件夹(manage.folder_list 标题命中复用;未命中时因连接器暂未开放自动建文件夹接口,提示手动创建或复用历史 tencent_docs_dir_id),更新 tencent_docs_dir_id 后执行同步。

v1.4.0(2026-08-25)

  • 腾讯文档同步 file_id 解析缺陷正式修复(随包升级,统一版本号 V1.4)scripts/sync_tencent_docs.py 在 V1.1 已含修复逻辑,本次将脚本内部版本号由 V1.1 统一升级为 V1.4 并随包分发。根因:import_progress 首轮必报瞬态 11607 错误,而旧代码 if perr: break 在第一次轮询时即中断退出,导致永远取不到 file_idasync_import 仅返回 task_id、不含 file_id 字段,原兜底取值 res2.get("file_id") 为死代码,新文件导入成功却滞留云端根目录。修复后逻辑:轮询遇错重试不中断(第 2 轮即正常返回 file_id)+ 深度字段提取(file_id/fileId/doc_id/id)+ 标题检索兜底,文档导入成功后可靠取回 file_id 并自动 move_file 归位目标文件夹。
  • 实测验证通过(2026-08-25):执行 8/25 日报同步时,sync_tencent_docs.py --refresh-summary 返回「导入 2(8/25 新日报 + 刷新汇总表)/ 跳过 94 / 失败 0」,8/25 日报正确返回云端 URL(docs.qq.com/markdown/DUGNFVnZocG9Fa1d6)并归位目标文件夹,首次实现新文件同步零人工归位,原"取不到 file_id 滞留根目录需人工归位"缺陷已彻底消除。日志中的 11607 现为"文件已在目标文件夹内、无需再移动"的良性提示。
  • 统一脚本版本号generate_report.py / path_config.py 已为 V1.4;本次将 sync_tencent_docs.py(V1.1→V1.4)、backfill_summary.py(V1.3→V1.4)对齐至 V1.4,包内脚本版本一致,便于跨设备识别。
  • 自动化记忆标注~/.workbuddy/automations/{code}/memory.md 中"sync_tencent_docs.py 取 file_id 失败"已知问题已改为"已解决(V1.4 实测)",恢复脚本(search_file + move_file 人工归位)不再需要。

v1.3.0(2026-08-23)

  • 双目标同步 + 强制确认记忆(核心改造)path_config.json 由单一 save_mode 升级为 「本地 + 腾讯文档云端」双目标模型(sync_local / local_dir / sync_tencent_docs / tencent_docs_dir_id / confirmed_targets)。执行时强制确认本地与线上同步需求; 若历史记忆 confirmed_targets 已同时含 localtencent_docs 且路径有效,则直接执行; 否则先与用户确认再执行(Step 1.7)。path_config.py 同步升级:新增 --set-tencent --dir-id / --confirm-local / --confirm-tencent / --disable-local / --disable-tencent,旧 --set-local/--set-tencent 兼容。
  • 新增 sync_tencent_docs.py:本地日报目录 → 腾讯文档文件夹的幂等同步脚本。 按精确标题(去扩展名)检索云端、已存在则跳过(best-effort 归位)、不存在则导入并移入目标文件夹; 结果落盘 sync_result.json;支持 --dry-run / --force / --td-skill-dir(适配多设备路径)。 Step 11.5 改为调用本脚本落地云端,并固化强制确认闸门与失败降级。
  • 汇总表强制完善:Step 8 明确「每次执行(单日/周期)必须完善《XX日报信息等级汇总》单文件, 有则更新、无则创建」,作为后续复盘唯一索引。
  • 新增「按指定时间周期建立/完善日志工作流」:落实日志按天保存、严禁跨期/多天合并; 逐日检索 → 按天判定(已存在则比对增量更新、不存在则新建)→ 汇总表完善 → 云端同步 → 校验 0 缺失。
  • generate_report.py 路径逻辑适配双目标local_dir 始终用于本地落盘,纯云端模式回退临时目录。

v1.2.0(2026-08-21)

  • 新增「保存路径用户交互配置」:首次运行强制确认保存路径(本地路径 / 腾讯文档路径 / 自定义), 写入 ~/.workbuddy/automations/{code}/path_config.json,后续默认沿用;新增 scripts/path_config.py 用于查看/设置/重置配置(Step 1.7)。
  • 新增「历史日报补录」scripts/backfill_summary.py 自动将「有日报文件但汇总表未记录」的 日期补录至《日报信息等级汇总.md》主表——按日期升序插入、自动创建缺失的 md(不生成 HTML)、 兼容新旧两代日报格式(Step 8.5)。
  • 脚本层配置化默认保存generate_report.py / backfill_summary.py 未传 --output-dir 时 自动从 path_config.json 读取保存路径(--code 参数),实现"配置一次、后续默认沿用"。
  • 腾讯文档路径端到端流程:Step 1.7 补充腾讯文档模式完整执行路径(连接器建文件夹/取 dir_id → 本地临时生成 → Step 11.5 连接器上传 → 链接入记忆);新增 Step 11.5「腾讯文档上传日报」 (含上传失败降级本地交付策略)。
  • 汇总表结构统一:主表 = 全部日报日期(升序)+ 无日报占位行(待更新);保留历史备注与 重要融资/已兑付两张融资表;清理历史遗留的重复行、游离表与旧版章节残留。

v1.1.1(2026-08-21)

  • 修复汇总表插入定位逻辑(update_summary):v1.1.0 首次修复后,当主汇总表内存在历史遗留空行时,新行仍可能被插到中断处(如 8/03 之后而非最新日期之后)。v1.2.1 将数据区扫描升级为「| 行计为数据行、空行跳过、遇非表内容(>备注/#标题等)视为表结束」,确保新行始终落在第一个主汇总表最后一个数据行之后;已存在的日期行则原地替换。
  • 实测验证:2026-08-21 执行 8/21 日报时,8/21 行正确插入主表第 80 行(紧随 8/20),全文件仅出现一次,无需手工校正。
  • 顺带清理:脚本执行前可先清除汇总表「表内空行」(空行前后均为 | 数据行)与重复误插行,保持主表连续。

v1.1.0(2026-08-20)

  • 修复汇总表插入定位 bug(update_summary):原实现从文件末尾反向找最后一个 | 行,当汇总文件含多张表/备注结构时,会把新日期行误插到末尾的次要表格或备注区,导致顶部主表缺行。v1.1.0 改为定位第一个含 --- 分隔行的 Markdown 表格(即顶部主汇总表),在数据区末尾插入。

v1.0.0(首次封装)

  • 修复脚本日期显示 Bugscripts/generate_report.py 原 HTML 模板中日期渲染逻辑存在缺陷,会输出乱码日期(如"2026日08年18")。已修正为按 YYYY年M月D日 格式输出正确日期(如"2026年8月18日")。
  • 新增「保存路径确认」机制(Step 1.6):在执行任何写盘操作(创建目录、生成 HTML/MD、追加汇总表)之前,强制向用户展示拟保存的 HTML/MD 文件落点并请求确认或修改,杜绝静默写盘;未获确认不得创建目录或写文件。
  • 脚本跨平台修复:修正 strftime 中仅 Linux/macOS 支持的非跨平台格式(%-m/%-d),确保脚本在 Windows 环境下正常运行。