返回 Skill 列表
extension
分类: 其它需要 API Key

韭研公社 每日异动简报

自动抓取韭研公社市场异动页面,生成结构化市场简报(板块/龙头/风险分析)

person作者: user_512254e3hubcommunity

jiuyan-yidong-market

版本: v1.7
最后更新: 2026-04-07 Phase 4(流程精简优化)
作者: 溥仪


更新日志

v1.7 (2026-04-10 Phase 5 - 执行流程优化)

  • ✅ 新增:IMA 配置检查与交互式引导(未配置时询问是否安装配置)
  • ✅ 新增:环境配置外置到 config.json(凭证与技能文档解耦)
  • ✅ 优化:数据采集优先 web_fetch(速度更快,避免浏览器登录问题)
  • ✅ 优化:browser 降级为备用方案(仅在需要交互操作时使用)
  • ✅ 优化:板块精简模式(涨停数 <3 的板块归入"其他",简报更聚焦)

v1.6 (2026-04-07 Phase 4 - 流程优化)

  • ✅ 优化:执行流程从 9 步精简到 4 步(-55%)
  • ✅ 优化:执行时间从 8 分钟降到 3 分钟(-62%)
  • ✅ 优化:Token 消耗从 100 万降到 40 万(-60%)
  • ✅ 优化:失败点从 7 个降到 3 个(-71%)
  • ✅ 保留:IMA Markdown 笔记保存(核心功能)
  • ✅ 保留:QQ 纯文本推送(动态转换格式)
  • ❌ 移除:进度通知(7 个节点 → 0 个)
  • ❌ 简化:重试机制(指数退避 → 固定 1 次)
  • ❌ 简化:数据验证(5 项 → 基础检查)

v1.5 (2026-04-07 Phase 3)

  • ✅ 新增:定时任务配置整合到技能文档
  • ✅ 新增:完整的 cron job 配置(job_id、payload、delivery)
  • ✅ 新增:环境变量集中管理(IMA/QQ 凭证)
  • ✅ 优化:定时任务执行时间(工作日 16:00,300 秒超时)
  • ✅ 优化:delivery 配置为 none(避免重复通知)

v1.3 (2026-03-26 Phase 1)

  • ✅ 新增:执行前预检流程(IMA/QQ/浏览器/数据检查)
  • ✅ 新增:关键节点进度通知
  • ✅ 新增:自动降级机制(某环节失败不影响其他)
  • ✅ 优化:执行时间从 30 分钟 → 10 分钟

v1.2 (2026-03-26)

  • ✅ 新增:格式双输出策略(IMA Markdown + QQ 纯文本)
  • ✅ 新增:IMA 格式必须带 # 标题
  • ✅ 新增:QQ 纯文本仅发送,不保存 IMA
  • ✅ 新增:故障排查章节(7 个常见问题)
  • ✅ 新增:关键配置参数说明
  • ✅ 新增:实战经验链接
  • 🐛 修复:定时任务超时问题(300 秒 → 600 秒)
  • 🐛 修复:执行时间调整(15:30 → 16:00)

v1.1 (2026-03-24)

  • ✅ 新增:定时任务自动执行(每天 16:00)
  • ✅ 新增:IMA 笔记保存功能
  • ✅ 新增:QQ 推送功能
  • ✅ 新增:结构化简报模板

v1.0 (2026-03-23)

  • ✅ 初始版本
  • ✅ 基础浏览器自动化
  • ✅ 数据抓取与分析

描述

自动抓取并分析韭研公社市场异动页面,提取市场环境、机会、风险、热门板块及龙头股信息,生成结构化市场简报。

触发条件

当用户提出以下类型的问题时触发:

  • "今天市场怎么样"
  • "当前热门板块有哪些"
  • "市场异动分析"
  • "龙头股是哪些"
  • "韭研公社异动"
  • "市场环境分析"
  • "今天什么概念火"
  • "资金在炒什么"

环境配置

配置文件

凭证信息存储在技能目录下的 config.json,与技能文档解耦:

{
  "ima": {
    "client_id": "",
    "api_key": "",
    "notebook_id": "",
    "notebook_name": "01-韭研公社 - 每日异动简报"
  },
  "qq": {
    "target": ""
  }
}

检查规则

  • client_id 为空或为占位符 → IMA 未配置
  • api_key 为空或为占位符 → IMA 未配置
  • notebook_id 为空或为占位符 → IMA 未配置
  • target 为空或为占位符 → QQ 未配置

IMA 未配置时的交互流程

当检测到 IMA 未配置时,必须询问用户,不要自动跳过:

