获取中国计算机学会(CCF)近期学术会议、认证考试、活动日程等信息。
个性化推荐:如果用户提供了兴趣偏好(如研究方向、技术领域等),根据用户兴趣从所有活动中筛选并推荐相关活动。
https://conf.ccf.org.cn/conf/v2/index/meeting/list.do```json
{
"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、讲稿、专辑等)时使用。
数字图书馆前端页面是用户看到的搜索界面,但实际数据通过后端API返回JSON。
不要将页面URL当成API来调用。例如 https://dl.ccf.org.cn/video/videoIndex.html?searWord=xxx 是用户看到的视频搜索页面,它内部调用的是 /video/getVideoList 这个后端API。
/V2/toSearchList.html)这是最常用的搜索入口,返回视频/讲稿/期刊/专辑等所有类型的聚合结果。
searchList.do# GET 请求,参数需 URL 编码
curl -G -sL "https://dl.ccf.org.cn/searchList.do" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-H "Referer: https://dl.ccf.org.cn/V2/toSearchList.html" \
--data-urlencode "page=1" \
--data-urlencode "classen=-1" \
--data-urlencode "searchText=大模型" \
--data-urlencode "searchText2=" \
--data-urlencode "sort=score desc" \
--data-urlencode "pageNumber=30"
参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
| page | int | 页码,从1开始 |
| classen | int | 分类,-1=全部,其他值对应具体分类 |
| searchText | string | 搜索关键词(需URL编码) |
| searchText2 | string | 分面筛选条件(Solr语法,可选) |
| sort | string | 排序:score desc(相关度)/ date desc(时间) |
| pageNumber | int | 每页条数,默认30 |
返回结构: dataRole[0]["search"]["data"] 包含结果数组,dataRole[0]["search"]["count"] 为总数。
每条结果包含:id, title, classEn(类型:audio_video/ppt/cccf/picture/qkwz 等),op_author, date, cover, view_count 等。
facetedStatistics.do# POST 请求,获取左侧筛选栏的分类统计
curl -s -X POST "https://dl.ccf.org.cn/facetedStatistics.do" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-d "classen=-1" \
--data-urlencode "searchText=大模型" \
-d "searchText2="
| 接口 | 方法 | URL | 说明 |
|---|---|---|---|
| ------ | ------ | ----- | ------ |
| 热词推荐 | POST | https://dl.ccf.org.cn/V2/getHotWords | 获取周期内热门检索词 |
| 专辑搜索 | POST | https://dl.ccf.org.cn/albumList/searchAlbum | 搜索专辑(searchword, pageNum, pageSize) |
页面地址: https://dl.ccf.org.cn/video/videoIndex.html(用户端)
后端API: POST /video/getVideoList(程序调用)
curl -s -X POST "https://dl.ccf.org.cn/video/getVideoList" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-d "pageNum=1" \
-d "pageSize=16" \
--data-urlencode "searchTerm=大模型" \
-d "sortRule=date" \
-d "dataYear=" \
-d "seriesText="
参数说明:
| 参数 | 说明 |
|---|---|
| ------ | ------ |
| pageNum | 页码 |
| pageSize | 每页条数(默认16) |
| searchTerm | 搜索关键词 |
| sortRule | 排序:date / view_count |
| dataYear | 年份筛选(如 2025) |
| seriesText | 系列筛选 |
筛选条件接口: POST /video/getConditions(无参数,返回 dateYears 年份列表等)
页面地址: https://dl.ccf.org.cn/ppt/pptIndex.html(用户端)
后端API: POST /ppt/getPPTList(程序调用)
curl -s -X POST "https://dl.ccf.org.cn/ppt/getPPTList" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-d "pageNum=1" \
-d "pageSize=16" \
--data-urlencode "searchTerm=大模型" \
-d "sortRule=date"
参数同视频接口(pageNum, pageSize, searchTerm, sortRule, dataYear, seriesText)。
筛选条件接口: POST /ppt/getConditions
页面地址:
https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hyhttps://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt后端API(均为 GET,RESTful 路径参数):
| 接口 | URL模式 |
|---|---|
| ------ | --------- |
| 会议专辑列表 | GET /albumList/getMeetingAlbums/{year}/{series}/{keyword}/{sort}/{page} |
| 会议专辑筛选条件 | GET /albumList/getMeetingAlbumConditions |
| 关键词专辑 | GET /albumList/getKeyWordsAlbumList/{keyword}/{page}/{sort} |
| 作者专辑 | GET /albumList/getAuthorAlbumList/{keyword}/{page}/{sort} |
| 专题专辑 | GET /albumList/getSpecialAlbumList/{keyword}/{page}/{sort} |
# 会议专辑搜索示例
curl -s "https://dl.ccf.org.cn/albumList/getMeetingAlbums/0/0/大模型/date/1"
# 关键词专辑搜索
curl -s "https://dl.ccf.org.cn/albumList/getKeyWordsAlbumList/大模型/1/date"
注意: 专辑接口路径中的中文关键词需 URL 编码。0 表示全部(不筛选年份/系列)。
| 类型 | 中文名 | 用户页面地址(用户端) | 后端API(程序调用) |
|---|---|---|---|
| ------ | -------- | -------------------------- | --------------------- |
| 🔍 统一搜索 | 全部 | /V2/toSearchList.html?searchText=关键词 | GET /searchList.do |
| 📹 视频 | 视频 | /video/videoIndex.html | POST /video/getVideoList |
| 📝 讲稿 | 讲稿/PPT | /ppt/pptIndex.html | POST /ppt/getPPTList |
| 📚 会议专辑 | 会议专辑 | /albumList/albumSecondary.html?selectType=hy | GET /albumList/getMeetingAlbums/... |
| 📂 专题专辑 | 专辑 | /albumList/albumSecondary.html?selectType=zt | GET /albumList/getKeyWordsAlbumList/... |
优先使用 searchList.do(统一搜索) — 一次查询即可获取所有类型的结果,通过 classEn 字段区分资源类型。
当用户明确只需要某种类型(如"只看视频"或"只看讲稿")时,再使用对应的专用API(/video/getVideoList、/ppt/getPPTList 等)。
安全提示: 所有用户输入的关键词在拼接到URL前必须URL编码,避免注入风险。
【强制要求】必须严格按照以下格式输出,禁止输出无格式的列表或长文本!
| 活动日期与当前日期比较 | 状态 | 必须输出的列 |
|---|---|---|
| ------------------------ | ------ | -------------- |
| 活动在当前日期之后,且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |
| 活动在当前日期之后,报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |
| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |
如果用户提供了兴趣偏好,在输出开头增加「为你推荐」板块:
# 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公益日 | 公益、技术公益、社会责任 |
| 类型 | URL |
|---|---|
| ------ | ----- |
| CCF首页 | https://www.ccf.org.cn |
| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |
| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |
| 会议系统(报名) | https://conf.ccf.org.cn/conf/show.action?code=index |
| CCF新闻 | https://www.ccf.org.cn/Media_list/ |
| YEF大会 | https://yef.ccf.org.cn/ |
| CNCC | https://cncc.ccf.org.cn |
| FCES | https://ccf.org.cn/fces2026 |
| 认证缩写 | 全称 | 目标人群 | 官方网站 |
|---|---|---|---|
| ---------- | ------ | ---------- | ---------- |
| 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
当用户询问认证信息时,按以下优先级执行:
# 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 大学生计算机系统与程序设计竞赛 报名时间"
当用户询问竞赛信息时,按以下优先级执行:
# 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官方新闻]
## 🟢 正在报名中
[报名中的活动列表]
## 🔵 即将开始
[即将开始的活动列表]
## ⏰ 重要提醒
- [认证/竞赛报名截止提醒]
最高优先级规则:所有输出内容必须严格基于API返回数据或网页的实际内容:
共 5 个版本