Install
openclaw skills install ccf-events查询CCF(中国计算机学会)近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐(根据用户研究领域/兴趣偏好筛选活动),自动区分活动状态(报名中/即将开始/已结束),为已结束活动提供数字图书馆视频和讲稿检索。
openclaw skills install ccf-events获取中国计算机学会(CCF)近期学术会议、认证考试、活动日程等信息。
个性化推荐:如果用户提供了兴趣偏好(如研究方向、技术领域等),根据用户兴趣从所有活动中筛选并推荐相关活动。
https://conf.ccf.org.cn/conf/v2/index/meeting/list.do{
"pageNo": 1,
"pageSize": 50,
"signupTimeState": "0",
"sortType": "0"
}
从API返回的会议数据中,每个会议记录包含:
会议详情页面URL生成优先级:
| 会议类型 | URL格式 |
|---|---|
| CNCC | https://cncc[年份].ccf.org.cn |
| YEF(青年精英大会) | https://yef[年份].ccf.org.cn |
| ADL(学科前沿讲习班) | https://ccf.org.cn/ADL[编号] |
| NCCA(计算机应用大会) | https://ccf.org.cn/ncca[年份] |
如果用户提供了兴趣偏好,先收集并记录:
# 基础查询(无需用户输入)
curl -s -X POST "https://conf.ccf.org.cn/conf/v2/index/meeting/list.do" \
-H "Content-Type: application/json" \
-d '{"pageNo":1,"pageSize":50,"signupTimeState":"0","sortType":"0"}'
从返回的JSON中提取 data.records 数组,每个记录包含:
根据上述优先级规则生成每个会议的详情页面URL。
判断活动状态的逻辑:
当用户想查询已结束活动的资源(视频、PPT、讲稿等)时使用。
⚠️ 安全规范:用户输入的搜索关键词必须进行 URL 编码,禁止直接拼接到 URL 中。
# ✅ 正确做法:使用 --data-urlencode 自动编码
SEARCH_TERM="用户输入的关键词"
curl -G -sL "https://dl.ccf.org.cn/video/videoIndex.html" \
--data-urlencode "searWord=${SEARCH_TERM}" \
--data-urlencode "pageNum_p=1"
# 按会议类型检索(固定关键词,安全)
curl -G -sL "https://dl.ccf.org.cn/video/videoIndex.html" \
--data-urlencode "searWord=ADL" \
--data-urlencode "pageNum_p=1"
# 按年份检索
curl -G -sL "https://dl.ccf.org.cn/video/videoIndex.html" \
--data-urlencode "year=2025" \
--data-urlencode "pageNum_p=1"
# 按用户输入的关键词检索(必须编码)
curl -G -sL "https://dl.ccf.org.cn/video/videoIndex.html" \
--data-urlencode "searWord=${USER_KEYWORD}" \
--data-urlencode "pageNum_p=1"
【强制要求】必须严格按照以下格式输出,禁止输出无格式的列表或长文本!
| 活动日期与当前日期比较 | 状态 | 必须输出的列 |
|---|---|---|
| 活动在当前日期之后,且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |
| 活动在当前日期之后,报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |
| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |
如果用户提供了兴趣偏好,在输出开头增加「为你推荐」板块:
# CCF 近期活动概览
**查询日期:2026-05-06**
## 🎯为你推荐
> 根据你的兴趣偏好(XXX),为你筛选了以下活动:
| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |
|------|----------|------|----------|----------|
| 2026-XX-XX | 活动名称 | 地点 | 匹配"人工智能"领域 | [会议地址](https://ccf.org.cn/shortUrl) |
# CCF 近期活动概览
**查询日期:2026-05-06**
## 🎯为你推荐
> 根据你的兴趣偏好(XXX),为你筛选了以下活动:
| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |
|------|----------|------|----------|----------|
| 2026-XX-XX | 活动名称 | 地点 | 匹配"XXX" | [会议地址](https://ccf.org.cn/shortUrl) |
## 🟢 正在报名中
| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |
|------|----------|------|----------|----------|
| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |
## 🔵 即将举办(未开始报名)
| 日期 | 活动名称 | 地点 | 状态 |
|------|----------|------|------|
| 2026-XX-XX | 活动名称 | 地点 | 即将开始 |
## ⚪ 已结束
| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |
|------|----------|------|----------|----------|
| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |
当用户提供兴趣偏好时,必须执行:
| 活动 | 关键词 |
|---|---|
| CCDE | 数字经济、AI+场景、产业数字化 |
| FCES | 计算机教育、教育改革、教学创新 |
| CCDM | 数据挖掘、机器学习、知识发现 |
| WISA | 信息系统、大数据、知识图谱 |
| NLPCC | 自然语言处理、中文计算、LLM |
| YEF | 青年科技、创新创业、前沿技术 |
| CNCC | 计算机大会、旗舰会议、综合 |
| ADL | 学科前沿、讲习班、培训 |
| GESP | 编程认证、青少年、等级考试 |
| CCF公益日 | 公益、技术公益、社会责任 |
| 认证缩写 | 全称 | 目标人群 | 官方网站 |
|---|---|---|---|
| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |
| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |
| LMCC | CCF大模型能力认证(青少年组/成人组) | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |
| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |
对于GESP、PTA、LMCC认证,可直接访问其官方网站获取最新信息:
# GESP认证信息
web_fetch --url "https://gesp.ccf.org.cn" --extractMode markdown
# PTA认证信息
web_fetch --url "https://pta.ccf.org.cn" --extractMode markdown
# LMCC认证信息
web_fetch --url "https://lmcc.ccf.org.cn" --extractMode markdown
CSP认证官网(cspro.org)需要特殊处理:
# 使用web_search获取CSP最新通知
web_search --query "CCF CSP 认证考试 报名时间 YYYY"
# 或直接访问CSP官网
web_fetch --url "https://www.cspro.org" --extractMode markdown
当用户询问认证信息时,按以下优先级执行:
检查是否有具体认证类型(GESP/PTA/LMCC/CSP)
提取关键信息:
格式化输出:
严格区分不同类型的日期:
数据源优先级:
验证逻辑:
错误预防措施:
# CCF认证考试报名信息汇总(查询日期:YYYY-MM-DD)
## [认证名称]
**最新考试安排:**
- **第X次认证**:YYYY年MM月DD日
- [具体时间安排]
- **报名时间**:[报名开始时间] - [报名截止时间]
- **费用标准**:[费用详情]
- **报名方式**:
- 官网报名:[官方链接]
- [其他报名方式]
- **参与条件**:[参与要求]
[重复以上结构为每个认证类型]
## 各认证官网链接
| 认证类型 | 官方网站 |
|----------|----------|
| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |
| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |
| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |
| CSP | [https://www.cspro.org](https://www.cspro.org) |
## ⏰ 近期重要时间节点
- **[认证名称]报名**:[截止日期](还有X天)
- **[认证名称]考试**:[考试日期]
> **温馨提示**:建议考生提前注册账号并熟悉报名流程,部分考点考位有限,建议尽早报名。
数据格式变更:
认证时间冲突:
日期解析错误预防:
| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |
|---|---|---|---|
| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生(19岁以下) | https://www.noi.cn/ |
| CSP-J/S | CCF非专业级软件能力认证 | 小学生(12周岁及以上)/初中生/高中生 | https://www.noi.cn/ |
| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |
NOI和CSP-J/S竞赛信息主要通过以下渠道获取(按优先级排序):
# CCF官网活动日历(最可靠,包含精确时间)
web_fetch --url "https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122" --extractMode markdown
# 精确搜索CCF官网的NOI通知
web_search --query "site:ccf.org.cn \"NOI 2026\" 报名通知"
# NOI官网新闻(可能需要处理编码问题)
web_search --query "NOI 2026 竞赛时间 青岛"
# CSP-J/S信息
web_search --query "CSP-J/S 2026 非专业级软件能力认证 报名时间"
NOI查询经验总结:
CCSP竞赛信息通过专门的竞赛官网获取:
# CCSP官网信息
web_fetch --url "https://ccsp.ccf.org.cn/" --extractMode markdown
# 搜索CCSP最新通知
web_search --query "CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间"
当用户询问竞赛信息时,按以下优先级执行:
检查是否有具体竞赛类型(NOI/CSP-J/S/CCSP)
提取关键信息:
格式化输出:
官方信息源优先级:
关键时间节点识别:
搜索关键词优化:
信息验证要点:
# CCF竞赛报名信息汇总(查询日期:YYYY-MM-DD)
## [竞赛名称]
**最新竞赛安排:**
- **竞赛时间**:YYYY年MM月DD日
- [具体时间安排]
- **报名时间**:[报名开始时间] - [报名截止时间]
- **参赛条件**:[参与要求]
- **报名方式**:
- 官网报名:[官方链接]
- [其他报名方式]
- **费用标准**:[费用详情,如适用]
[重复以上结构为每个竞赛类型]
## 各竞赛官网链接
| 竞赛类型 | 官方网站 |
|----------|----------|
| NOI | [https://www.noi.cn/](https://www.noi.cn/) |
| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |
| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |
## ⏰ 近期重要时间节点
- **[竞赛名称]报名**:[截止日期](还有X天)
- **[竞赛名称]竞赛**:[竞赛日期]
> **温馨提示**:建议参赛者提前准备相关材料,关注官方通知,部分竞赛名额有限,建议尽早报名。
数据格式变更:
竞赛时间冲突:
当需要获取 CCF 网页的动态内容(如 JavaScript 渲染的页面)时,按以下流程执行:
决策流程
flowchart TD
A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效?<br>(非空、非403/500<br>、无防火墙拦截)}
B -- 是 --> C[静态页面<br>直接使用] --> I([结束])
B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]
D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面?}
E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I
E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I
| curl 返回结果 | 处理方式 |
|---|---|
| 状态码 200,内容长度 > 500 字符 | ✅ 静态页面,直接使用 |
| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误,尝试 Puppeteer |
| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截,尝试 Puppeteer |
| 状态码 200,内容极短(< 500 字符)或为空 | ⚠️ 可能为动态渲染页面,尝试 Puppeteer |
| 超时或连接失败 | ⚠️ 网络问题,提示用户后重试 |
注意:仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。
scripts/ensure_puppeteer.js 脚本进行环境检测,安装命令由用户手动执行,确保仅安装到当前项目目录,不修改全局 Node/npm 环境puppeteer@24.15.0,输出的安装命令使用固定版本,禁止安装未固定版本scripts/ensure_puppeteer.js 脚本进行环境检测CCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息,支持个性化推荐和智能提醒。
// 示例:自定义频率和时间的CCF新闻摘要任务
cron.add({
name: "CCF新闻摘要-自定义",
// 根据用户需求设置cron表达式
// 每天9点: "0 9 * * *"
// 每周一10点: "0 10 * * 1"
// 每周三/五8点: "0 8 * * 3,5"
schedule: { kind: "cron", expr: "<用户自定义的cron表达式>", tz: "Asia/Shanghai" },
payload: {
kind: "systemEvent",
text: "⏰ CCF新闻摘要时间到了!请根据用户偏好(研究领域、活动类型、地理位置、可参与时间)查询相关内容..."
},
sessionTarget: "main"
})
// 示例:自定义认证/竞赛关注范围
cron.add({
name: "CCF认证竞赛提醒-自定义",
schedule: { kind: "cron", expr: "<用户自定义的cron表达式>", tz: "Asia/Shanghai" },
payload: {
kind: "systemEvent",
text: "🎯 CCF认证/竞赛提醒时间到了!请根据用户关注的认证/竞赛类型(如GESP/LMCC/CSP/NOI/CCSP/PTA等)检查报名截止日期..."
},
sessionTarget: "main"
})
在创建定时任务前,应收集以下用户信息:
## 用户定时任务需求
### 执行频率偏好
- [ ] 每天
- [ ] 每周(周几:______)
- [ ] 每月(几号:______)
- [ ] 自定义频率:_____________
### 通知时间偏好
- 希望在每天 ______ 点收到通知
- 时区:Asia/Shanghai(默认)
### 内容关注范围
- [ ] CCF新闻
- [ ] 学术会议(CNCC/YEF/ADL等)
- [ ] 认证考试(GESP/PTA/LMCC/CSP)
- [ ] 竞赛活动(NOI/CCSP等)
- [ ] 技术论坛
- [ ] 其他:_____________
### 个性化偏好
- 研究领域:_________________
- 活动类型:_________________
- 地理位置:_________________
- 可参与时间:_______________
根据用户提供的偏好或历史聊天记录总结用户兴趣方向:(以下为示例)
## 技术兴趣(用于活动推荐)
- **研究领域**: 人工智能、自然语言处理、大模型
- **偏好活动类型**: 讲习班、CNCC、技术论坛
- **常驻城市**: 北京
- **可参与时间**: 周末、节假日
## 个性化设置
- 自动推荐匹配兴趣的活动:是
- 自动检索已结束活动资源:是
cron list
cron remove --jobId <任务ID>
cron update --jobId <任务ID> --patch '{"schedule":{"expr":"新的cron表达式"}}'
# 禁用
cron update --jobId <任务ID> --patch '{"enabled":false}'
# 启用
cron update --jobId <任务ID> --patch '{"enabled":true}'
定时任务的标准输出格式:
# CCF [日期] 活动概览
## 🎯 为您推荐
> 根据您的兴趣偏好(xxx),为您筛选了以下活动:
| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |
|------|----------|------|----------|------|
## 📰 今日新闻
[今日CCF官方新闻]
## 🟢 正在报名中
[报名中的活动列表]
## 🔵 即将开始
[即将开始的活动列表]
## ⏰ 重要提醒
- [认证/竞赛报名截止提醒]