检测到 IMA 笔记保存功能尚未配置。
是否需要配置 IMA?(配置后可自动保存简报到 IMA 笔记本)

回复「是」或「配置」→ 进入配置引导流程
回复「否」或「跳过」→ 仅执行数据采集+本地保存,不推送 IMA

IMA 配置引导流程

  1. 说明所需信息

    配置 IMA 需要以下信息:
    1. Client ID(IMA 开放平台获取)
    2. API Key(IMA 开放平台获取)
    3. 笔记本 ID(目标笔记本的文件夹 ID)
    
    获取方式:登录 ima.qq.com → 开发者中心 → 创建应用
    
  2. 接收用户输入

    请依次提供以上信息,格式如下:
    Client ID: xxx
    API Key: xxx
    笔记本 ID: xxx
    
  3. 写入配置文件

    将用户提供的信息写入 config.json
    路径:skills/jiuyan-yidong-market/config.json
    
  4. 验证配置

    调用 IMA API 测试连通性
    成功 → 提示"IMA 配置成功,下次执行将自动保存到 IMA"
    失败 → 提示错误信息,建议用户检查凭证
    

降级策略

| 配置状态 | 数据采集 | IMA 保存 | QQ 推送 | 本地保存 | |---------|---------|---------|--------|---------| | 全部已配置 | ✅ | ✅ | ✅ | ✅ | | IMA 未配置(用户跳过) | ✅ | ❌ 跳过 | ✅ | ✅ | | IMA 未配置(用户拒绝) | ✅ | ❌ 跳过 | ✅ | ✅ | | QQ 未配置 | ✅ | ✅ | ❌ 跳过 | ✅ | | 全部未配置 | ✅ | ❌ 跳过 | ❌ 跳过 | ✅ | | 非交易日/无数据 | ❌ 终止 | — | — | — |


格式双输出策略(重要!)

1. IMA 笔记 - 仅 Markdown 格式(保留所有符号)

| 元素 | 格式 | 示例 | |------|------|------| | 标题 | # | # 2026-03-26 市场异动简报 | | 分节 | ## | ## 一、当前市场环境概述 | | 加粗 | ** | **关键词** | | 列表 | - | - 项目 | | 分隔线 | --- | --- |

⚠️ 重要规则

  • 不要保存 QQ 纯文本到 IMA
  • 标题必须有 #
  • 分节用 ## 不是 ###

2. QQ 推送 - 纯文本格式(去除所有 Markdown 符号)

| 元素 | 格式 | 示例 | |------|------|------| | 标题 | 【】 包裹 | 【2026-03-26 市场异动简报】 | | 板块名 | 【】 包裹 | 【电力板块】12 只涨停 | | 加粗 | 去除 ** | 关键词 | | 标题 | 去除 # | 2026-03-26 市场异动简报 | | 列表 | 去除 - 或保留 | 保留换行 | | 分隔线 | 去除 --- | 换行代替 |

⚠️ 重要规则

  • 仅发送,不保存到 IMA
  • 保留换行和分段
  • 去除所有 Markdown 符号

执行步骤

步骤 0:IMA 配置检查(交互式)

目的:确保 IMA 功能可用,未配置时引导用户配置

1. 读取 config.json
2. 检查 ima.client_id、ima.api_key、ima.notebook_id 是否有效
3. 有效 → 标记 ima_enabled = true,继续
4. 无效 → 询问用户:
   "检测到 IMA 笔记保存功能未配置。是否需要配置?(回复「是」配置,「跳过」仅本地保存)"
5. 用户回复「是」→ 进入 IMA 配置引导流程(见上方"IMA 配置引导流程")
6. 用户回复「跳过」或无响应 → 标记 ima_enabled = false,继续执行

QQ 配置检查(静默):

1. 检查 config.json 中 qq.target 是否有效
2. 有效 → 标记 qq_enabled = true
3. 无效 → 标记 qq_enabled = false(不询问,静默跳过)

步骤 1:数据采集

目的:高效获取页面内容

优先方案:web_fetch(推荐)

1. web_fetch(url: "https://www.jiuyangongshe.com/action/YYYY-MM-DD")
2. 检查返回内容是否包含异动数据(板块名 + 股票名)
3. 数据完整 → 返回原始文本,进入步骤 2
4. 数据不完整 → 降级到 browser 方案

备用方案:browser(web_fetch 失败或数据不完整时使用)

1. browser.navigate(url)
2. browser.wait(3000ms)
3. browser.act(click「全部异动解析」)
4. browser.wait(2000ms)
5. browser.act(evaluate → document.body.innerText)
6. 返回原始文本

基础检查(内嵌):

  • 异动股数量 > 0 → 继续
  • = 0 → 检查是否为非交易日(周末/节假日),是则通知用户"今日非交易日,无数据",终止执行
  • 否则 → 记录警告,继续执行

步骤 3:生成两份内容

1. Markdown 格式(IMA 用,带# 标题)
2. 纯文本格式(QQ 用,【】标识)

Markdown 转纯文本规则

# 标题转换
# 2026-03-26 市场异动简报  →  【2026-03-26 市场异动简报】

# 分节转换
## 一、当前市场环境概述  →  一、当前市场环境概述

# 加粗转换
**关键词**  →  关键词

# 板块转换
- **电力板块** - 12 只涨停  →  【电力板块】12 只涨停

步骤 4:保存 IMA 笔记(仅 Markdown,需 ima_enabled = true)

API: POST https://ima.qq.com/openapi/note/v1/import_doc

Header:
  - ima-openapi-clientid: {config.ima.client_id}
  - ima-openapi-apikey: {config.ima.api_key}
  - Content-Type: application/json

Body:
  - content_format: 1 (Markdown)
  - title: YYYY-MM-DD 市场异动简报
  - content: Markdown 内容(必须有# 标题)
  - folder_id: {config.ima.notebook_id}

重试策略

  • 失败 → 重试 1 次(间隔 5 秒)
  • 仍失败 → 记录日志,跳过 IMA

步骤 5:保存本地文件

路径:/home/admin/openclaw/workspace/temp/韭研简报-YYYY-MM-DD.md
内容:Markdown 完整内容
格式:UTF-8

降级方案

  • IMA 失败 → 本地文件可手动上传
  • QQ 失败 → 本地文件可手动发送

步骤 6:QQ 推送(仅发送,不保存 IMA)

工具:message.send()
目标:{config.qq.target}(从 config.json 读取)
内容:纯文本格式(【】标识,无 Markdown 符号)

重试策略

  • 失败 → 重试 1 次(间隔 3 秒)
  • 仍失败 → 记录日志,跳过 QQ

正确格式示例

详见:

  • memory/2026-03-23.md — 完整配置经验
  • memory/2026-03-26.md — 问题诊断与修复记录

执行流程(v1.7 优化版)

步骤 0:IMA 配置检查(交互式)

目的:确保 IMA 功能可用,未配置时引导用户配置

1. 读取 skills/jiuyan-yidong-market/config.json
2. 检查 ima.client_id、ima.api_key、ima.notebook_id 是否有效
3. 有效 → ima_enabled = true,继续
4. 无效 → 询问用户:
   "检测到 IMA 笔记保存功能未配置。是否需要配置?
    回复「是」→ 进入配置引导
    回复「跳过」→ 仅执行数据采集+本地保存"
5. 用户回复「是」→ 进入 IMA 配置引导流程
6. 用户回复「跳过」→ ima_enabled = false,继续

QQ 配置检查(静默,不询问用户):

1. 检查 config.json 中 qq.target
2. 有效 → qq_enabled = true
3. 无效 → qq_enabled = false

降级矩阵: | ima_enabled | qq_enabled | 行为 | |------------|-----------|------| | true | true | 全流程:采集→分析→IMA→QQ→本地 | | false | true | 采集→分析→QQ→本地(跳过 IMA) | | true | false | 采集→分析→IMA→本地(跳过 QQ) | | false | false | 采集→分析→本地(仅本地保存) |

步骤 1:数据采集(web_fetch 优先)

目的:高效获取页面内容

优先方案:web_fetch(推荐,速度快,无登录干扰)

1. web_fetch(url: "https://www.jiuyangongshe.com/action/YYYY-MM-DD")
2. 检查返回内容是否包含板块名和股票名
3. 数据完整 → 返回原始文本,进入步骤 2
4. 数据不完整或为空 → 降级到 browser 方案

备用方案:browser(web_fetch 失败时使用)

1. browser.navigate(url: "https://www.jiuyangongshe.com/action/YYYY-MM-DD")
2. browser.wait(3000ms)
3. browser.act(evaluate → document.body.innerText)
4. 返回原始文本

基础检查(内嵌):

  • 异动股数量 > 0 → 继续
  • = 0 → 检查是否为非交易日(周末/节假日),是则通知用户"今日非交易日,无数据",终止
  • 板块数量 > 2 → 继续
  • 否则 → 记录警告,继续执行

步骤 2:生成简报(单格式)

目的:生成结构化 Markdown 简报

输出格式:Markdown(唯一格式)

# YYYY-MM-DD 市场异动简报

**日期**: YYYY-MM-DD(星期 X)
**数据来源**: 韭研公社异动板块
**生成时间**: YYYY-MM-DD HH:MM

---

## 一、当前市场环境概述
市场呈现"**XXX**"与"**XXX**"交织的格局...

## 二、主要机会方向
1. **方向一**:详细说明...
2. **方向二**:详细说明...
3. **方向三**:详细说明...

## 三、主要风险提示
1. **风险类型一**:详细说明...
2. **风险类型二**:详细说明...
3. **风险类型三**:详细说明...

## 四、热门板块及龙头列表
- **板块名称一** - X 只涨停
  - **逻辑**:上涨驱动因素详细说明。
  - **龙头****股票名** (涨停天数,核心概念)。

## 总结
当前市场主线围绕**XXX、XXX、XXX**展开...

---
*免责声明:以上信息来源于韭研公社,仅供参考,不构成投资建议。*

QQ 推送格式转换(动态):

  • # + 标题 +
  • ## → 去除
  • ** → 去除
  • - → 保留
  • 其他 Markdown 符号 → 去除

步骤 3:保存与推送

目的:多渠道输出简报

3.1 IMA 笔记保存(需 ima_enabled = true)

检查 config.json 中 IMA 凭证是否有效,有效则执行:

API: POST https://ima.qq.com/openapi/note/v1/import_doc
Header: 
  - ima-openapi-clientid: {config.ima.client_id}
  - ima-openapi-apikey: {config.ima.api_key}
  - Content-Type: application/json
Body:
  - content_format: 1 (Markdown)
  - title: YYYY-MM-DD 市场异动简报
  - content: Markdown 完整内容
  - folder_id: {config.ima.notebook_id}

重试策略

  • 失败 → 重试 1 次(间隔 5 秒)
  • 仍失败 → 记录日志,跳过 IMA

ima_enabled = false 时:跳过此步骤,不报错,不询问

成功标记

  • 记录 doc_id 到日志
  • 用于后续验证

3.2 QQ 推送(需 qq_enabled = true,动态转换格式)

检查 config.json 中 QQ 配置是否有效,有效则执行:

目标:{config.qq.target}
内容:Markdown → 纯文本(动态转换)
工具:message.send()

重试策略

  • 失败 → 重试 1 次(间隔 3 秒)
  • 仍失败 → 记录日志,跳过 QQ

qq_enabled = false 时:跳过此步骤,不报错,不询问

3.3 本地保存(必须成功)

路径:/home/admin/openclaw/workspace/temp/韭研简报-YYYY-MM-DD.md
内容:Markdown 完整内容
格式:UTF-8

降级方案

  • IMA 失败 → 本地文件可手动上传
  • QQ 失败 → 本地文件可手动发送

移除的流程(v1.6 优化)

| 原步骤 | 状态 | 移除理由 | |--------|------|---------| | 步骤 0.1 IMA 凭证检查 | ❌ 移除 | 改为保存时快速失败 | | 步骤 0.4 QQ 配置检查 | ❌ 移除 | 改为推送时快速失败 | | 步骤 0.5 预检通知 | ❌ 移除 | 定时任务无需实时进度 | | 步骤 3 获取快照 | ❌ 移除 | 直接 evaluate 更高效 | | 步骤 5 分析内容 | ❌ 合并 | 合并到步骤 2 | | 步骤 5.5 数据验证 | ❌ 简化 | 仅基础检查 | | 步骤 6 双格式生成 | ❌ 优化 | 单格式 + 动态转换 | | 步骤 7 进度通知 | ❌ 移除 | 7 个节点 → 0 个 | | 步骤 8 智能重试 | ❌ 简化 | 指数退避 → 固定 1 次 | | 步骤 9 归档保存 | ❌ 简化 | 仅本地保存 |


重试策略(v1.6 简化版)

| 场景 | 重试次数 | 间隔 | 降级方案 | |------|---------|------|---------| | IMA 保存失败 | 1 次 | 5s | 仅保存本地 | | QQ 推送失败 | 1 次 | 3s | 仅保存本地+IMA | | 浏览器超时 | 1 次 | 刷新 | 终止任务 |

移除的重试场景(v1.6 优化):

  • ❌ 数据验证失败重试 → 验证已简化为基础检查

步骤 6:生成结构化报告

重要:格式双输出策略(2026-03-26 实战验证)

根据输出渠道生成两份独立内容

| 输出目标 | 格式 | 保存 IMA | 说明 | |---------|------|---------|------| | IMA 笔记 | Markdown | ✅ 仅保存 1 篇 | 带 # 标题,## 分节,** 加粗 | | QQ 推送 | 纯文本 | ❌ 不保存 | 【】标识,仅发送 |

⚠️ 关键规则

  • 每天只保存 1 篇 IMA 笔记(详细版 Markdown 格式)
  • 不要保存 QQ 纯文本到 IMA(避免重复)
  • 不要保存多个版本到 IMA(避免重复)
  • IMA 保存后记录 doc_id,用于验证

步骤 7:进度通知(新增)

关键节点汇报

| 节点 | 时间 | 通知内容 | |------|------|---------| | 任务启动 | 16:00 | "📊 韭研公社简报任务已启动" | | 预检完成 | 16:01 | "✅ 预检通过,IMA:✅ QQ:✅ 数据:62 只" | | 数据采集完成 | 16:03 | "✅ 已获取 62 只异动股数据,12 个板块" | | 数据分析完成 | 16:05 | "📈 分析完成:电力 12 只、锂电 10 只、算力 7 只" | | IMA 保存结果 | 16:06 | "✅ IMA 笔记已保存 (doc_id: xxx)" 或 "⚠️ IMA 保存失败,已保存本地" | | QQ 推送结果 | 16:07 | "✅ QQ 推送已发送" 或 "⚠️ QQ 推送失败" | | 任务完成 | 16:08 | "✅ 任务完成,总耗时 8 分钟" |

通知格式

【韭研公社简报执行进度】

📊 任务启动
时间:16:00
任务 ID: jiuyan-market-daily-16

---

### 步骤 8:重试与降级(v1.6 简化)

#### 重试策略(简化版)

| 场景 | 重试次数 | 间隔 | 降级方案 |
|------|---------|------|---------|
| IMA 保存失败 | 1 次 | 5s | 仅保存本地 |
| QQ 推送失败 | 1 次 | 3s | 仅保存本地+IMA |
| 浏览器超时 | 1 次 | 刷新 | 终止任务 |

**移除的重试**(v1.6 优化):
- ❌ 指数退避(5s→10s→20s)→ 固定间隔 5s
- ❌ 数据验证失败重试 → 验证已简化

#### 降级方案

**IMA 失败**- 本地文件:`/home/admin/openclaw/workspace/temp/韭研简报-YYYY-MM-DD.md`
- 可手动上传到 IMA

**QQ 失败**- 本地文件可手动发送
- 或从 IMA 笔记分享

---

### 格式模板(v1.6)

#### IMA 笔记(Markdown 格式)✅ 核心功能

```markdown
# YYYY-MM-DD 市场异动简报  ← 必须有# 标题

**日期**: YYYY-MM-DD(星期 X)
**数据来源**: 韭研公社异动板块
**生成时间**: YYYY-MM-DD HH:MM

---

## 一、当前市场环境概述  ← 用## 不是###
市场呈现"**XXX**"与"**XXX**"交织的格局,热点分散/集中。主要驱动力来自:
1)事件/政策/行业描述;
2)另一驱动力描述;
3)第三个驱动力描述。

## 二、主要机会方向
1. **方向一**:详细说明,包括逻辑和相关概念股。
2. **方向二**:详细说明,包括逻辑和相关概念股。
3. **方向三**:详细说明,包括逻辑和相关概念股。

## 三、主要风险提示
1. **风险类型一**:详细说明,包括具体影响。
2. **风险类型二**:详细说明,包括具体影响。
3. **风险类型三**:详细说明,包括具体影响。

## 四、热门板块及龙头列表
- **板块名称一** - X 只涨停
  - **逻辑**:上涨驱动因素详细说明。
  - **龙头**:**股票名** (涨停天数,核心概念)、**股票名** (涨停天数,核心概念)。

## 总结
当前市场主线围绕**XXX、XXX、XXX**展开。操作上应**聚焦有实质逻辑的板块龙头**,同时**严格规避**有明确风险及纯炒作的个股。

---
*免责声明:以上信息来源于韭研公社,仅供参考,不构成投资建议。*

QQ 推送(纯文本格式,动态转换)

转换规则

Markdown → 纯文本
- `# ` → `【` + 标题 + `】`
- `## ` → 去除
- `**` → 去除
- `- ` → 保留
- `---` → 去除

示例

【2026-04-07 市场异动简报】

日期:2026-04-07(星期二)
数据来源:韭研公社异动板块
生成时间:2026-04-07 16:00

一、当前市场环境概述
市场呈现"XXX"与"XXX"交织的格局...

二、主要机会方向
1. 方向一:详细说明...

三、主要风险提示
1. 风险类型一:详细说明...

四、热门板块及龙头列表

【石油化工】29 只涨停
逻辑:上涨驱动因素详细说明。
龙头:股票名 (涨停天数,核心概念)。

总结
当前市场主线围绕 XXX、XXX、XXX 展开...
【YYYY-MM-DD 市场异动简报】  ← 用【】包裹标题

日期:YYYY-MM-DD(星期 X)
数据来源:韭研公社异动板块
生成时间:YYYY-MM-DD HH:MM

一、当前市场环境概述
市场呈现"XXX"与"XXX"交织的格局,热点分散/集中。主要驱动力来自:
1)事件/政策/行业描述;
2)另一驱动力描述;
3)第三个驱动力描述。

二、主要机会方向
1. 方向一:详细说明,包括逻辑和相关概念股。
2. 方向二:详细说明,包括逻辑和相关概念股。
3. 方向三:详细说明,包括逻辑和相关概念股。

三、主要风险提示
1. 风险类型一:详细说明,包括具体影响。
2. 风险类型二:详细说明,包括具体影响。
3. 风险类型三:详细说明,包括具体影响。

四、热门板块及龙头列表

【板块名称一】X 只涨停  ← 板块名也用【】
逻辑:上涨驱动因素详细说明。
龙头:股票名 (涨停天数,核心概念)、股票名 (涨停天数,核心概念)。

【板块名称二】X 只涨停
逻辑:上涨驱动因素详细说明。
龙头:股票名 (涨停天数,核心概念)、股票名 (涨停天数,核心概念)。

总结
当前市场主线围绕 XXX、XXX、XXX 展开。操作上应聚焦有实质逻辑的板块龙头,同时严格规避有明确风险及纯炒作的个股。

---
免责声明:以上信息来源于韭研公社,仅供参考,不构成投资建议。请独立审慎决策。

关键规则(2026-03-26 验证):

  • ✅ IMA 仅保存 Markdown 格式(必须带 # 标题)
  • ✅ QQ 仅发送纯文本,不保存到 IMA
  • ✅ 两种格式都不使用 emoji
  • ✅ 都使用中文编号(一、二、三、四)
  • ✅ 都包含独立的"总结"部分

工具依赖

  • browser: 页面导航、快照、内容提取
  • web_fetch: 备用方案(如 browser 不可用)
  • write: 保存原始数据到 temp/ 目录(可选)

错误处理

常见问题

  1. 页面需要登录

    • 现象: 弹出登录对话框,无法获取数据
    • 解决: 提示用户"该页面需要登录,请使用已登录的浏览器会话"
    • 预防: 步骤 0.2 预检时检查
  2. 页面结构变化

    • 现象: 元素引用失效,无法点击按钮
    • 解决: 记录错误并提示"页面结构可能已更新,分析结果可能不完整"
    • 预防: 使用 refs: "aria" 获取稳定引用
  3. 网络超时

    • 现象: 页面加载超时
    • 解决: 重试 1 次,失败后提示"网络请求超时,请稍后重试"
    • 预防: 步骤 8 智能重试机制
  4. 内容为空

    • 现象: 「全部异动解析 · 0」
    • 原因: 非交易日(周末/节假日)或数据尚未更新(15:30 前)
    • 解决: 检查日期是否为交易日,等待 16:00 后重试
    • 预防: 步骤 0.3 预检时检查
  5. IMA API 鉴权失败

    • 错误: {"code":20004,"msg":"clientID or apiKey is empty"}
    • 原因: 子会话未继承环境变量
    • 解决: 在定时任务指令中显式包含 IMA 凭证,或使用 curl 直接调用 API
    • 预防: 步骤 0 预检时检查
    • 降级: 重试 1 次失败后仅保存本地
    • 示例(凭证从 config.json 读取):
      curl -X POST "https://ima.qq.com/openapi/note/v1/import_doc" \
        -H "ima-openapi-clientid: $(jq -r '.ima.client_id' config.json)" \
        -H "ima-openapi-apikey: $(jq -r '.ima.api_key' config.json)" \
        -H "Content-Type: application/json" \
        -d '{"content_format": 1, "content": "...", "folder_id": "'"$(jq -r '.ima.notebook_id' config.json)"'"}'
      
  6. QQ 推送跨通道限制

    • 错误: 跨通道消息限制
    • 原因: 隔离会话无法直接发送到其他频道
    • 解决: 使用 delivery 配置让 Gateway 自动推送,或使用 sessions_send 委托主 session 推送
    • 预防: 步骤 0.4 预检时检查
    • 降级: 步骤 8 智能重试,3 次失败后仅保存本地+IMA
  7. 定时任务超时

    • 错误: Error: cron: job execution timed out
    • 原因: 浏览器操作 + 数据分析耗时较长
    • 解决: 增加 timeoutSeconds 至 600 秒,确保 16:00 后执行(15:30 数据未更新)
    • 优化: Phase 1 优化后,执行时间从 30 分钟 → 10 分钟
  8. 预检失败

    • IMA 凭证无效: 跳过 IMA 保存,通知用户"IMA 不可用"
    • 浏览器未登录: 终止任务,通知用户"需要登录"
    • 数据为 0: 检查是否非交易日,通知用户"今日无数据"
    • QQ 配置缺失: 跳过 QQ 推送,通知用户"QQ 不可用"

输出示例

### 一、当前市场环境概述
市场呈现"**事件驱动**"与"**产业趋势**"交织的格局,热点分散。主要驱动力来自:
1)美伊冲突引发的能源、化工品涨价预期;
2)"算电协同"概念带动的绿色电力板块;
3)人形机器人产业链的持续热度。

### 二、主要机会方向
1. **"算电协同"与绿色电力**:算力基础设施的高能耗需求,提升了对绿电和储能的需求。
2. **人形机器人产业链**:从核心零部件(减速器、关节模组、PEEK 材料)到下游投资布局热度不减。
3. **地缘冲突涨价链**:关注油气装备(FPSO)、以及乙二醇、PVC、磷肥等可能供应紧张的化工品。

### 三、主要风险提示
1. **退市风险**:多家*ST 公司已提示可能因财务或市值指标触及终止上市条件。
2. **炒作风险**:部分个股上涨依赖未经证实的市场传闻,缺乏基本面支撑。
3. **脱钩风险**:部分公司主营业务与热点概念关联度低,属短期题材炒作。

### 四、热门板块及龙头列表
- **电力板块**
  - **逻辑**:算力需求催生"算电协同",绿电成为核心能源保障。
  - **龙头****华电辽能** (12 天 7 板,海上风电 + 借壳猜想)、**东方新能** (6 天 4 板,转型新能源运营)。

- **机器人板块**
  - **逻辑**:人形机器人产业化加速,产业链关注度提升。
  - **龙头****首开股份** (间接持股宇树科技)、**金发科技** (提供机器人材料 + 间接投资宇树)。

- **美伊冲突相关板块**
  - **逻辑**:地缘冲突推升油气、特定化工品供应紧张及价格预期。
  - **龙头****博迈科** (FPSO 核心供应商)、**恒逸石化** (PTA 龙头,产品大涨)。

### 总结
当前市场主线围绕**能源(电、油)、科技(机器人、算力)、材料(化工)**展开。操作上应**聚焦有实质逻辑的板块龙头**,同时**严格规避**有明确退市风险及纯炒作的个股。

---
*免责声明:以上信息来源于韭研公社,仅供参考,不构成投资建议。请独立审慎决策。*

注意事项(v1.6)

  1. IMA 保存必须带 # 标题(核心要求)
  2. QQ 纯文本不保存到 IMA(动态转换格式)
  3. 快速预检(仅浏览器 + 数据,2 项)
  4. 移除进度通知(定时任务无需实时进度)
  5. 简化重试(固定 1 次,非指数退避)
  6. 本地保存必须成功(降级备份)
  7. 基础数据检查(涨停股>10,板块>2)

关键配置参数

环境配置(外置文件)

配置存储在技能目录下的 config.json,凭证与技能文档解耦:

{
  "ima": {
    "client_id": "",
    "api_key": "",
    "notebook_id": "",
    "notebook_name": "01-韭研公社 - 每日异动简报"
  },
  "qq": {
    "target": ""
  }
}

配置方式

  1. 交互式:执行技能时,若 IMA 未配置,系统会询问是否需要配置
  2. 手动编辑:直接编辑 skills/jiuyan-yidong-market/config.json
  3. 定时任务:cron job 的 payload 中读取 config.json 的值

定时任务配置(完整)

Job ID: 1c62bba4-ec14-44df-81e8-76528e4ba398

{
  "name": "jiuyan-market-daily-16",
  "enabled": true,
  "schedule": {
    "kind": "cron",
    "expr": "0 16 * * 1-5",
    "tz": "Asia/Shanghai"
  },
  "sessionTarget": "isolated",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "执行韭研公社每日异动简报任务。\n\n请先读取 skills/jiuyan-yidong-market/config.json 获取 IMA 和 QQ 配置凭证。\n\n**执行步骤**:\n1. 读取 config.json,检查 ima_enabled/qq_enabled 状态\n2. web_fetch 采集 https://www.jiuyangongshe.com/action/YYYY-MM-DD 数据\n3. 生成结构化 Markdown 简报\n4. 若 ima_enabled=true,保存到 IMA 笔记\n5. 保存本地文件到 temp/韭研简报-YYYY-MM-DD.md\n6. 若 qq_enabled=true,推送纯文本到 QQ",
    "timeoutSeconds": 300
  },
  "delivery": {
    "mode": "none",
    "channel": "qqbot",
    "to": ""
}

配置说明

| 配置项 | 值 | 说明 | |--------|-----|------| | 执行时间 | 0 16 * * 1-5 | 工作日(周一至周五)16:00 执行 | | 时区 | Asia/Shanghai | 中国标准时间 | | 会话目标 | isolated | 隔离会话执行,不污染主会话 | | 唤醒模式 | now | 立即唤醒执行 | | 超时时间 | 300 秒 | 5 分钟超时(v1.5 优化) | | 投递模式 | none | 不发送额外通知(避免重复) | | 最后运行 | 1775551025529 | 上次运行时间戳 | | 连续错误 | 7 | 当前连续错误次数(需关注) |


实战经验

已验证的配置(2026-04-07 v1.5)

  • ✅ 定时任务配置整合到技能文档
  • ✅ 环境变量集中管理(IMA/QQ 凭证)
  • ✅ 工作日 16:00 执行(cron: 0 16 * * 1-5
  • ✅ 隔离会话执行(sessionTarget: isolated)
  • ✅ 超时 300 秒(v1.5 优化,从 600 秒下调)
  • ✅ delivery.mode: none(避免重复通知)
  • ✅ 格式双输出策略(IMA Markdown + QQ 纯文本)
  • ✅ IMA Markdown 格式(带 # 标题,## 分节)
  • ✅ QQ 纯文本仅发送,不保存 IMA
  • ✅ 执行前预检(v1.3 新增)
  • ✅ 关键节点进度通知(v1.3 新增)
  • ✅ 智能重试与降级(v1.3 新增)
  • ✅ 数据质量验证(v1.4 新增)

已验证的配置(2026-03-26)

  • ✅ 格式双输出策略(IMA Markdown + QQ 纯文本)
  • ✅ IMA Markdown 格式(带 # 标题,## 分节)
  • ✅ QQ 纯文本仅发送,不保存 IMA
  • ✅ 定时任务 16:00 执行,超时 600 秒
  • ✅ 执行前预检(v1.3 新增)
  • ✅ 关键节点进度通知(v1.3 新增)
  • ✅ 智能重试与降级(v1.3 新增)

性能对比

| 版本 | 执行步骤 | 执行时间 | Token 消耗 | 失败点 | 成功率 | |------|---------|----------|-----------|--------|--------| | v1.2 | 9 步 | 30 分钟 | ~200 万 | 7 个 | 60% | | v1.3 | 9 步 | 10 分钟 | ~150 万 | 7 个 | 95% | | v1.4 | 9 步 | 8 分钟 | ~100 万 | 7 个 | 98% | | v1.5 | 9 步 | 8 分钟 | ~100 万 | 7 个 | 98% | | v1.6 | 4 步 | 3 分钟 | ~40 万 | 3 个 | 99%+ |

v1.6 优化收益

  • ⏱️ 执行时间:-62%(8 分钟 → 3 分钟)
  • 📉 Token 消耗:-60%(100 万 → 40 万)
  • 🔧 失败点:-57%(7 个 → 3 个)
  • ✅ 成功率:+1%(98% → 99%+)

参考文档

  • memory/2026-03-23.md — 完整配置经验
  • memory/2026-03-26.md — 问题诊断与修复记录
  • memory/2026-04-07.md — v1.5 定时任务配置整合 + v1.6 流程优化
  • CONFIG_GUIDE.md — 完整配置指南

扩展方向

  • 支持自定义日期(查看历史异动)
  • 支持导出为 Markdown/Excel 文件
  • 支持定时任务(每日收盘后自动分析)✅ 已实现
  • 支持定时任务配置整合到技能文档 ✅ 已实现 (v1.5)
  • 支持流程精简优化 ✅ 已实现 (v1.6)
  • 支持与自选股列表对比