{"id":"4e0d7873-e7a4-4113-a608-4a08e611d359","entityType":"agent","slug":"clawhub-alucard118-ccf-events","name":"ccf-events","canonicalUrl":"https://www.xpersona.co/agent/clawhub-alucard118-ccf-events","canonicalPath":"/agent/clawhub-alucard118-ccf-events","generatedAt":"2026-10-10T21:52:28.627Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":null},"description":"查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。 Skill: ccf-events Owner: alucard118 Summary: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。 Tags: latest:1.1.421 Version history: v1.1.421 | 2026-05-27T07:15:37.040Z | auto - Updated version to 1.1.421 in SKILL.md. - Changed trigger block field \"version\" from 1.1.420 to 1.1.421. - No functional or documentation changes beyond the version bump. v1.1.420 | 2026","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17c88sjj6h5dp9pczke7jxrgd83h1at:ccf-events","sourceUrl":"https://clawhub.ai/alucard118/ccf-events","homepage":"https://clawhub.ai/alucard118/skills/ccf-events","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/alucard118/ccf-events","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/alucard118/skills/ccf-events","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。 Skill: ccf-events Owner: alucard118 Summary: 查询CCF（中国计"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":null},"stars":null,"forks":null,"downloads":1280,"packageName":null,"latestVersion":"1.1.421","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T19:28:15.017Z","lastCrawledAt":"2026-10-10T19:28:15.017Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T19:28:15.017Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.421","createdAt":"2026-05-27T07:15:37.040Z","changelog":"- Updated version to 1.1.421 in SKILL.md. - Changed trigger block field \"version\" from 1.1.420 to 1.1.421. - No functional or documentation changes beyond the version bump.","fileCount":5,"zipByteSize":19031},{"version":"1.1.420","createdAt":"2026-05-27T07:14:32.809Z","changelog":"- 更新版本号至 1.1.420。 - 无功能或操作逻辑变更，仅 SKILL.md 文档内容更新。","fileCount":5,"zipByteSize":19165},{"version":"1.1.419","createdAt":"2026-05-27T06:57:46.844Z","changelog":"**Changelog for ccf-events 1.1.419:** - Enhanced数字图书馆资源检索说明，明确区分前端页面URL和后端API，并补充各类API实用调研示例。 - 新增统一全文搜索API用法（searchList.do），优化资源检索效率和多类型聚合。 - 明确视频、讲稿、专辑类查询的API请求格式、参数与返回结构，支持更细致安全的关键词处理。 - 增强安全规范，强调所有用户输入必须URL编码；补充具体防注入说明。 - 优化表格展示和资源分类建议，指导根据用户需求选择聚合搜索或细分API。","fileCount":5,"zipByteSize":19016},{"version":"1.1.418","createdAt":"2026-05-15T09:35:05.002Z","changelog":"- Version updated to 1.1.418 in SKILL.md. - No feature, content, or logic changes to the skill—only the version number was incremented.","fileCount":4,"zipByteSize":16096},{"version":"1.1.417","createdAt":"2026-05-15T09:32:01.642Z","changelog":"- Version bump to 1.1.417. - Documentation updated in SKILL.md with no logic or feature changes. - No user-facing changes; functionality and API usage remain the same. - Version number in SKILL.md updated to reflect latest release.","fileCount":4,"zipByteSize":16141},{"version":"1.1.416","createdAt":"2026-05-13T06:06:46.683Z","changelog":"- 版本号更新至 1.1.416 - SKILL.md 文档内容无变动，唯一更新为 version 字段 - 仅用于版本号递增，无功能或逻辑更改","fileCount":4,"zipByteSize":15928},{"version":"1.1.415","createdAt":"2026-05-12T01:34:15.133Z","changelog":"- 更新版本号至1.1.415 - 仅文档（SKILL.md）更新，规范性内容未改动 - 其他功能与配置保持一致","fileCount":4,"zipByteSize":14235},{"version":"1.1.414","createdAt":"2026-05-12T01:33:35.195Z","changelog":"- 版本号升级至 1.1.414。 - SKILL.md 例行更新，仅 version 字段由 1.1.412 升级到 1.1.414。 - 其余内容无变动。","fileCount":4,"zipByteSize":14240}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17c88sjj6h5dp9pczke7jxrgd83h1at:ccf-events","setupComplexity":"low","setupSteps":["Node.js workspace detected. Install dependencies securely: run `npm ci --ignore-scripts` to prevent post-install lifecycle triggers from running arbitrary code, then selectively audit the dependency tree.","Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:52:28.624Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-alucard118-ccf-events/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":null},"readme":"Skill: ccf-events\n\nOwner: alucard118\n\nSummary: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\n\nTags: latest:1.1.421\n\nVersion history:\n\nv1.1.421 | 2026-05-27T07:15:37.040Z | auto\n\n- Updated version to 1.1.421 in SKILL.md.\n- Changed trigger block field \"version\" from 1.1.420 to 1.1.421.\n- No functional or documentation changes beyond the version bump.\n\nv1.1.420 | 2026-05-27T07:14:32.809Z | auto\n\n- 更新版本号至 1.1.420。\n- 无功能或操作逻辑变更，仅 SKILL.md 文档内容更新。\n\nv1.1.419 | 2026-05-27T06:57:46.844Z | auto\n\n**Changelog for ccf-events 1.1.419:**\n\n- Enhanced数字图书馆资源检索说明，明确区分前端页面URL和后端API，并补充各类API实用调研示例。\n- 新增统一全文搜索API用法（searchList.do），优化资源检索效率和多类型聚合。\n- 明确视频、讲稿、专辑类查询的API请求格式、参数与返回结构，支持更细致安全的关键词处理。\n- 增强安全规范，强调所有用户输入必须URL编码；补充具体防注入说明。\n- 优化表格展示和资源分类建议，指导根据用户需求选择聚合搜索或细分API。\n\nv1.1.418 | 2026-05-15T09:35:05.002Z | auto\n\n- Version updated to 1.1.418 in SKILL.md.\n- No feature, content, or logic changes to the skill—only the version number was incremented.\n\nv1.1.417 | 2026-05-15T09:32:01.642Z | auto\n\n- Version bump to 1.1.417.\n- Documentation updated in SKILL.md with no logic or feature changes.\n- No user-facing changes; functionality and API usage remain the same.\n- Version number in SKILL.md updated to reflect latest release.\n\nv1.1.416 | 2026-05-13T06:06:46.683Z | auto\n\n- 版本号更新至 1.1.416\n- SKILL.md 文档内容无变动，唯一更新为 version 字段\n- 仅用于版本号递增，无功能或逻辑更改\n\nv1.1.415 | 2026-05-12T01:34:15.133Z | auto\n\n- 更新版本号至1.1.415\n- 仅文档（SKILL.md）更新，规范性内容未改动\n- 其他功能与配置保持一致\n\nv1.1.414 | 2026-05-12T01:33:35.195Z | auto\n\n- 版本号升级至 1.1.414。\n- SKILL.md 例行更新，仅 version 字段由 1.1.412 升级到 1.1.414。\n- 其余内容无变动。\n\nv1.1.412 | 2026-05-12T01:31:39.448Z | auto\n\n- 版本号从 1.1.411 升级至 1.1.412。\n- SKILL.md 文档内容无实际功能或逻辑变动，仅进行了版本号的更新。\n- 所有功能、使用说明、接口与输出模板保持不变。\n\nv1.1.411 | 2026-05-12T01:11:26.939Z | auto\n\n- 更新版本号至 1.1.411\n- 文档内容未变，仅 version 字段由 1.1.410 更新为 1.1.411\n\nv1.1.410 | 2026-05-11T09:07:47.354Z | auto\n\n- 版本号由 1.1.409 升级为 1.1.410  \n- 文档（SKILL.md）中未见功能与规则变动，仅更新了 version 字段  \n- 没有添加新功能或更改输出格式  \n- 其余配置均保持不变\n\nv1.1.409 | 2026-05-11T08:59:18.370Z | auto\n\n- 更新活动状态表述，新增状态符号（🟢报名中、🔵即将开始、⚪已结束），并在所有输出模板和要求中统一使用符号明确标注状态。\n- 输出模板显著优化，突出「🎯为你推荐」「🟢正在报名中」「🔵即将举办」「⚪已结束」等分区，使输出更易读、更规范。\n- 所有状态判定、表头说明和认证查询部分同步更新，确保表格、状态、链接与新格式一致。\n- 仅文档SKILL.md更新，无后端功能调整。\n\nv1.1.408 | 2026-05-11T08:50:58.795Z | auto\n\n- 修正了模板与文档示例中的状态表情符号，将报名中、即将开始部分由图标符号（🟢、🔵）调整为空格或文字形式，保持与输出模板一致\n- 相应地，所有输出模板中的状态分隔行和标题做了符号与文字风格统一\n- 规范了状态列的输出，避免表格与实际生成内容在符号和表述上的不一致\n- 版本号更新为 1.1.408\n\nv1.1.407 | 2026-05-11T08:35:13.769Z | auto\n\n- 更新版本号至1.1.407\n- 无功能、逻辑或格式更动，仅SKILL.md文档内容有极小修改（行级微调和部分补充，无实质性变更）\n- 主要为持续性文档维护，保证说明同步最新技能实现\n\nv1.1.406 | 2026-05-11T08:26:07.759Z | auto\n\n- 更新版本号至 1.1.406。\n- 修正认证信息输出模板中的报名状态表情符号（报名状态前增加 🟢 和 🔵）。\n- 无其它行为逻辑和功能变动，主要是文档输出格式与排版微调。\n\nv1.1.405 | 2026-05-11T08:23:04.304Z | auto\n\n- 简要调整描述，突出支持“认证竞赛”查询，提升准确性。\n- 触发关键词增加“竞赛报名”、NOI、CSP等，优化竞赛类和认证类提问识别。\n- 精简与优化CCF认证查询内容，明确查询GESP等认证/竞赛的目标人群、入口及信息字段。\n- 补充部分认证（如NOI、CSP）的触发、说明与官方链接，便于查询更多领域赛事。\n- 精简内容结构，删除冗余信息，保持核心功能与格式展示要求不变。\n\nv1.1.404 | 2026-05-11T07:33:42.598Z | auto\n\n**Minor update to CCF认证考试说明和链接**\n\n- CCF认证考试部分更新，LMCC认证支持成人组，目标人群与官网更加准确。\n- FCES与CNCC等会议官网年度更新为2026，与实际年份保持一致。\n- 没有新增功能和接口，仅内容描述等规范性修订。\n- 版本号升级为1.1.404。\n\nv1.1.403 | 2026-05-11T01:44:39.142Z | auto\n\n- 文档澄清与精简：对 SKILL.md 进行整理，删除重复片段与赘述，使内容更聚焦于关键能力说明。\n- 明确核心功能描述：突出API调用、会议链接生成、输出表格格式等核心流程，便于理解和执行。\n- 输出规范无变动：表格输出、活动状态判断、资源检索方式保持不变。\n- 认证考试部分小幅补全：CSP认证数据结构加入简要说明，其余结构未做实现性更改。\n\nv1.1.402 | 2026-05-11T01:41:17.429Z | auto\n\n- 更新版本号至 1.1.402。\n- 补充和完善“PTA认证数据结构”：将考试频率从“每年2-3次”修正为“每年2次”，细化科目类型描述。\n- 增加“LMCC认证数据结构”中考试频次和结构细节，明确为“每次认证有2轮考试”。\n- 保持其余功能与说明一致，无新增API或行为更改。\n\nv1.1.401 | 2026-05-11T01:36:09.563Z | auto\n\n**Summary: Expanded skill to support CCF认证考试（GESP、PTA、LMCC、CSP）信息查询，完善说明文档和触发规则。**\n\n- 增加“CCF认证考试查询”功能，支持GESP、PTA、LMCC、CSP官方考试信息检索与格式化输出。\n- triggers与description均同步优化，明确支持“认证报名”等关键词自动触发查询。\n- 文档详细说明各类认证的查询方式与官方数据链接，给出格式化输出表格要求。\n- 完善日期处理和校验规则，避免信息误判，增加“报名状态”对外输出要求。\n- 其余会议、活动功能原有能力和输出模板保持不变。\n\nv1.1.4 | 2026-05-09T07:48:20.267Z | auto\n\n- 调整查询范围，现支持查找活动结束时间在过去一个月内的已结束活动，以及未来三个月内即将举办的活动。\n- 版本号更新为 1.1.4。\n- 优化API说明，明确时间筛选规则。\n- 其余内容结构和行为保持不变。\n\nv1.1.3 | 2026-05-09T07:25:41.390Z | auto\n\n- 查询时间范围由“即将举办”调整为未来三个月（原为一个月），覆盖更多即将到来的CCF活动。\n- 仅文档（SKILL.md）更新，无API或逻辑变更。\n- 其余功能、触发词和输出格式无变化。\n\nv1.1.2 | 2026-05-09T07:19:19.453Z | auto\n\nccf-events 1.1.2\n\n- 文档优化：在 SKILL.md 中补充说明支持查找1~3页的可报名活动，提升活动检索完整性。\n- 其余 skill 规则、接口、输出模板未发生代码或逻辑变更。\n\nv1.1.1 | 2026-05-09T06:06:47.496Z | auto\n\n1. 增加自动触发功能，支持消息关键词和正则自动激活技能，无需用户显式调用。\n2. 新增 triggers、auto_trigger 字段和详细触发规则，提升用户体验。\n3. 保持原有会议查询、推荐和输出结构不变，未涉及后端或功能逻辑更改。\n4. 文档补充了自动触发说明，帮助用户了解新特性。\n\nv1.1.0 | 2026-05-09T03:23:30.391Z | auto\n\n**Changelog for ccf-events v1.1.0**\n\n- 强化 Puppeteer 环境检测与安全：`scripts/ensure_puppeteer.js` 不再自动安装依赖，只检测环境并输出手动安装指南，所有依赖须用户手动确认与执行\n- 更新安全策略：明确禁止自动执行安装操作，必须获得用户主动授权，由用户手动输入命令进行 Puppeteer 固定版本本地安装\n- 优化环境复用：脚本优先检测本地已安装的 Puppeteer 和系统浏览器，避免重复安装\n- 文档完善：SKILL.md 明确标注安装安全要求与流程，禁止任何第三方或未授权脚本\n- 使 skill 更加合规，增强用户控制和安全性\n\nv1.0.9 | 2026-05-09T03:01:51.563Z | auto\n\n- Improved the Puppeteer environment check and install script.\n- No changes to skill features or user-facing behavior.\n\nv1.0.8 | 2026-05-09T02:34:27.125Z | auto\n\n**ccf-events v1.0.8**\n\n- Switched browser automation workflow from Playwright to Puppeteer for handling dynamic CCF web content.\n- Added `package.json` and `scripts/ensure_puppeteer.js` for consistent, permissioned, and local-only Puppeteer installation (fixed version, no global changes).\n- Updated documentation: simpler presentation, clarified secure encoding for digital library search, and specified Puppeteer workflow and user consent requirement.\n- Removed Playwright utility script and associated instructions.\n- No changes to API endpoints, activity data structure, or user-facing output templates.\n\nv1.0.7 | 2026-05-08T07:34:05.424Z | auto\n\nccf-events 1.0.7\n\n- 新增 scripts/ensure_playwright_mcp.py 脚本文件。\n- SKILL.md 文档有更新（具体内容未变或仅为内容调整）。\n- 其他功能和接口未发生明显变动。\n\nv1.0.6 | 2026-05-08T07:15:21.340Z | auto\n\n- 简化和精炼了 SKILL.md 内容，突出强制表格格式要求和状态判断规则。\n- 删除了 ccf_universal_registration_template.md 文件，移除冗余或无关文档。\n- 统一将个性化推荐功能描述合并进主要查询逻辑，优化表述顺序。\n- 删减冗长操作和输出规范，保留最重要执行要点与示例模板。\n- 强调输出须严格为结构化表格，禁止无格式文本。\n\nv1.0.5 | 2026-05-08T06:59:35.245Z | auto\n\nVersion 1.0.5\n\n- Documentation (SKILL.md) updated for clarity and completeness.\n- No changes to code; only SKILL.md content revised.\n- No new features or bug fixes introduced in this version.\n\nv1.0.4 | 2026-05-08T06:41:29.812Z | auto\n\n- Documentation updated in SKILL.md for clarity and precision; core API, link generation, and output formatting clarifications.\n- No logic or feature changes to the codebase; improvements are limited to documentation details.\n- Reference links, formatting requirements, and template instructions were refined to ensure compliant output and better guidance for users and developers.\n\nv1.0.3 | 2026-05-08T06:38:24.115Z | auto\n\n- 移除了会员注册、会费缴纳和活动报名等功能描述，聚焦于近期活动、会议和通知查询。\n- 精简了用例场景，仅保留活动、会议信息的查询和通知提醒，去除报名登录说明。\n- 其余输出格式、API使用、状态判断逻辑及个性化推荐规则未变，核心功能未受影响。\n- 文档结构略有压缩，表达更为专注简练。\n\nv1.0.2 | 2026-05-08T05:20:16.163Z | auto\n\nccf-events v1.0.2\n\n- No code or behavior changes detected in this version.\n- Description and feature set remain unchanged.\n- All core usage scenarios and output requirements stay the same.\n\nv1.0.1 | 2026-05-08T05:10:58.818Z | auto\n\nNo file changes detected in this version.\n\n- No code or documentation changes were made for version 1.0.1.\n- Functionality and outputs remain the same as previous version.\n\nv1.0.0 | 2026-05-08T03:35:13.204Z | auto\n\nInitial release of ccf-events skill\n\n- 支持查询 CCF 近期活动、会议和通知，涵盖即将举办、正在报名、刚刚结束的会议等场景。\n- 集成 CCF 官网、会议系统及活动日历三大官方数据源，自动聚合整理最新会议和活动信息。\n- 严格统一输出为Markdown表格，包括报名链接、状态、视频讲稿资源链接等。\n- 实现“为你推荐”个性化推荐机制，根据用户兴趣自动筛选相关活动。\n- 自动对已结束活动检索数字图书馆资源，输出配套视频与讲稿链接。\n\nArchive index:\n\nArchive v1.1.421: 5 files, 19031 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), skill-card.md (2495b), SKILL.md (34228b), _meta.json (131b)\n\nFile v1.1.421:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.421\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 活动查询核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿、专辑等）时使用。\n\n### 架构说明\n数字图书馆前端页面是用户看到的搜索界面，但**实际数据通过后端API返回JSON**。\n\n- **用户页面地址** = 前端搜索入口URL（可发给用户点击打开）\n- **后端API地址** = 实际数据接口（用于程序化查询，返回结构化JSON）\n\n### ⚠️ 重要：区分页面URL和API端点\n不要将页面URL当成API来调用。例如 `https://dl.ccf.org.cn/video/videoIndex.html?searWord=xxx` 是用户看到的视频搜索**页面**，它内部调用的是 `/video/getVideoList` 这个**后端API**。\n\n---\n\n### 1. 统一搜索 API（聚合页 `/V2/toSearchList.html`）\n\n这是最常用的搜索入口，返回视频/讲稿/期刊/专辑等所有类型的聚合结果。\n\n#### 1.1 搜索列表 `searchList.do`\n\n```bash\n# GET 请求，参数需 URL 编码\ncurl -G -sL \"https://dl.ccf.org.cn/searchList.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -H \"Referer: https://dl.ccf.org.cn/V2/toSearchList.html\" \\\n  --data-urlencode \"page=1\" \\\n  --data-urlencode \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  --data-urlencode \"searchText2=\" \\\n  --data-urlencode \"sort=score desc\" \\\n  --data-urlencode \"pageNumber=30\"\n```\n\n**参数说明：**\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| page | int | 页码，从1开始 |\n| classen | int | 分类，-1=全部，其他值对应具体分类 |\n| searchText | string | 搜索关键词（需URL编码） |\n| searchText2 | string | 分面筛选条件（Solr语法，可选） |\n| sort | string | 排序：`score desc`（相关度）/ `date desc`（时间） |\n| pageNumber | int | 每页条数，默认30 |\n\n**返回结构：** `dataRole[0][\"search\"][\"data\"]` 包含结果数组，`dataRole[0][\"search\"][\"count\"]` 为总数。\n\n每条结果包含：`id`, `title`, `classEn`（类型：`audio_video`/`ppt`/`cccf`/`picture`/`qkwz` 等），`op_author`, `date`, `cover`, `view_count` 等。\n\n#### 1.2 分面统计 `facetedStatistics.do`\n\n```bash\n# POST 请求，获取左侧筛选栏的分类统计\ncurl -s -X POST \"https://dl.ccf.org.cn/facetedStatistics.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  -d \"searchText2=\"\n```\n\n#### 1.3 其他辅助接口\n\n| 接口 | 方法 | URL | 说明 |\n|------|------|-----|------|\n| 热词推荐 | POST | `https://dl.ccf.org.cn/V2/getHotWords` | 获取周期内热门检索词 |\n| 专辑搜索 | POST | `https://dl.ccf.org.cn/albumList/searchAlbum` | 搜索专辑（`searchword`, `pageNum`, `pageSize`） |\n\n---\n\n### 2. 视频专用搜索\n\n**页面地址：** `https://dl.ccf.org.cn/video/videoIndex.html`（用户端）\n**后端API：** `POST /video/getVideoList`（程序调用）\n\n```bash\ncurl -s -X POST \"https://dl.ccf.org.cn/video/getVideoList\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"pageNum=1\" \\\n  -d \"pageSize=16\" \\\n  --data-urlencode \"searchTerm=大模型\" \\\n  -d \"sortRule=date\" \\\n  -d \"dataYear=\" \\\n  -d \"seriesText=\"\n```\n\n**参数说明：**\n\n| 参数 | 说明 |\n|------|------|\n| pageNum | 页码 |\n| pageSize | 每页条数（默认16） |\n| searchTerm | 搜索关键词 |\n| sortRule | 排序：`date` / `view_count` |\n| dataYear | 年份筛选（如 `2025`） |\n| seriesText | 系列筛选 |\n\n**筛选条件接口：** `POST /video/getConditions`（无参数，返回 `dateYears` 年份列表等）\n\n---\n\n### 3. 讲稿/PPT 专用搜索\n\n**页面地址：** `https://dl.ccf.org.cn/ppt/pptIndex.html`（用户端）\n**后端API：** `POST /ppt/getPPTList`（程序调用）\n\n```bash\ncurl -s -X POST \"https://dl.ccf.org.cn/ppt/getPPTList\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"pageNum=1\" \\\n  -d \"pageSize=16\" \\\n  --data-urlencode \"searchTerm=大模型\" \\\n  -d \"sortRule=date\"\n```\n\n**参数同视频接口**（`pageNum`, `pageSize`, `searchTerm`, `sortRule`, `dataYear`, `seriesText`）。\n\n**筛选条件接口：** `POST /ppt/getConditions`\n\n---\n\n### 4. 专辑搜索\n\n**页面地址：**\n- 会议专辑：`https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy`\n- 专题专辑：`https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt`\n\n**后端API（均为 GET，RESTful 路径参数）：**\n\n| 接口 | URL模式 |\n|------|---------|\n| 会议专辑列表 | `GET /albumList/getMeetingAlbums/{year}/{series}/{keyword}/{sort}/{page}` |\n| 会议专辑筛选条件 | `GET /albumList/getMeetingAlbumConditions` |\n| 关键词专辑 | `GET /albumList/getKeyWordsAlbumList/{keyword}/{page}/{sort}` |\n| 作者专辑 | `GET /albumList/getAuthorAlbumList/{keyword}/{page}/{sort}` |\n| 专题专辑 | `GET /albumList/getSpecialAlbumList/{keyword}/{page}/{sort}` |\n\n```bash\n# 会议专辑搜索示例\ncurl -s \"https://dl.ccf.org.cn/albumList/getMeetingAlbums/0/0/大模型/date/1\"\n\n# 关键词专辑搜索\ncurl -s \"https://dl.ccf.org.cn/albumList/getKeyWordsAlbumList/大模型/1/date\"\n```\n\n**注意：** 专辑接口路径中的中文关键词需 URL 编码。`0` 表示全部（不筛选年份/系列）。\n\n---\n\n### 5. 资源类型汇总\n\n| 类型 | 中文名 | 用户页面地址（用户端） | 后端API（程序调用） |\n|------|--------|--------------------------|---------------------|\n| 🔍 统一搜索 | 全部 | `/V2/toSearchList.html?searchText=关键词` | `GET /searchList.do` |\n| 📹 视频 | 视频 | `/video/videoIndex.html` | `POST /video/getVideoList` |\n| 📝 讲稿 | 讲稿/PPT | `/ppt/pptIndex.html` | `POST /ppt/getPPTList` |\n| 📚 会议专辑 | 会议专辑 | `/albumList/albumSecondary.html?selectType=hy` | `GET /albumList/getMeetingAlbums/...` |\n| 📂 专题专辑 | 专辑 | `/albumList/albumSecondary.html?selectType=zt` | `GET /albumList/getKeyWordsAlbumList/...` |\n\n---\n\n### 6. 查询策略建议\n\n**优先使用 `searchList.do`（统一搜索）** — 一次查询即可获取所有类型的结果，通过 `classEn` 字段区分资源类型。\n\n当用户明确只需要某种类型（如\"只看视频\"或\"只看讲稿\"）时，再使用对应的专用API（`/video/getVideoList`、`/ppt/getPPTList` 等）。\n\n**安全提示：** 所有用户输入的关键词在拼接到URL前必须URL编码，避免注入风险。\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\n\n## CCF定时任务自动化\n\n### 定时任务概述\nCCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息，支持个性化推荐和智能提醒。\n\n### 定时任务类型\n\n#### 1. CCF新闻与活动摘要\n- **执行频率**：根据用户需求配置（可选择每天、每周或其他频率）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：CCF新闻 + 近期活动 + 个性化推荐\n- **适用场景**：希望定期了解CCF动态的用户\n\n#### 2. 活动汇总报告\n- **执行频率**：根据用户需求配置（通常为每周，也可自定义）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：活动安排 + 新闻回顾 + 未来预告 + 报名提醒\n- **适用场景**：需要全面了解CCF活动安排的用户\n\n#### 3. 认证/竞赛报名提醒\n- **执行频率**：根据用户关注的认证/竞赛类型和需求配置\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：根据用户关注的活动类型（如NOI/CSP/CCSP/GESP/PTA/LMCC等）提供相应的报名截止提醒\n- **适用场景**：关注特定认证或竞赛报名的用户\n\n### 定时任务生成方法\n\n#### 1. 使用cron工具创建任务（根据用户需求自定义）\n```javascript\n// 示例：自定义频率和时间的CCF新闻摘要任务\ncron.add({\n  name: \"CCF新闻摘要-自定义\",\n  // 根据用户需求设置cron表达式\n  // 每天9点: \"0 9 * * *\"\n  // 每周一10点: \"0 10 * * 1\"  \n  // 每周三/五8点: \"0 8 * * 3,5\"\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"⏰ CCF新闻摘要时间到了！请根据用户偏好（研究领域、活动类型、地理位置、可参与时间）查询相关内容...\"\n  },\n  sessionTarget: \"main\"\n})\n\n// 示例：自定义认证/竞赛关注范围\ncron.add({\n  name: \"CCF认证竞赛提醒-自定义\",\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"🎯 CCF认证/竞赛提醒时间到了！请根据用户关注的认证/竞赛类型（如GESP/LMCC/CSP/NOI/CCSP/PTA等）检查报名截止日期...\"\n  },\n  sessionTarget: \"main\"\n})\n```\n\n#### 2. 用户需求收集模板\n在创建定时任务前，应收集以下用户信息：\n\n```markdown\n## 用户定时任务需求\n\n### 执行频率偏好\n- [ ] 每天\n- [ ] 每周（周几：______）\n- [ ] 每月（几号：______）\n- [ ] 自定义频率：_____________\n\n### 通知时间偏好\n- 希望在每天 ______ 点收到通知\n- 时区：Asia/Shanghai（默认）\n\n### 内容关注范围\n- [ ] CCF新闻\n- [ ] 学术会议（CNCC/YEF/ADL等）\n- [ ] 认证考试（GESP/PTA/LMCC/CSP）\n- [ ] 竞赛活动（NOI/CCSP等）\n- [ ] 技术论坛\n- [ ] 其他：_____________\n\n### 个性化偏好\n- 研究领域：_________________\n- 活动类型：_________________\n- 地理位置：_________________\n- 可参与时间：_______________\n```\n\n#### 2. 用户偏好集成\n根据用户提供的偏好或历史聊天记录总结用户兴趣方向：（以下为示例）\n\n```markdown\n## 技术兴趣（用于活动推荐）\n- **研究领域**: 人工智能、自然语言处理、大模型\n- **偏好活动类型**: 讲习班、CNCC、技术论坛\n- **常驻城市**: 北京\n- **可参与时间**: 周末、节假日\n\n## 个性化设置\n- 自动推荐匹配兴趣的活动：是\n- 自动检索已结束活动资源：是\n```\n\n#### 3. 个性化推荐规则\n- **研究领域匹配**：优先推荐用户关注领域方向的活动\n- **活动类型偏好**：优先推荐用户指定的讲习班、CNCC、技术论坛等活动\n- **地理偏好**：优先推荐用户所在地区及周边地区活动\n- **时间偏好**：标注适合周末参加的活动\n\n### 定时任务管理命令\n\n#### 查看所有任务\n```bash\ncron list\n```\n\n#### 删除特定任务\n```bash\ncron remove --jobId <任务ID>\n```\n\n#### 更新任务配置\n```bash\ncron update --jobId <任务ID> --patch '{\"schedule\":{\"expr\":\"新的cron表达式\"}}'\n```\n\n#### 禁用/启用任务\n```bash\n# 禁用\ncron update --jobId <任务ID> --patch '{\"enabled\":false}'\n# 启用\ncron update --jobId <任务ID> --patch '{\"enabled\":true}'\n```\n\n### 输出格式规范\n\n定时任务的标准输出格式：\n\n```markdown\n# CCF [日期] 活动概览\n\n## 🎯 为您推荐\n> 根据您的兴趣偏好（xxx），为您筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |\n|------|----------|------|----------|------|\n\n## 📰 今日新闻\n[今日CCF官方新闻]\n\n## 🟢 正在报名中\n[报名中的活动列表]\n\n## 🔵 即将开始\n[即将开始的活动列表]\n\n## ⏰ 重要提醒\n- [认证/竞赛报名截止提醒]\n```\n\n### 跨平台兼容性\n- **统一调度机制**：不依赖操作系统原生定时器\n- **标准cron语法**：在Windows/Linux/macOS上使用相同的cron表达式\n- **时区支持**：支持任意IANA时区（如Asia/Shanghai）\n- **自动恢复**：OpenClaw重启后定时任务自动恢复\n- **无需特殊权限**：不需要管理员/root权限\n\n## 数据真实性约束（强制执行）\n\n**最高优先级规则**：所有输出内容必须严格基于API返回数据或网页的实际内容：\n\n- 不得凭空创造不存在的会议、认证或竞赛\n- 不得猜测或推断活动时间，必须使用原始数据中的日期\n- 不得自行补充API中不包含的地点信息\n- 不得自行构造未经数据源确认的URL（除模板定义的生成规则外）\n\nFile v1.1.421:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.421\",\n  \"publishedAt\": 1779866137040\n}\n\nFile v1.1.421:skill-card.md\n\n## Description:\n\nQueries recent China Computer Federation events, conferences, certifications, competitions, and related schedules, with optional personalized recommendations and links to post-event CCF Digital Library resources.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[alucard118](https://clawhub.ai/user/alucard118)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to find current or recently ended CCF activities, certifications, competitions, and event resources. Agents use it to query CCF sources, classify event status, and return concise Markdown tables with official links.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Persistent scheduled reminders can create recurring background activity beyond one-time CCF lookups.\n\nMitigation: Enable cron reminders only after the user explicitly requests a recurring schedule, and provide a clear way to list, disable, or remove the job.\n\nRisk: The Puppeteer configuration helper can overwrite an existing project .env when run with --config.\n\nMitigation: Back up and review any existing .env before running --config, or configure PUPPETEER_EXECUTABLE_PATH manually.\n\nRisk: Generated Puppeteer verification commands may be unsafe to copy from an untrusted project directory.\n\nMitigation: Review generated commands before execution and run them only in trusted local projects.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/alucard118/skills/ccf-events)\n- [CCF meeting list API](https://conf.ccf.org.cn/conf/v2/index/meeting/list.do)\n- [CCF Digital Library search](https://dl.ccf.org.cn/searchList.do)\n- [CCF activities](https://www.ccf.org.cn/Activities/Activities/)\n\n## Skill Output:\n\n**Output Type(s):** [markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown tables with links and occasional shell command or configuration snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May use CCF event and digital library endpoints; scheduled reminders are optional and should be enabled only when requested.]\n\n## Skill Version(s):\n\n1.1.421 (source: SKILL.md frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.421:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.420: 5 files, 19165 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), skill-card.md (2948b), SKILL.md (34231b), _meta.json (131b)\n\nFile v1.1.420:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.420\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 活动查询核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿、专辑等）时使用。\n\n### 架构说明\n数字图书馆前端页面是用户看到的搜索界面，但**实际数据通过后端API返回JSON**。\n\n- **用户页面地址** = 前端搜索入口URL（可发给用户点击打开）\n- **后端API地址** = 实际数据接口（用于程序化查询，返回结构化JSON）\n\n### ⚠️ 重要：区分页面URL和API端点\n不要将页面URL当成API来调用。例如 `https://dl.ccf.org.cn/video/videoIndex.html?searWord=xxx` 是用户看到的视频搜索**页面**，它内部调用的是 `/video/getVideoList` 这个**后端API**。\n\n---\n\n### 1. 统一搜索 API（聚合页 `/V2/toSearchList.html`）\n\n这是最常用的搜索入口，返回视频/讲稿/期刊/专辑等所有类型的聚合结果。\n\n#### 1.1 搜索列表 `searchList.do`\n\n```bash\n# GET 请求，参数需 URL 编码\ncurl -G -sL \"https://dl.ccf.org.cn/searchList.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -H \"Referer: https://dl.ccf.org.cn/V2/toSearchList.html\" \\\n  --data-urlencode \"page=1\" \\\n  --data-urlencode \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  --data-urlencode \"searchText2=\" \\\n  --data-urlencode \"sort=score desc\" \\\n  --data-urlencode \"pageNumber=30\"\n```\n\n**参数说明：**\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| page | int | 页码，从1开始 |\n| classen | int | 分类，-1=全部，其他值对应具体分类 |\n| searchText | string | 搜索关键词（需URL编码） |\n| searchText2 | string | 分面筛选条件（Solr语法，可选） |\n| sort | string | 排序：`score desc`（相关度）/ `date desc`（时间） |\n| pageNumber | int | 每页条数，默认30 |\n\n**返回结构：** `dataRole[0][\"search\"][\"data\"]` 包含结果数组，`dataRole[0][\"search\"][\"count\"]` 为总数。\n\n每条结果包含：`id`, `title`, `classEn`（类型：`audio_video`/`ppt`/`cccf`/`picture`/`qkwz` 等），`op_author`, `date`, `cover`, `view_count` 等。\n\n#### 1.2 分面统计 `facetedStatistics.do`\n\n```bash\n# POST 请求，获取左侧筛选栏的分类统计\ncurl -s -X POST \"https://dl.ccf.org.cn/facetedStatistics.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  -d \"searchText2=\"\n```\n\n#### 1.3 其他辅助接口\n\n| 接口 | 方法 | URL | 说明 |\n|------|------|-----|------|\n| 热词推荐 | POST | `https://dl.ccf.org.cn/V2/getHotWords` | 获取周期内热门检索词 |\n| 专辑搜索 | POST | `https://dl.ccf.org.cn/albumList/searchAlbum` | 搜索专辑（`searchword`, `pageNum`, `pageSize`） |\n\n---\n\n### 2. 视频专用搜索\n\n**页面地址：** `https://dl.ccf.org.cn/video/videoIndex.html`（用户端）\n**后端API：** `POST /video/getVideoList`（程序调用）\n\n```bash\ncurl -s -X POST \"https://dl.ccf.org.cn/video/getVideoList\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"pageNum=1\" \\\n  -d \"pageSize=16\" \\\n  --data-urlencode \"searchTerm=大模型\" \\\n  -d \"sortRule=date\" \\\n  -d \"dataYear=\" \\\n  -d \"seriesText=\"\n```\n\n**参数说明：**\n\n| 参数 | 说明 |\n|------|------|\n| pageNum | 页码 |\n| pageSize | 每页条数（默认16） |\n| searchTerm | 搜索关键词 |\n| sortRule | 排序：`date` / `view_count` |\n| dataYear | 年份筛选（如 `2025`） |\n| seriesText | 系列筛选 |\n\n**筛选条件接口：** `POST /video/getConditions`（无参数，返回 `dateYears` 年份列表等）\n\n---\n\n### 3. 讲稿/PPT 专用搜索\n\n**页面地址：** `https://dl.ccf.org.cn/ppt/pptIndex.html`（用户端）\n**后端API：** `POST /ppt/getPPTList`（程序调用）\n\n```bash\ncurl -s -X POST \"https://dl.ccf.org.cn/ppt/getPPTList\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"pageNum=1\" \\\n  -d \"pageSize=16\" \\\n  --data-urlencode \"searchTerm=大模型\" \\\n  -d \"sortRule=date\"\n```\n\n**参数同视频接口**（`pageNum`, `pageSize`, `searchTerm`, `sortRule`, `dataYear`, `seriesText`）。\n\n**筛选条件接口：** `POST /ppt/getConditions`\n\n---\n\n### 4. 专辑搜索\n\n**页面地址：**\n- 会议专辑：`https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy`\n- 专题专辑：`https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt`\n\n**后端API（均为 GET，RESTful 路径参数）：**\n\n| 接口 | URL模式 |\n|------|---------|\n| 会议专辑列表 | `GET /albumList/getMeetingAlbums/{year}/{series}/{keyword}/{sort}/{page}` |\n| 会议专辑筛选条件 | `GET /albumList/getMeetingAlbumConditions` |\n| 关键词专辑 | `GET /albumList/getKeyWordsAlbumList/{keyword}/{page}/{sort}` |\n| 作者专辑 | `GET /albumList/getAuthorAlbumList/{keyword}/{page}/{sort}` |\n| 专题专辑 | `GET /albumList/getSpecialAlbumList/{keyword}/{page}/{sort}` |\n\n```bash\n# 会议专辑搜索示例\ncurl -s \"https://dl.ccf.org.cn/albumList/getMeetingAlbums/0/0/大模型/date/1\"\n\n# 关键词专辑搜索\ncurl -s \"https://dl.ccf.org.cn/albumList/getKeyWordsAlbumList/大模型/1/date\"\n```\n\n**注意：** 专辑接口路径中的中文关键词需 URL 编码。`0` 表示全部（不筛选年份/系列）。\n\n---\n\n### 5. 资源类型汇总\n\n| 类型 | 中文名 | 用户页面地址（给用户看） | 后端API（程序调用） |\n|------|--------|--------------------------|---------------------|\n| 🔍 统一搜索 | 全部 | `/V2/toSearchList.html?searchText=关键词` | `GET /searchList.do` |\n| 📹 视频 | 视频 | `/video/videoIndex.html` | `POST /video/getVideoList` |\n| 📝 讲稿 | 讲稿/PPT | `/ppt/pptIndex.html` | `POST /ppt/getPPTList` |\n| 📚 会议专辑 | 会议专辑 | `/albumList/albumSecondary.html?selectType=hy` | `GET /albumList/getMeetingAlbums/...` |\n| 📂 专题专辑 | 专辑 | `/albumList/albumSecondary.html?selectType=zt` | `GET /albumList/getKeyWordsAlbumList/...` |\n\n---\n\n### 6. 查询策略建议\n\n**优先使用 `searchList.do`（统一搜索）** — 一次查询即可获取所有类型的结果，通过 `classEn` 字段区分资源类型。\n\n当用户明确只需要某种类型（如\"只看视频\"或\"只看讲稿\"）时，再使用对应的专用API（`/video/getVideoList`、`/ppt/getPPTList` 等）。\n\n**安全提示：** 所有用户输入的关键词在拼接到URL前必须URL编码，避免注入风险。\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\n\n## CCF定时任务自动化\n\n### 定时任务概述\nCCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息，支持个性化推荐和智能提醒。\n\n### 定时任务类型\n\n#### 1. CCF新闻与活动摘要\n- **执行频率**：根据用户需求配置（可选择每天、每周或其他频率）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：CCF新闻 + 近期活动 + 个性化推荐\n- **适用场景**：希望定期了解CCF动态的用户\n\n#### 2. 活动汇总报告\n- **执行频率**：根据用户需求配置（通常为每周，也可自定义）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：活动安排 + 新闻回顾 + 未来预告 + 报名提醒\n- **适用场景**：需要全面了解CCF活动安排的用户\n\n#### 3. 认证/竞赛报名提醒\n- **执行频率**：根据用户关注的认证/竞赛类型和需求配置\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：根据用户关注的活动类型（如NOI/CSP/CCSP/GESP/PTA/LMCC等）提供相应的报名截止提醒\n- **适用场景**：关注特定认证或竞赛报名的用户\n\n### 定时任务生成方法\n\n#### 1. 使用cron工具创建任务（根据用户需求自定义）\n```javascript\n// 示例：自定义频率和时间的CCF新闻摘要任务\ncron.add({\n  name: \"CCF新闻摘要-自定义\",\n  // 根据用户需求设置cron表达式\n  // 每天9点: \"0 9 * * *\"\n  // 每周一10点: \"0 10 * * 1\"  \n  // 每周三/五8点: \"0 8 * * 3,5\"\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"⏰ CCF新闻摘要时间到了！请根据用户偏好（研究领域、活动类型、地理位置、可参与时间）查询相关内容...\"\n  },\n  sessionTarget: \"main\"\n})\n\n// 示例：自定义认证/竞赛关注范围\ncron.add({\n  name: \"CCF认证竞赛提醒-自定义\",\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"🎯 CCF认证/竞赛提醒时间到了！请根据用户关注的认证/竞赛类型（如GESP/LMCC/CSP/NOI/CCSP/PTA等）检查报名截止日期...\"\n  },\n  sessionTarget: \"main\"\n})\n```\n\n#### 2. 用户需求收集模板\n在创建定时任务前，应收集以下用户信息：\n\n```markdown\n## 用户定时任务需求\n\n### 执行频率偏好\n- [ ] 每天\n- [ ] 每周（周几：______）\n- [ ] 每月（几号：______）\n- [ ] 自定义频率：_____________\n\n### 通知时间偏好\n- 希望在每天 ______ 点收到通知\n- 时区：Asia/Shanghai（默认）\n\n### 内容关注范围\n- [ ] CCF新闻\n- [ ] 学术会议（CNCC/YEF/ADL等）\n- [ ] 认证考试（GESP/PTA/LMCC/CSP）\n- [ ] 竞赛活动（NOI/CCSP等）\n- [ ] 技术论坛\n- [ ] 其他：_____________\n\n### 个性化偏好\n- 研究领域：_________________\n- 活动类型：_________________\n- 地理位置：_________________\n- 可参与时间：_______________\n```\n\n#### 2. 用户偏好集成\n根据用户提供的偏好或历史聊天记录总结用户兴趣方向：（以下为示例）\n\n```markdown\n## 技术兴趣（用于活动推荐）\n- **研究领域**: 人工智能、自然语言处理、大模型\n- **偏好活动类型**: 讲习班、CNCC、技术论坛\n- **常驻城市**: 北京\n- **可参与时间**: 周末、节假日\n\n## 个性化设置\n- 自动推荐匹配兴趣的活动：是\n- 自动检索已结束活动资源：是\n```\n\n#### 3. 个性化推荐规则\n- **研究领域匹配**：优先推荐用户关注领域方向的活动\n- **活动类型偏好**：优先推荐用户指定的讲习班、CNCC、技术论坛等活动\n- **地理偏好**：优先推荐用户所在地区及周边地区活动\n- **时间偏好**：标注适合周末参加的活动\n\n### 定时任务管理命令\n\n#### 查看所有任务\n```bash\ncron list\n```\n\n#### 删除特定任务\n```bash\ncron remove --jobId <任务ID>\n```\n\n#### 更新任务配置\n```bash\ncron update --jobId <任务ID> --patch '{\"schedule\":{\"expr\":\"新的cron表达式\"}}'\n```\n\n#### 禁用/启用任务\n```bash\n# 禁用\ncron update --jobId <任务ID> --patch '{\"enabled\":false}'\n# 启用\ncron update --jobId <任务ID> --patch '{\"enabled\":true}'\n```\n\n### 输出格式规范\n\n定时任务的标准输出格式：\n\n```markdown\n# CCF [日期] 活动概览\n\n## 🎯 为您推荐\n> 根据您的兴趣偏好（xxx），为您筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |\n|------|----------|------|----------|------|\n\n## 📰 今日新闻\n[今日CCF官方新闻]\n\n## 🟢 正在报名中\n[报名中的活动列表]\n\n## 🔵 即将开始\n[即将开始的活动列表]\n\n## ⏰ 重要提醒\n- [认证/竞赛报名截止提醒]\n```\n\n### 跨平台兼容性\n- **统一调度机制**：不依赖操作系统原生定时器\n- **标准cron语法**：在Windows/Linux/macOS上使用相同的cron表达式\n- **时区支持**：支持任意IANA时区（如Asia/Shanghai）\n- **自动恢复**：OpenClaw重启后定时任务自动恢复\n- **无需特殊权限**：不需要管理员/root权限\n\n## 数据真实性约束（强制执行）\n\n**最高优先级规则**：所有输出内容必须严格基于API返回数据或网页的实际内容：\n\n- 不得凭空创造不存在的会议、认证或竞赛\n- 不得猜测或推断活动时间，必须使用原始数据中的日期\n- 不得自行补充API中不包含的地点信息\n- 不得自行构造未经数据源确认的URL（除模板定义的生成规则外）\n\nFile v1.1.420:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.420\",\n  \"publishedAt\": 1779866072809\n}\n\nFile v1.1.420:skill-card.md\n\n## Description: <br>\nFinds recent CCF events, certification competitions, and schedules, with preference-based recommendations, status grouping, and digital-library resource lookup for completed events. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[alucard118](https://clawhub.ai/user/alucard118) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, developers, and researchers use this skill to look up CCF meetings, certifications, competitions, and related digital-library resources. It can also help format event summaries, recommend relevant activities from stated interests, and prepare reminder workflows when requested. <br>\n\n### Deployment Geography for Use: <br>\nGlobal; content sources are CCF services focused on China-based computing events. <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may guide browser automation setup for CCF pages that are difficult to access with static requests. <br>\nMitigation: Review any suggested Puppeteer commands before running them, install dependencies only in an isolated project directory, and prefer existing system browsers when possible. <br>\nRisk: The skill includes recurring reminder task behavior for CCF news, events, certifications, and competitions. <br>\nMitigation: Review the cron schedule, timezone, payload, and session target before accepting a reminder task, and disable or remove tasks that are no longer needed. <br>\nRisk: The Puppeteer configuration helper can write a .env file in the current project directory. <br>\nMitigation: Inspect or back up any existing .env file before using the helper, and avoid running configuration helpers from unrelated project directories. <br>\n\n\n## Reference(s): <br>\n- [ccf-events ClawHub release](https://clawhub.ai/alucard118/ccf-events) <br>\n- [CCF homepage](https://www.ccf.org.cn) <br>\n- [CCF event calendar](https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122) <br>\n- [CCF meeting list API](https://conf.ccf.org.cn/conf/v2/index/meeting/list.do) <br>\n- [CCF digital library search](https://dl.ccf.org.cn/V2/toSearchList.html) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown tables with links, plus optional shell commands and configuration guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include CCF event summaries, resource links, cron reminder suggestions, and Puppeteer setup guidance when relevant.] <br>\n\n## Skill Version(s): <br>\n1.1.420 (source: server release evidence and SKILL.md frontmatter; package.json reports 1.0.0) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.420:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.419: 5 files, 19016 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), skill-card.md (2459b), SKILL.md (34312b), _meta.json (131b)\n\nFile v1.1.419:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.419\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 活动查询核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿、专辑等）时使用。\n\n### 架构说明\n数字图书馆前端页面是用户看到的搜索界面，但**实际数据通过后端API返回JSON**。\n\n- **用户页面地址** = 前端搜索入口URL（可发给用户点击打开）\n- **后端API地址** = 实际数据接口（用于程序化查询，返回结构化JSON）\n\n### ⚠️ 重要：区分页面URL和API端点\n不要将页面URL当成API来调用。例如 `https://dl.ccf.org.cn/video/videoIndex.html?searWord=xxx` 是用户看到的视频搜索**页面**，它内部调用的是 `/video/getVideoList` 这个**后端API**。\n\n---\n\n### 1. 统一搜索 API（聚合页 `/V2/toSearchList.html`）\n\n这是最常用的搜索入口，返回视频/讲稿/期刊/专辑等所有类型的聚合结果。\n\n#### 1.1 搜索列表 `searchList.do`\n\n```bash\n# GET 请求，参数需 URL 编码\ncurl -G -sL \"https://dl.ccf.org.cn/searchList.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -H \"Referer: https://dl.ccf.org.cn/V2/toSearchList.html\" \\\n  --data-urlencode \"page=1\" \\\n  --data-urlencode \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  --data-urlencode \"searchText2=\" \\\n  --data-urlencode \"sort=score desc\" \\\n  --data-urlencode \"pageNumber=30\"\n```\n\n**参数说明：**\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| page | int | 页码，从1开始 |\n| classen | int | 分类，-1=全部，其他值对应具体分类 |\n| searchText | string | 搜索关键词（需URL编码） |\n| searchText2 | string | 分面筛选条件（Solr语法，可选） |\n| sort | string | 排序：`score desc`（相关度）/ `date desc`（时间） |\n| pageNumber | int | 每页条数，默认30 |\n\n**返回结构：** `dataRole[0][\"search\"][\"data\"]` 包含结果数组，`dataRole[0][\"search\"][\"count\"]` 为总数。\n\n每条结果包含：`id`, `title`, `classEn`（类型：`audio_video`/`ppt`/`cccf`/`picture`/`qkwz` 等），`op_author`, `date`, `cover`, `view_count` 等。\n\n#### 1.2 分面统计 `facetedStatistics.do`\n\n```bash\n# POST 请求，获取左侧筛选栏的分类统计\ncurl -s -X POST \"https://dl.ccf.org.cn/facetedStatistics.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  -d \"searchText2=\"\n```\n\n#### 1.3 其他辅助接口\n\n| 接口 | 方法 | URL | 说明 |\n|------|------|-----|------|\n| 热词推荐 | POST | `https://dl.ccf.org.cn/V2/getHotWords` | 获取周期内热门检索词 |\n| 专辑搜索 | POST | `https://dl.ccf.org.cn/albumList/searchAlbum` | 搜索专辑（`searchword`, `pageNum`, `pageSize`） |\n\n---\n\n### 2. 视频专用搜索\n\n**页面地址：** `https://dl.ccf.org.cn/video/videoIndex.html`（用户端）\n**后端API：** `POST /video/getVideoList`（程序调用）\n\n```bash\ncurl -s -X POST \"https://dl.ccf.org.cn/video/getVideoList\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"pageNum=1\" \\\n  -d \"pageSize=16\" \\\n  --data-urlencode \"searchTerm=大模型\" \\\n  -d \"sortRule=date\" \\\n  -d \"dataYear=\" \\\n  -d \"seriesText=\"\n```\n\n**参数说明：**\n\n| 参数 | 说明 |\n|------|------|\n| pageNum | 页码 |\n| pageSize | 每页条数（默认16） |\n| searchTerm | 搜索关键词 |\n| sortRule | 排序：`date` / `view_count` |\n| dataYear | 年份筛选（如 `2025`） |\n| seriesText | 系列筛选 |\n\n**筛选条件接口：** `POST /video/getConditions`（无参数，返回 `dateYears` 年份列表等）\n\n---\n\n### 3. 讲稿/PPT 专用搜索\n\n**页面地址：** `https://dl.ccf.org.cn/ppt/pptIndex.html`（用户端）\n**后端API：** `POST /ppt/getPPTList`（程序调用）\n\n```bash\ncurl -s -X POST \"https://dl.ccf.org.cn/ppt/getPPTList\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"pageNum=1\" \\\n  -d \"pageSize=16\" \\\n  --data-urlencode \"searchTerm=大模型\" \\\n  -d \"sortRule=date\"\n```\n\n**参数同视频接口**（`pageNum`, `pageSize`, `searchTerm`, `sortRule`, `dataYear`, `seriesText`）。\n\n**筛选条件接口：** `POST /ppt/getConditions`\n\n---\n\n### 4. 专辑搜索\n\n**页面地址：**\n- 会议专辑：`https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy`\n- 专题专辑：`https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt`\n\n**后端API（均为 GET，RESTful 路径参数）：**\n\n| 接口 | URL模式 |\n|------|---------|\n| 会议专辑列表 | `GET /albumList/getMeetingAlbums/{year}/{series}/{keyword}/{sort}/{page}` |\n| 会议专辑筛选条件 | `GET /albumList/getMeetingAlbumConditions` |\n| 关键词专辑 | `GET /albumList/getKeyWordsAlbumList/{keyword}/{page}/{sort}` |\n| 作者专辑 | `GET /albumList/getAuthorAlbumList/{keyword}/{page}/{sort}` |\n| 专题专辑 | `GET /albumList/getSpecialAlbumList/{keyword}/{page}/{sort}` |\n\n```bash\n# 会议专辑搜索示例\ncurl -s \"https://dl.ccf.org.cn/albumList/getMeetingAlbums/0/0/大模型/date/1\"\n\n# 关键词专辑搜索\ncurl -s \"https://dl.ccf.org.cn/albumList/getKeyWordsAlbumList/大模型/1/date\"\n```\n\n**注意：** 专辑接口路径中的中文关键词需 URL 编码。`0` 表示全部（不筛选年份/系列）。\n\n---\n\n### 5. 资源类型汇总\n\n| 类型 | 中文名 | 用户页面地址（给用户看） | 后端API（程序调用） |\n|------|--------|--------------------------|---------------------|\n| 🔍 统一搜索 | 全部 | `/V2/toSearchList.html?searchText=关键词` | `GET /searchList.do` |\n| 📹 视频 | 视频 | `/video/videoIndex.html` | `POST /video/getVideoList` |\n| 📝 讲稿 | 讲稿/PPT | `/ppt/pptIndex.html` | `POST /ppt/getPPTList` |\n| 📖 期刊 | 期刊/论文 | `/article/articleIndex.html` | （待探索） |\n| 📚 会议专辑 | 会议专辑 | `/albumList/albumSecondary.html?selectType=hy` | `GET /albumList/getMeetingAlbums/...` |\n| 📂 专题专辑 | 专辑 | `/albumList/albumSecondary.html?selectType=zt` | `GET /albumList/getKeyWordsAlbumList/...` |\n\n---\n\n### 6. 查询策略建议\n\n**优先使用 `searchList.do`（统一搜索）** — 一次查询即可获取所有类型的结果，通过 `classEn` 字段区分资源类型。\n\n当用户明确只需要某种类型（如\"只看视频\"或\"只看讲稿\"）时，再使用对应的专用API（`/video/getVideoList`、`/ppt/getPPTList` 等）。\n\n**安全提示：** 所有用户输入的关键词在拼接到URL前必须URL编码，避免注入风险。\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\n\n## CCF定时任务自动化\n\n### 定时任务概述\nCCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息，支持个性化推荐和智能提醒。\n\n### 定时任务类型\n\n#### 1. CCF新闻与活动摘要\n- **执行频率**：根据用户需求配置（可选择每天、每周或其他频率）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：CCF新闻 + 近期活动 + 个性化推荐\n- **适用场景**：希望定期了解CCF动态的用户\n\n#### 2. 活动汇总报告\n- **执行频率**：根据用户需求配置（通常为每周，也可自定义）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：活动安排 + 新闻回顾 + 未来预告 + 报名提醒\n- **适用场景**：需要全面了解CCF活动安排的用户\n\n#### 3. 认证/竞赛报名提醒\n- **执行频率**：根据用户关注的认证/竞赛类型和需求配置\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：根据用户关注的活动类型（如NOI/CSP/CCSP/GESP/PTA/LMCC等）提供相应的报名截止提醒\n- **适用场景**：关注特定认证或竞赛报名的用户\n\n### 定时任务生成方法\n\n#### 1. 使用cron工具创建任务（根据用户需求自定义）\n```javascript\n// 示例：自定义频率和时间的CCF新闻摘要任务\ncron.add({\n  name: \"CCF新闻摘要-自定义\",\n  // 根据用户需求设置cron表达式\n  // 每天9点: \"0 9 * * *\"\n  // 每周一10点: \"0 10 * * 1\"  \n  // 每周三/五8点: \"0 8 * * 3,5\"\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"⏰ CCF新闻摘要时间到了！请根据用户偏好（研究领域、活动类型、地理位置、可参与时间）查询相关内容...\"\n  },\n  sessionTarget: \"main\"\n})\n\n// 示例：自定义认证/竞赛关注范围\ncron.add({\n  name: \"CCF认证竞赛提醒-自定义\",\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"🎯 CCF认证/竞赛提醒时间到了！请根据用户关注的认证/竞赛类型（如GESP/LMCC/CSP/NOI/CCSP/PTA等）检查报名截止日期...\"\n  },\n  sessionTarget: \"main\"\n})\n```\n\n#### 2. 用户需求收集模板\n在创建定时任务前，应收集以下用户信息：\n\n```markdown\n## 用户定时任务需求\n\n### 执行频率偏好\n- [ ] 每天\n- [ ] 每周（周几：______）\n- [ ] 每月（几号：______）\n- [ ] 自定义频率：_____________\n\n### 通知时间偏好\n- 希望在每天 ______ 点收到通知\n- 时区：Asia/Shanghai（默认）\n\n### 内容关注范围\n- [ ] CCF新闻\n- [ ] 学术会议（CNCC/YEF/ADL等）\n- [ ] 认证考试（GESP/PTA/LMCC/CSP）\n- [ ] 竞赛活动（NOI/CCSP等）\n- [ ] 技术论坛\n- [ ] 其他：_____________\n\n### 个性化偏好\n- 研究领域：_________________\n- 活动类型：_________________\n- 地理位置：_________________\n- 可参与时间：_______________\n```\n\n#### 2. 用户偏好集成\n根据用户提供的偏好或历史聊天记录总结用户兴趣方向：（以下为示例）\n\n```markdown\n## 技术兴趣（用于活动推荐）\n- **研究领域**: 人工智能、自然语言处理、大模型\n- **偏好活动类型**: 讲习班、CNCC、技术论坛\n- **常驻城市**: 北京\n- **可参与时间**: 周末、节假日\n\n## 个性化设置\n- 自动推荐匹配兴趣的活动：是\n- 自动检索已结束活动资源：是\n```\n\n#### 3. 个性化推荐规则\n- **研究领域匹配**：优先推荐用户关注领域方向的活动\n- **活动类型偏好**：优先推荐用户指定的讲习班、CNCC、技术论坛等活动\n- **地理偏好**：优先推荐用户所在地区及周边地区活动\n- **时间偏好**：标注适合周末参加的活动\n\n### 定时任务管理命令\n\n#### 查看所有任务\n```bash\ncron list\n```\n\n#### 删除特定任务\n```bash\ncron remove --jobId <任务ID>\n```\n\n#### 更新任务配置\n```bash\ncron update --jobId <任务ID> --patch '{\"schedule\":{\"expr\":\"新的cron表达式\"}}'\n```\n\n#### 禁用/启用任务\n```bash\n# 禁用\ncron update --jobId <任务ID> --patch '{\"enabled\":false}'\n# 启用\ncron update --jobId <任务ID> --patch '{\"enabled\":true}'\n```\n\n### 输出格式规范\n\n定时任务的标准输出格式：\n\n```markdown\n# CCF [日期] 活动概览\n\n## 🎯 为您推荐\n> 根据您的兴趣偏好（xxx），为您筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |\n|------|----------|------|----------|------|\n\n## 📰 今日新闻\n[今日CCF官方新闻]\n\n## 🟢 正在报名中\n[报名中的活动列表]\n\n## 🔵 即将开始\n[即将开始的活动列表]\n\n## ⏰ 重要提醒\n- [认证/竞赛报名截止提醒]\n```\n\n### 跨平台兼容性\n- **统一调度机制**：不依赖操作系统原生定时器\n- **标准cron语法**：在Windows/Linux/macOS上使用相同的cron表达式\n- **时区支持**：支持任意IANA时区（如Asia/Shanghai）\n- **自动恢复**：OpenClaw重启后定时任务自动恢复\n- **无需特殊权限**：不需要管理员/root权限\n\n## 数据真实性约束（强制执行）\n\n**最高优先级规则**：所有输出内容必须严格基于API返回数据或网页的实际内容：\n\n- 不得凭空创造不存在的会议、认证或竞赛\n- 不得猜测或推断活动时间，必须使用原始数据中的日期\n- 不得自行补充API中不包含的地点信息\n- 不得自行构造未经数据源确认的URL（除模板定义的生成规则外）\n\nFile v1.1.419:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.419\",\n  \"publishedAt\": 1779865066844\n}\n\nFile v1.1.419:skill-card.md\n\n## Description: <br>\nLooks up recent CCF academic conferences, certification exams, competitions, and event schedules, with personalized recommendations, event status grouping, and post-event digital library resource links. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[alucard118](https://clawhub.ai/user/alucard118) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, researchers, students, and educators can use this skill to query CCF event and certification schedules, filter results by research or activity interests, and receive organized Markdown tables with registration or resource links. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Persistent reminders or scheduled tasks may be created when reminder-related features are used. <br>\nMitigation: Review any cron tasks the skill creates and keep only expected reminders. <br>\nRisk: Puppeteer setup helpers can change local project configuration, including environment-file related setup. <br>\nMitigation: Run setup in a controlled project, back up important .env files before using config helpers, and review generated changes. <br>\nRisk: Broad auto-triggers may activate for ordinary meeting or activity questions. <br>\nMitigation: Narrow or disable auto-triggers when the skill should respond only to explicit CCF requests. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/alucard118/ccf-events) <br>\n- [CCF meeting list API](https://conf.ccf.org.cn/conf/v2/index/meeting/list.do) <br>\n- [CCF Digital Library unified search](https://dl.ccf.org.cn/searchList.do) <br>\n- [CCF homepage](https://www.ccf.org.cn) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown tables with links and optional bash/curl examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses live CCF and CCF Digital Library web/API responses; user-supplied search terms should be URL-encoded.] <br>\n\n## Skill Version(s): <br>\n1.1.419 (source: SKILL.md frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.419:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.418: 4 files, 16096 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (29393b), _meta.json (131b)\n\nFile v1.1.418:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.418\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿等）时使用。\n\n### 安全要求：URL 编码\n⚠️ 安全规范：用户输入的搜索关键词必须进行 URL 编码，禁止直接拼接到 URL 中。\n\n```bash\n# ✅ 正确做法：使用 --data-urlencode 自动编码\nSEARCH_TERM=\"用户输入的关键词\"\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${SEARCH_TERM}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 检索示例\n\n```bash\n# 按会议类型检索（固定关键词，安全）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=ADL\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按年份检索\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"year=2025\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按用户输入的关键词检索（必须编码）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${USER_KEYWORD}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 资源类型\n\n| 类型 | 中文名 | 搜索URL |\n|------|--------|---------|\n| video | 视频 | https://dl.ccf.org.cn/video/videoIndex.html |\n| ppt | 讲稿/PPT | https://dl.ccf.org.cn/ppt/pptIndex.html |\n| article | 期刊/论文 | https://dl.ccf.org.cn/article/articleIndex.html |\n| hy | 会议专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy |\n| zj | 专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt |\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\n\n## CCF定时任务自动化\n\n### 定时任务概述\nCCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息，支持个性化推荐和智能提醒。\n\n### 定时任务类型\n\n#### 1. CCF新闻与活动摘要\n- **执行频率**：根据用户需求配置（可选择每天、每周或其他频率）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：CCF新闻 + 近期活动 + 个性化推荐\n- **适用场景**：希望定期了解CCF动态的用户\n\n#### 2. 活动汇总报告\n- **执行频率**：根据用户需求配置（通常为每周，也可自定义）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：活动安排 + 新闻回顾 + 未来预告 + 报名提醒\n- **适用场景**：需要全面了解CCF活动安排的用户\n\n#### 3. 认证/竞赛报名提醒\n- **执行频率**：根据用户关注的认证/竞赛类型和需求配置\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：根据用户关注的活动类型（如NOI/CSP/CCSP/GESP/PTA/LMCC等）提供相应的报名截止提醒\n- **适用场景**：关注特定认证或竞赛报名的用户\n\n### 定时任务生成方法\n\n#### 1. 使用cron工具创建任务（根据用户需求自定义）\n```javascript\n// 示例：自定义频率和时间的CCF新闻摘要任务\ncron.add({\n  name: \"CCF新闻摘要-自定义\",\n  // 根据用户需求设置cron表达式\n  // 每天9点: \"0 9 * * *\"\n  // 每周一10点: \"0 10 * * 1\"  \n  // 每周三/五8点: \"0 8 * * 3,5\"\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"⏰ CCF新闻摘要时间到了！请根据用户偏好（研究领域、活动类型、地理位置、可参与时间）查询相关内容...\"\n  },\n  sessionTarget: \"main\"\n})\n\n// 示例：自定义认证/竞赛关注范围\ncron.add({\n  name: \"CCF认证竞赛提醒-自定义\",\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"🎯 CCF认证/竞赛提醒时间到了！请根据用户关注的认证/竞赛类型（如GESP/LMCC/CSP/NOI/CCSP/PTA等）检查报名截止日期...\"\n  },\n  sessionTarget: \"main\"\n})\n```\n\n#### 2. 用户需求收集模板\n在创建定时任务前，应收集以下用户信息：\n\n```markdown\n## 用户定时任务需求\n\n### 执行频率偏好\n- [ ] 每天\n- [ ] 每周（周几：______）\n- [ ] 每月（几号：______）\n- [ ] 自定义频率：_____________\n\n### 通知时间偏好\n- 希望在每天 ______ 点收到通知\n- 时区：Asia/Shanghai（默认）\n\n### 内容关注范围\n- [ ] CCF新闻\n- [ ] 学术会议（CNCC/YEF/ADL等）\n- [ ] 认证考试（GESP/PTA/LMCC/CSP）\n- [ ] 竞赛活动（NOI/CCSP等）\n- [ ] 技术论坛\n- [ ] 其他：_____________\n\n### 个性化偏好\n- 研究领域：_________________\n- 活动类型：_________________\n- 地理位置：_________________\n- 可参与时间：_______________\n```\n\n#### 2. 用户偏好集成\n根据用户提供的偏好或历史聊天记录总结用户兴趣方向：（以下为示例）\n\n```markdown\n## 技术兴趣（用于活动推荐）\n- **研究领域**: 人工智能、自然语言处理、大模型\n- **偏好活动类型**: 讲习班、CNCC、技术论坛\n- **常驻城市**: 北京\n- **可参与时间**: 周末、节假日\n\n## 个性化设置\n- 自动推荐匹配兴趣的活动：是\n- 自动检索已结束活动资源：是\n```\n\n#### 3. 个性化推荐规则\n- **研究领域匹配**：优先推荐用户关注领域方向的活动\n- **活动类型偏好**：优先推荐用户指定的讲习班、CNCC、技术论坛等活动\n- **地理偏好**：优先推荐用户所在地区及周边地区活动\n- **时间偏好**：标注适合周末参加的活动\n\n### 定时任务管理命令\n\n#### 查看所有任务\n```bash\ncron list\n```\n\n#### 删除特定任务\n```bash\ncron remove --jobId <任务ID>\n```\n\n#### 更新任务配置\n```bash\ncron update --jobId <任务ID> --patch '{\"schedule\":{\"expr\":\"新的cron表达式\"}}'\n```\n\n#### 禁用/启用任务\n```bash\n# 禁用\ncron update --jobId <任务ID> --patch '{\"enabled\":false}'\n# 启用\ncron update --jobId <任务ID> --patch '{\"enabled\":true}'\n```\n\n### 输出格式规范\n\n定时任务的标准输出格式：\n\n```markdown\n# CCF [日期] 活动概览\n\n## 🎯 为您推荐\n> 根据您的兴趣偏好（xxx），为您筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |\n|------|----------|------|----------|------|\n\n## 📰 今日新闻\n[今日CCF官方新闻]\n\n## 🟢 正在报名中\n[报名中的活动列表]\n\n## 🔵 即将开始\n[即将开始的活动列表]\n\n## ⏰ 重要提醒\n- [认证/竞赛报名截止提醒]\n```\n\n### 跨平台兼容性\n- **统一调度机制**：不依赖操作系统原生定时器\n- **标准cron语法**：在Windows/Linux/macOS上使用相同的cron表达式\n- **时区支持**：支持任意IANA时区（如Asia/Shanghai）\n- **自动恢复**：OpenClaw重启后定时任务自动恢复\n- **无需特殊权限**：不需要管理员/root权限\n\n## 数据真实性约束（强制执行）\n\n**最高优先级规则**：所有输出内容必须严格基于API返回数据或网页的实际内容：\n\n- 不得凭空创造不存在的会议、认证或竞赛\n- 不得猜测或推断活动时间，必须使用原始数据中的日期\n- 不得自行补充API中不包含的地点信息\n- 不得自行构造未经数据源确认的URL（除模板定义的生成规则外）\n\nFile v1.1.418:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.418\",\n  \"publishedAt\": 1778837705002\n}\n\nFile v1.1.418:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.417: 4 files, 16141 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (29484b), _meta.json (131b)\n\nFile v1.1.417:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.417\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿等）时使用。\n\n### 安全要求：URL 编码\n⚠️ 安全规范：用户输入的搜索关键词必须进行 URL 编码，禁止直接拼接到 URL 中。\n\n```bash\n# ✅ 正确做法：使用 --data-urlencode 自动编码\nSEARCH_TERM=\"用户输入的关键词\"\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${SEARCH_TERM}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 检索示例\n\n```bash\n# 按会议类型检索（固定关键词，安全）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=ADL\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按年份检索\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"year=2025\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按用户输入的关键词检索（必须编码）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${USER_KEYWORD}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 资源类型\n\n| 类型 | 中文名 | 搜索URL |\n|------|--------|---------|\n| video | 视频 | https://dl.ccf.org.cn/video/videoIndex.html |\n| ppt | 讲稿/PPT | https://dl.ccf.org.cn/ppt/pptIndex.html |\n| article | 期刊/论文 | https://dl.ccf.org.cn/article/articleIndex.html |\n| hy | 会议专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy |\n| zj | 专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt |\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\n\n## CCF定时任务自动化\n\n### 定时任务概述\nCCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息，支持个性化推荐和智能提醒。\n\n### 定时任务类型\n\n#### 1. CCF新闻与活动摘要\n- **执行频率**：根据用户需求配置（可选择每天、每周或其他频率）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：CCF新闻 + 近期活动 + 个性化推荐\n- **适用场景**：希望定期了解CCF动态的用户\n\n#### 2. 活动汇总报告\n- **执行频率**：根据用户需求配置（通常为每周，也可自定义）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：活动安排 + 新闻回顾 + 未来预告 + 报名提醒\n- **适用场景**：需要全面了解CCF活动安排的用户\n\n#### 3. 认证/竞赛报名提醒\n- **执行频率**：根据用户关注的认证/竞赛类型和需求配置\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：根据用户关注的活动类型（如NOI/CSP/CCSP/GESP/PTA/LMCC等）提供相应的报名截止提醒\n- **适用场景**：关注特定认证或竞赛报名的用户\n\n### 定时任务生成方法\n\n#### 1. 使用cron工具创建任务（根据用户需求自定义）\n```javascript\n// 示例：自定义频率和时间的CCF新闻摘要任务\ncron.add({\n  name: \"CCF新闻摘要-自定义\",\n  // 根据用户需求设置cron表达式\n  // 每天9点: \"0 9 * * *\"\n  // 每周一10点: \"0 10 * * 1\"  \n  // 每周三/五8点: \"0 8 * * 3,5\"\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"⏰ CCF新闻摘要时间到了！请根据用户偏好（研究领域、活动类型、地理位置、可参与时间）查询相关内容...\"\n  },\n  sessionTarget: \"main\"\n})\n\n// 示例：自定义认证/竞赛关注范围\ncron.add({\n  name: \"CCF认证竞赛提醒-自定义\",\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"🎯 CCF认证/竞赛提醒时间到了！请根据用户关注的认证/竞赛类型（如GESP/LMCC/CSP/NOI/CCSP/PTA等）检查报名截止日期...\"\n  },\n  sessionTarget: \"main\"\n})\n```\n\n#### 2. 用户需求收集模板\n在创建定时任务前，应收集以下用户信息：\n\n```markdown\n## 用户定时任务需求\n\n### 执行频率偏好\n- [ ] 每天\n- [ ] 每周（周几：______）\n- [ ] 每月（几号：______）\n- [ ] 自定义频率：_____________\n\n### 通知时间偏好\n- 希望在每天 ______ 点收到通知\n- 时区：Asia/Shanghai（默认）\n\n### 内容关注范围\n- [ ] CCF新闻\n- [ ] 学术会议（CNCC/YEF/ADL等）\n- [ ] 认证考试（GESP/PTA/LMCC/CSP）\n- [ ] 竞赛活动（NOI/CCSP等）\n- [ ] 技术论坛\n- [ ] 其他：_____________\n\n### 个性化偏好\n- 研究领域：_________________\n- 活动类型：_________________\n- 地理位置：_________________\n- 可参与时间：_______________\n```\n\n#### 2. 用户偏好集成\n根据用户提供的偏好或历史聊天记录总结用户兴趣方向：（以下为示例）\n\n```markdown\n## 技术兴趣（用于活动推荐）\n- **研究领域**: 人工智能、自然语言处理、大模型\n- **偏好活动类型**: 讲习班、CNCC、技术论坛\n- **常驻城市**: 北京\n- **可参与时间**: 周末、节假日\n\n## 个性化设置\n- 自动推荐匹配兴趣的活动：是\n- 自动检索已结束活动资源：是\n```\n\n#### 3. 个性化推荐规则\n- **研究领域匹配**：优先推荐用户关注领域方向的活动\n- **活动类型偏好**：优先推荐用户指定的讲习班、CNCC、技术论坛等活动\n- **地理偏好**：优先推荐用户所在地区及周边地区活动\n- **时间偏好**：标注适合周末参加的活动\n\n### 定时任务管理命令\n\n#### 查看所有任务\n```bash\ncron list\n```\n\n#### 删除特定任务\n```bash\ncron remove --jobId <任务ID>\n```\n\n#### 更新任务配置\n```bash\ncron update --jobId <任务ID> --patch '{\"schedule\":{\"expr\":\"新的cron表达式\"}}'\n```\n\n#### 禁用/启用任务\n```bash\n# 禁用\ncron update --jobId <任务ID> --patch '{\"enabled\":false}'\n# 启用\ncron update --jobId <任务ID> --patch '{\"enabled\":true}'\n```\n\n### 输出格式规范\n\n定时任务的标准输出格式：\n\n```markdown\n# CCF [日期] 活动概览\n\n## 🎯 为您推荐\n> 根据您的兴趣偏好（xxx），为您筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |\n|------|----------|------|----------|------|\n\n## 📰 今日新闻\n[今日CCF官方新闻]\n\n## 🟢 正在报名中\n[报名中的活动列表]\n\n## 🔵 即将开始\n[即将开始的活动列表]\n\n## ⏰ 重要提醒\n- [认证/竞赛报名截止提醒]\n```\n\n### 跨平台兼容性\n- **统一调度机制**：不依赖操作系统原生定时器\n- **标准cron语法**：在Windows/Linux/macOS上使用相同的cron表达式\n- **时区支持**：支持任意IANA时区（如Asia/Shanghai）\n- **自动恢复**：OpenClaw重启后定时任务自动恢复\n- **无需特殊权限**：不需要管理员/root权限\n\n## 数据真实性约束（强制执行）\n-**最高优先级规则**：所有输出内容必须严格基于API返回数据或网页的实际内容，绝对禁止：\n- **编造活动** - 不得凭空创造不存在的会议、认证或竞赛\n- **杜撰日期** - 不得猜测或推断活动时间，必须使用原始数据中的日期\n- **捏造地点** - 不得自行补充API中不包含的地点信息\n- **虚构链接** - 不得自行构造未经数据源确认的URL（除模板定义的生成规则外）\n\nFile v1.1.417:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.417\",\n  \"publishedAt\": 1778837521642\n}\n\nFile v1.1.417:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.416: 4 files, 15928 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (28971b), _meta.json (131b)\n\nFile v1.1.416:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.416\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿等）时使用。\n\n### 安全要求：URL 编码\n⚠️ 安全规范：用户输入的搜索关键词必须进行 URL 编码，禁止直接拼接到 URL 中。\n\n```bash\n# ✅ 正确做法：使用 --data-urlencode 自动编码\nSEARCH_TERM=\"用户输入的关键词\"\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${SEARCH_TERM}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 检索示例\n\n```bash\n# 按会议类型检索（固定关键词，安全）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=ADL\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按年份检索\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"year=2025\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按用户输入的关键词检索（必须编码）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${USER_KEYWORD}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 资源类型\n\n| 类型 | 中文名 | 搜索URL |\n|------|--------|---------|\n| video | 视频 | https://dl.ccf.org.cn/video/videoIndex.html |\n| ppt | 讲稿/PPT | https://dl.ccf.org.cn/ppt/pptIndex.html |\n| article | 期刊/论文 | https://dl.ccf.org.cn/article/articleIndex.html |\n| hy | 会议专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy |\n| zj | 专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt |\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\n\n## CCF定时任务自动化\n\n### 定时任务概述\nCCF定时任务功能允许用户自动定期获取CCF新闻、活动等信息，支持个性化推荐和智能提醒。\n\n### 定时任务类型\n\n#### 1. CCF新闻与活动摘要\n- **执行频率**：根据用户需求配置（可选择每天、每周或其他频率）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：CCF新闻 + 近期活动 + 个性化推荐\n- **适用场景**：希望定期了解CCF动态的用户\n\n#### 2. 活动汇总报告\n- **执行频率**：根据用户需求配置（通常为每周，也可自定义）\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：活动安排 + 新闻回顾 + 未来预告 + 报名提醒\n- **适用场景**：需要全面了解CCF活动安排的用户\n\n#### 3. 认证/竞赛报名提醒\n- **执行频率**：根据用户关注的认证/竞赛类型和需求配置\n- **通知时间**：根据用户偏好设置具体通知时间\n- **内容范围**：根据用户关注的活动类型（如NOI/CSP/CCSP/GESP/PTA/LMCC等）提供相应的报名截止提醒\n- **适用场景**：关注特定认证或竞赛报名的用户\n\n### 定时任务生成方法\n\n#### 1. 使用cron工具创建任务（根据用户需求自定义）\n```javascript\n// 示例：自定义频率和时间的CCF新闻摘要任务\ncron.add({\n  name: \"CCF新闻摘要-自定义\",\n  // 根据用户需求设置cron表达式\n  // 每天9点: \"0 9 * * *\"\n  // 每周一10点: \"0 10 * * 1\"  \n  // 每周三/五8点: \"0 8 * * 3,5\"\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"⏰ CCF新闻摘要时间到了！请根据用户偏好（研究领域、活动类型、地理位置、可参与时间）查询相关内容...\"\n  },\n  sessionTarget: \"main\"\n})\n\n// 示例：自定义认证/竞赛关注范围\ncron.add({\n  name: \"CCF认证竞赛提醒-自定义\",\n  schedule: { kind: \"cron\", expr: \"<用户自定义的cron表达式>\", tz: \"Asia/Shanghai\" },\n  payload: { \n    kind: \"systemEvent\", \n    text: \"🎯 CCF认证/竞赛提醒时间到了！请根据用户关注的认证/竞赛类型（如GESP/LMCC/CSP/NOI/CCSP/PTA等）检查报名截止日期...\"\n  },\n  sessionTarget: \"main\"\n})\n```\n\n#### 2. 用户需求收集模板\n在创建定时任务前，应收集以下用户信息：\n\n```markdown\n## 用户定时任务需求\n\n### 执行频率偏好\n- [ ] 每天\n- [ ] 每周（周几：______）\n- [ ] 每月（几号：______）\n- [ ] 自定义频率：_____________\n\n### 通知时间偏好\n- 希望在每天 ______ 点收到通知\n- 时区：Asia/Shanghai（默认）\n\n### 内容关注范围\n- [ ] CCF新闻\n- [ ] 学术会议（CNCC/YEF/ADL等）\n- [ ] 认证考试（GESP/PTA/LMCC/CSP）\n- [ ] 竞赛活动（NOI/CCSP等）\n- [ ] 技术论坛\n- [ ] 其他：_____________\n\n### 个性化偏好\n- 研究领域：_________________\n- 活动类型：_________________\n- 地理位置：_________________\n- 可参与时间：_______________\n```\n\n#### 2. 用户偏好集成\n根据用户提供的偏好或历史聊天记录总结用户兴趣方向：（以下为示例）\n\n```markdown\n## 技术兴趣（用于活动推荐）\n- **研究领域**: 人工智能、自然语言处理、大模型\n- **偏好活动类型**: 讲习班、CNCC、技术论坛\n- **常驻城市**: 北京\n- **可参与时间**: 周末、节假日\n\n## 个性化设置\n- 自动推荐匹配兴趣的活动：是\n- 自动检索已结束活动资源：是\n```\n\n#### 3. 个性化推荐规则\n- **研究领域匹配**：优先推荐用户关注领域方向的活动\n- **活动类型偏好**：优先推荐用户指定的讲习班、CNCC、技术论坛等活动\n- **地理偏好**：优先推荐用户所在地区及周边地区活动\n- **时间偏好**：标注适合周末参加的活动\n\n### 定时任务管理命令\n\n#### 查看所有任务\n```bash\ncron list\n```\n\n#### 删除特定任务\n```bash\ncron remove --jobId <任务ID>\n```\n\n#### 更新任务配置\n```bash\ncron update --jobId <任务ID> --patch '{\"schedule\":{\"expr\":\"新的cron表达式\"}}'\n```\n\n#### 禁用/启用任务\n```bash\n# 禁用\ncron update --jobId <任务ID> --patch '{\"enabled\":false}'\n# 启用\ncron update --jobId <任务ID> --patch '{\"enabled\":true}'\n```\n\n### 输出格式规范\n\n定时任务的标准输出格式：\n\n```markdown\n# CCF [日期] 活动概览\n\n## 🎯 为您推荐\n> 根据您的兴趣偏好（xxx），为您筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 状态 |\n|------|----------|------|----------|------|\n\n## 📰 今日新闻\n[今日CCF官方新闻]\n\n## 🟢 正在报名中\n[报名中的活动列表]\n\n## 🔵 即将开始\n[即将开始的活动列表]\n\n## ⏰ 重要提醒\n- [认证/竞赛报名截止提醒]\n```\n\n### 跨平台兼容性\n- **统一调度机制**：不依赖操作系统原生定时器\n- **标准cron语法**：在Windows/Linux/macOS上使用相同的cron表达式\n- **时区支持**：支持任意IANA时区（如Asia/Shanghai）\n- **自动恢复**：OpenClaw重启后定时任务自动恢复\n- **无需特殊权限**：不需要管理员/root权限\n\nFile v1.1.416:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.416\",\n  \"publishedAt\": 1778652406683\n}\n\nFile v1.1.416:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.415: 4 files, 14235 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (23789b), _meta.json (131b)\n\nFile v1.1.415:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.415\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿等）时使用。\n\n### 安全要求：URL 编码\n⚠️ 安全规范：用户输入的搜索关键词必须进行 URL 编码，禁止直接拼接到 URL 中。\n\n```bash\n# ✅ 正确做法：使用 --data-urlencode 自动编码\nSEARCH_TERM=\"用户输入的关键词\"\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${SEARCH_TERM}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 检索示例\n\n```bash\n# 按会议类型检索（固定关键词，安全）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=ADL\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按年份检索\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"year=2025\" \\\n  --data-urlencode \"pageNum_p=1\"\n\n# 按用户输入的关键词检索（必须编码）\ncurl -G -sL \"https://dl.ccf.org.cn/video/videoIndex.html\" \\\n  --data-urlencode \"searWord=${USER_KEYWORD}\" \\\n  --data-urlencode \"pageNum_p=1\"\n```\n\n### 资源类型\n\n| 类型 | 中文名 | 搜索URL |\n|------|--------|---------|\n| video | 视频 | https://dl.ccf.org.cn/video/videoIndex.html |\n| ppt | 讲稿/PPT | https://dl.ccf.org.cn/ppt/pptIndex.html |\n| article | 期刊/论文 | https://dl.ccf.org.cn/article/articleIndex.html |\n| hy | 会议专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=hy |\n| zj | 专辑 | https://dl.ccf.org.cn/albumList/albumSecondary.html?selectType=zt |\n\n## 输出格式（强制要求）\n【强制要求】必须严格按照以下格式输出，禁止输出无格式的列表或长文本！\n\n### 状态判断规则\n\n| 活动日期与当前日期比较 | 状态 | 必须输出的列 |\n|------------------------|------|--------------|\n| 活动在当前日期之后，且在报名期内 | 🟢 报名中 | 日期、活动名称、地点、报名截止、会议地址 |\n| 活动在当前日期之后，报名尚未开始 | 🔵 即将开始 | 日期、活动名称、地点、状态 |\n| 活动在当前日期之前已结束 | ⚪ 已结束 | 日期、活动名称、地点、视频链接、讲稿链接 |\n### 输出模板\n如果用户提供了兴趣偏好，在输出开头增加「为你推荐」板块：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"人工智能\"领域 | [会议地址](https://ccf.org.cn/shortUrl) |\n```\n\n### 完整输出模板：\n\n```markdown\n# CCF 近期活动概览\n\n**查询日期：2026-05-06**\n\n## 🎯为你推荐\n\n> 根据你的兴趣偏好（XXX），为你筛选了以下活动：\n\n| 日期 | 活动名称 | 地点 | 匹配原因 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 匹配\"XXX\" | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🟢 正在报名中\n\n| 日期 | 活动名称 | 地点 | 报名截止 | 会议地址 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | 2026-XX-XX | [会议地址](https://ccf.org.cn/shortUrl) |\n\n## 🔵 即将举办（未开始报名）\n\n| 日期 | 活动名称 | 地点 | 状态 |\n|------|----------|------|------|\n| 2026-XX-XX | 活动名称 | 地点 |   即将开始 |\n\n## ⚪ 已结束\n\n| 日期 | 活动名称 | 地点 | 视频回顾 | 讲稿下载 |\n|------|----------|------|----------|----------|\n| 2026-XX-XX | 活动名称 | 地点 | [查看视频](https://dl.ccf.org.cn/video/videoIndex.html?searWord=关键词) | [下载讲稿](https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=关键词) |\n```\n\n## 关键要求（必须执行）\n- 禁止输出长文本列表：不要输出无格式内容\n- 必须判断状态：根据活动日期和当前日期判断\n\n### 报名中的活动：\n- 必须给出会议地址（可点击链接）\n- 链接格式：[会议地址](URL)\n\n### 已结束的活动：\n- 必须自动去数字图书馆搜索资源\n- 视频链接：https://dl.ccf.org.cn/video/videoIndex.html?searWord=活动名称\n- 讲稿链接：https://dl.ccf.org.cn/ppt/pptIndex.html?searWord=活动名称\n\n## 个性化推荐规则\n当用户提供兴趣偏好时，必须执行：\n\n### 收集用户偏好关键词：\n- 研究领域：人工智能/机器学习/数据挖掘/计算机视觉/自然语言处理/网络安全/数据库/分布式系统/软件工程等\n- 活动类型：学术会议/认证考试/公益活动/培训讲习班/竞赛等\n- 其他：地点/时间/是否为CCF会员等\n\n### 匹配活动：将用户关键词与活动主题进行匹配\n\n| 活动 | 关键词 |\n|------|--------|\n| CCDE | 数字经济、AI+场景、产业数字化 |\n| FCES | 计算机教育、教育改革、教学创新 |\n| CCDM | 数据挖掘、机器学习、知识发现 |\n| WISA | 信息系统、大数据、知识图谱 |\n| NLPCC | 自然语言处理、中文计算、LLM |\n| YEF | 青年科技、创新创业、前沿技术 |\n| CNCC | 计算机大会、旗舰会议、综合 |\n| ADL | 学科前沿、讲习班、培训 |\n| GESP | 编程认证、青少年、等级考试 |\n| CCF公益日 | 公益、技术公益、社会责任 |\n\n### 推荐输出格式：\n- 在输出最前方增加「为你推荐」板块\n- 说明匹配原因（如\"匹配'人工智能'领域\"）\n- 优先显示高匹配度的活动\n\n## 重要URL汇总\n\n| 类型 | URL |\n|------|-----|\n| CCF首页 | https://www.ccf.org.cn |\n| 活动列表 | https://www.ccf.org.cn/Activities/Activities/ |\n| 活动日历 | https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122 |\n| 会议系统（报名） | https://conf.ccf.org.cn/conf/show.action?code=index |\n| CCF新闻 | https://www.ccf.org.cn/Media_list/ |\n| YEF大会 | https://yef.ccf.org.cn/ |\n| CNCC | https://cncc.ccf.org.cn |\n| FCES | https://ccf.org.cn/fces2026 |\n\n## CCF认证查询\n\n### 认证类型概览\n\n| 认证缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| GESP | CCF编程能力等级认证 | 青少年编程学习者 | https://gesp.ccf.org.cn |\n| PTA | CCF编程培训师资认证 | 编程教师/培训师 | https://pta.ccf.org.cn |\n| LMCC | CCF大模型能力认证（青少年组/成人组） | 8-18岁青少年、18岁及以上成年人 | https://lmcc.ccf.org.cn |\n| CSP | CCF软件能力认证 | 大学生/专业人士 | https://www.cspro.org |\n\n### 查询方法\n\n#### 1. 直接API查询（推荐）\n对于GESP、PTA、LMCC认证，可直接访问其官方网站获取最新信息：\n\n```bash\n# GESP认证信息\nweb_fetch --url \"https://gesp.ccf.org.cn\" --extractMode markdown\n\n# PTA认证信息  \nweb_fetch --url \"https://pta.ccf.org.cn\" --extractMode markdown\n\n# LMCC认证信息\nweb_fetch --url \"https://lmcc.ccf.org.cn\" --extractMode markdown\n```\n\n#### 2. CSP认证特殊处理\nCSP认证官网（cspro.org）需要特殊处理：\n\n```bash\n# 使用web_search获取CSP最新通知\nweb_search --query \"CCF CSP 认证考试 报名时间 YYYY\"\n\n# 或直接访问CSP官网\nweb_fetch --url \"https://www.cspro.org\" --extractMode markdown\n```\n\n#### 3. 综合查询策略\n当用户询问认证信息时，按以下优先级执行：\n\n1. **检查是否有具体认证类型**（GESP/PTA/LMCC/CSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有四种认证\n\n2. **提取关键信息**：\n   - 考试日期\n   - 报名截止时间\n   - 费用标准\n   - 报名方式\n   - 参与条件\n\n3. **格式化输出**：\n   - 使用表格展示各认证信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 认证查询最佳实践\n\n#### 日期信息处理规范\n1. **严格区分不同类型的日期**：\n   - 报名开始时间\n   - 报名截止时间  \n   - 考试时间\n   - 准考证下载时间\n   - 成绩公布时间\n\n2. **数据源优先级**：\n   - 第一优先级：官方通知公告页面\n   - 第二优先级：认证系统首页\n   - 第三优先级：CCF主站相关页面\n\n3. **验证逻辑**：\n   - 报名截止日期 < 考试日期\n   - 准考证下载时间 < 考试日期\n   - 报名开始日期 < 报名截止日期\n\n4. **错误预防措施**：\n   - 避免将其他活动的日期误认为目标认证日期\n   - 不要基于当前日期推测截止日期\n   - 当日期信息模糊时，明确标注\"待官方确认\"\n\n#### GESP认证数据结构\n- 考试时间：每年4次（3月、6月、9月、12月）\n- 等级划分：1-8级（C++/Python），1-4级（图形化）\n- 年龄限制：6~18岁\n- 费用：1级300元，2级320元，3级340元，4级360元，5级380元，6级400元，7级420元，8级440元\n\n#### PTA认证数据结构\n- 考试频率：每年2次\n- 科目类型：P（编程能力）、T1（教学能力笔试）、T2（教学能力面试）\n- 年龄限制：18周岁及以上\n- 联合认证：与中国青少年科技教育工作者协会合作\n\n#### LMCC认证数据结构\n- **考试时间**：每次认证有2轮考试\n- **年龄限制**：\n  - 8-18周岁（[青少年组](https://lmcc.ccf.org.cn/101/1009/index.html)）\n  - 18周岁以上（[成人组](https://lmcc.ccf.org.cn/101/1013/index.html)）\n- **特色活动**：包含交流活动环节\n\n#### CSP认证数据结构\n- 考试频率：每年4次\n- 年龄限制：18周岁及以上\n- 考试形式：5道编程题，4小时，总分500分\n- 费用差异：会员/非会员价格不同，团报/个人报名价格不同\n\n### 输出模板\n\n```markdown\n# CCF认证考试报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [认证名称]\n\n**最新考试安排：**\n- **第X次认证**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **费用标准**：[费用详情]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **参与条件**：[参与要求]\n\n[重复以上结构为每个认证类型]\n\n##   各认证官网链接\n\n| 认证类型 | 官方网站 |\n|----------|----------|\n| GESP | [https://gesp.ccf.org.cn](https://gesp.ccf.org.cn) |\n| PTA | [https://pta.ccf.org.cn](https://pta.ccf.org.cn) |\n| LMCC | [https://lmcc.ccf.org.cn](https://lmcc.ccf.org.cn) |\n| CSP | [https://www.cspro.org](https://www.cspro.org) |\n\n## ⏰ 近期重要时间节点\n\n- **[认证名称]报名**：[截止日期]（还有X天）\n- **[认证名称]考试**：[考试日期]\n\n> **温馨提示**：建议考生提前注册账号并熟悉报名流程，部分考点考位有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **认证时间冲突**：\n   - 优先显示最近的考试安排\n   - 标注多个可选考试时间\n\n3. **日期解析错误预防**：\n   - **严禁混淆报名截止日期与考试日期**\n   - **必须从官方公告中直接提取具体日期，不得基于上下文推测**\n   - **当存在多个相关日期时，明确标注每个日期的含义（报名开始、报名截止、考试日期、准考证下载等）**\n   - **验证日期逻辑合理性（报名截止日期必须早于考试日期）**\n   - **如遇日期信息不完整，应明确告知用户并建议访问官网确认，而非做出假设**\n\n## CCF竞赛查询\n\n### 竞赛类型概览\n\n| 竞赛缩写 | 全称 | 目标人群 | 官方网站 |\n|----------|------|----------|----------|\n| NOI | 全国青少年信息学奥林匹克竞赛 | 高中生（19岁以下） | https://www.noi.cn/ |\n| CSP-J/S | CCF非专业级软件能力认证 | 小学生（12周岁及以上）/初中生/高中生 | https://www.noi.cn/ |\n| CCSP | CCF大学生计算机系统与程序设计竞赛 | 在校大学生 | https://ccsp.ccf.org.cn/ |\n\n### 查询方法\n\n#### 1. NOI/CSP-J/S竞赛查询\nNOI和CSP-J/S竞赛信息主要通过以下渠道获取（按优先级排序）：\n\n```bash\n# CCF官网活动日历（最可靠，包含精确时间）\nweb_fetch --url \"https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122\" --extractMode markdown\n\n# 精确搜索CCF官网的NOI通知\nweb_search --query \"site:ccf.org.cn \\\"NOI 2026\\\" 报名通知\"\n\n# NOI官网新闻（可能需要处理编码问题）\nweb_search --query \"NOI 2026 竞赛时间 青岛\"\n\n# CSP-J/S信息\nweb_search --query \"CSP-J/S 2026 非专业级软件能力认证 报名时间\"\n```\n\n**NOI查询经验总结**：\n- CCF官网活动日历通常包含最准确的竞赛时间和地点信息\n- NOI官网有时存在编码问题，建议优先使用web_search\n- 搜索时添加具体年份和月份可获得更精确结果\n- 关注\"报名截止时间\"的精确到小时（如18:00）\n\n#### 2. CCSP竞赛查询\nCCSP竞赛信息通过专门的竞赛官网获取：\n\n```bash\n# CCSP官网信息\nweb_fetch --url \"https://ccsp.ccf.org.cn/\" --extractMode markdown\n\n# 搜索CCSP最新通知\nweb_search --query \"CCSP 2026 大学生计算机系统与程序设计竞赛 报名时间\"\n```\n\n#### 3. 综合查询策略\n当用户询问竞赛信息时，按以下优先级执行：\n\n1. **检查是否有具体竞赛类型**（NOI/CSP-J/S/CCSP）\n   - 如果有，直接查询对应官网\n   - 如果没有，查询所有相关竞赛\n\n2. **提取关键信息**：\n   - 竞赛日期\n   - 报名截止时间\n   - 参赛条件\n   - 报名方式\n   - 费用标准（如适用）\n\n3. **格式化输出**：\n   - 使用表格展示各竞赛信息\n   - 标注报名状态（ 🟢  正在报名 / 🔵 即将开始 / ⚪ 已结束）\n   - 提供官方链接\n\n### 数据解析规则\n\n#### NOI竞赛数据结构\n- **参赛对象**：高中阶段在校学生，年龄≤19周岁\n- **竞赛体系**：CSP-S → NOIP → 省选 → NOI\n- **组队要求**：每省1领队+5选手（含1女选手）\n- **竞赛时间**：每年7月举行（2026年为7月18-24日）\n- **费用政策**：选手零收费，指导教师4800元/人（CCF会员3800元/人）\n- **报名截止**：通常为5月中旬（2026年为5月17日18:00）\n\n#### NOI查询最佳实践\n1. **官方信息源优先级**：\n   - 第一优先级：NOI官网新闻栏目（https://www.noi.cn/xw/）\n   - 第二优先级：各省NOI组织单位通知\n\n2. **关键时间节点识别**：\n   - 省选报名：通常1-2月\n   - 省选考试：通常3月\n   - 国赛报名：通常4-5月\n   - 国赛举办：通常7月\n\n3. **搜索关键词优化**：\n   - 基础搜索：\"NOI 2026 报名通知\"\n   - 精确搜索：\"site:ccf.org.cn \\\"NOI 2026\\\" 竞赛时间\"\n   - 时间限定：添加具体月份如\"2026年7月\"\n\n4. **信息验证要点**：\n   - 确认主办单位为\"中国计算机学会（CCF）\"\n   - 验证承办学校和地点信息\n   - 核对报名截止时间的精确到小时\n   - 确认费用政策是否为最新版本\n\n#### CSP-J/S竞赛数据结构\n- **CSP-J（入门级）**：面向小学生（12周岁及以上）、初中生，适合初次接触编程或竞赛经验较少的学生\n- **CSP-S（提高级）**：面向初中生、高中生，适合有竞赛经验、希望进一步提升水平的学生\n- **考试安排**：\n  - 第一轮（初赛）：9月，笔试为主\n  - 第二轮（复赛）：11月，上机编程\n- **费用标准**：第一轮50元，第二轮J组260元/S组480元\n\n#### CCSP竞赛数据结构\n- **参赛对象**：在校大学生（本科/研究生）\n- **资格要求**：CSP认证成绩优秀者优先\n- **竞赛时间**：每年10月\n- **竞赛形式**：12小时高强度编程竞赛\n- **竞赛内容**：算法、数据结构、操作系统、计算机网络等\n\n### 输出模板\n\n```markdown\n# CCF竞赛报名信息汇总（查询日期：YYYY-MM-DD）\n\n##   [竞赛名称]\n\n**最新竞赛安排：**\n- **竞赛时间**：YYYY年MM月DD日\n  - [具体时间安排]\n- **报名时间**：[报名开始时间] - [报名截止时间]\n- **参赛条件**：[参与要求]\n- **报名方式**：\n  - 官网报名：[官方链接]\n  - [其他报名方式]\n- **费用标准**：[费用详情，如适用]\n\n[重复以上结构为每个竞赛类型]\n\n##   各竞赛官网链接\n\n| 竞赛类型 | 官方网站 |\n|----------|----------|\n| NOI | [https://www.noi.cn/](https://www.noi.cn/) |\n| CSP-J/S | [https://www.noi.cn/](https://www.noi.cn/) |\n| CCSP | [https://ccsp.ccf.org.cn/](https://ccsp.ccf.org.cn/) |\n\n## ⏰ 近期重要时间节点\n\n- **[竞赛名称]报名**：[截止日期]（还有X天）\n- **[竞赛名称]竞赛**：[竞赛日期]\n\n> **温馨提示**：建议参赛者提前准备相关材料，关注官方通知，部分竞赛名额有限，建议尽早报名。\n```\n\n### 错误处理\n\n1. **数据格式变更**：\n   - 记录错误日志\n   - 使用通用文本提取方法\n   - 提示用户手动访问官网确认\n\n2. **竞赛时间冲突**：\n   - 优先显示最近的竞赛安排\n   - 标注多个可选竞赛时间\n\n## 注意事项\n- 部分网站使用JavaScript动态加载，直接curl只能获取部分数据\n- 如需获取完整数据，可能需要使用浏览器渲染工具\n- 如果curl无法获取，尝试添加更多Header：curl -s -L -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n- 会议名称需链接到详情页\n- 标注最后更新时间\n\n## 网页动态内容获取流程\n当需要获取 CCF 网页的动态内容（如 JavaScript 渲染的页面）时，按以下流程执行：\n\n决策流程\n\n```mermaid\nflowchart TD\n    A[使用 curl 尝试 1 次<br>获取目标页面] --> B{返回内容是否有效？<br>（非空、非403/500<br>、无防火墙拦截）}\n    \n    B -- 是 --> C[静态页面<br>直接使用] --> I([结束])\n    B -- 否 --> D[页面为动态渲染或返回403或被拦截<br>考虑使用 Puppeteer]\n    \n    D --> E{询问用户是否授权使用<br>Puppeteer 渲染页面？}\n    \n    E -- 授权 --> F[检测环境<br>安装/复用<br>Puppeteer] --> H[使用 Puppeteer<br>抓取动态内容] --> I\n    E -- 拒绝 --> G[返回静态内容<br>并提示用户<br>可能不完整] --> I\n```\n\n### 判断是否需要 Puppeteer\n\n| curl 返回结果 | 处理方式 |\n|---------------|----------|\n| 状态码 200，内容长度 > 500 字符 | ✅ 静态页面，直接使用 |\n| 状态码 403 / 401 / 500 | ⚠️ 可能被反爬或服务器错误，尝试 Puppeteer |\n| 出现页面加载的滚顶条或出现被拦截的信息 | ⚠️ 可能被防火墙拦截，尝试 Puppeteer |\n| 状态码 200，内容极短（< 500 字符）或为空 | ⚠️ 可能为动态渲染页面，尝试 Puppeteer |\n| 超时或连接失败 | ⚠️ 网络问题，提示用户后重试 |\n\n> **注意**：仅在浏览器自动化功能确实需要时才考虑使用 Puppeteer。\n\n### 安全要求\n\n- **用户明确授权**：安装前必须获得用户的明确同意，禁止静默安装。脚本仅提供检测和安装指南，实际安装由用户手动执行命令完成\n- **本地安装**：使用 `scripts/ensure_puppeteer.js` 脚本进行环境检测，安装命令由用户手动执行，确保仅安装到当前项目目录，不修改全局 Node/npm 环境\n- **固定版本号**：脚本内置固定版本 `puppeteer@24.15.0`，输出的安装命令使用固定版本，禁止安装未固定版本\n- **优先复用**：脚本优先检测并使用用户环境中已存在的 Puppeteer 和系统浏览器，避免重复安装\n- **禁止自动执行**：脚本不自动执行任何安装命令，仅输出手动安装指南，所有安装操作需用户手动确认和执行\n- **禁止第三方脚本**：仅使用项目自带的 `scripts/ensure_puppeteer.js` 脚本进行环境检测\n\nFile v1.1.415:_meta.json\n\n{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.415\",\n  \"publishedAt\": 1778549655133\n}\n\nFile v1.1.415:package.json\n\n{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}\n\nArchive v1.1.414: 4 files, 14240 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (23804b), _meta.json (131b)\n\nFile v1.1.414:SKILL.md\n\n---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.414\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID\n\nArchive v1.1.412: 4 files, 14236 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (23796b), _meta.json (131b)\n\nArchive v1.1.411: 4 files, 14323 bytes\n\nFiles: package.json (942b), scripts/ensure_puppeteer.js (15467b), SKILL.md (25029b), _meta.json (131b)","readmeExcerpt":"Skill: ccf-events Owner: alucard118 Summary: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。 Tags: latest:1.1.421 Version history: v1.1.421 | 2026-05-27T07:15:37.040Z | auto - Updated version to 1.1.421 in SKILL.md. - Changed trigger block field \"version\" from 1.1.420 to 1.1.421. - No functional or documentation changes beyond the version bump. v1.1.420 | 2026","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }"},{"language":"bash","snippet":"curl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'"},{"language":"bash","snippet":"# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'"},{"language":"bash","snippet":"curl -G -sL \"https://dl.ccf.org.cn/searchList.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -H \"Referer: https://dl.ccf.org.cn/V2/toSearchList.html\" \\\n  --data-urlencode \"page=1\" \\\n  --data-urlencode \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  --data-urlencode \"searchText2=\" \\\n  --data-urlencode \"sort=score desc\" \\\n  --data-urlencode \"pageNumber=30\""},{"language":"bash","snippet":"# GET 请求，参数需 URL 编码\ncurl -G -sL \"https://dl.ccf.org.cn/searchList.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -H \"Referer: https://dl.ccf.org.cn/V2/toSearchList.html\" \\\n  --data-urlencode \"page=1\" \\\n  --data-urlencode \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  --data-urlencode \"searchText2=\" \\\n  --data-urlencode \"sort=score desc\" \\\n  --data-urlencode \"pageNumber=30\""},{"language":"bash","snippet":"curl -s -X POST \"https://dl.ccf.org.cn/facetedStatistics.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -d \"classen=-1\" \\\n  --data-urlencode \"searchText=大模型\" \\\n  -d \"searchText2=\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: ccf-events\ndescription: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。\nauto_trigger: true\ntriggers:\n  - pattern: \"CCF|ccf|中国计算机学会|计算机学会\"\n    type: keyword\n    priority: high\n  - pattern: \"最近.*活动|近期.*会议|即将.*举办|会议通知|有什么活动|有没有会议|认证报名|竞赛报名\"\n    type: regex\n    priority: medium\n  - pattern: \"CNCC|YEF|ADL|FCES|CCDM|NLPCC|GESP|PTA|LMCC|NOI|CSP\"\n    type: keyword\n    priority: high\n  - pattern: \"查看.*活动|查询.*会议|浏览.*日程|查询.*认证|查询.*竞赛\"\n    type: regex\n    priority: low\nversion: 1.1.421\n---\n\n# CCF 活动信息查询\n\n获取中国计算机学会（CCF）近期学术会议、认证考试、活动日程等信息。\n\n**个性化推荐**：如果用户提供了兴趣偏好（如研究方向、技术领域等），根据用户兴趣从所有活动中筛选并推荐相关活动。\n\n## 活动查询核心功能\n\n### 1. API数据源\n- **主要API端点**：`https://conf.ccf.org.cn/conf/v2/index/meeting/list.do`\n- **请求方法**：POST\n- **请求体格式**：\n  ```json\n  {\n    \"pageNo\": 1,\n    \"pageSize\": 50,\n    \"signupTimeState\": \"0\",\n    \"sortType\": \"0\"\n  }\n  ```\n- 查找活动结束时间在一个月内的活动、查找未来三个月内举办的活动\n\n### 2. 会议地址生成规则\n从API返回的会议数据中，每个会议记录包含：\n\n- id: 会议ID (meetingId)\n- shortUrl: 短链接标识\n- webUrl: 官方网站URL（如果有）\n\n会议详情页面URL生成优先级：\n\n- 如果 webUrl 不为空 → 使用 webUrl\n- 如果 shortUrl 不为空 → 使用 https://ccf.org.cn/[shortUrl]\n- 否则 → 使用 https://conf.ccf.org.cn/web/html7/index.html?globalId=[id]&type=1\n\n### 3. 输出格式要求（强制执行）\n- 必须使用表格格式（禁止无格式长文本）\n- 会议地址列必须包含可点击的Markdown链接\n- 链接格式：[会议地址](URL)\n\n### 4. 特殊会议URL格式\n\n| 会议类型 | URL格式 |\n|----------|---------|\n| CNCC | https://cncc[年份].ccf.org.cn |\n| YEF（青年精英大会） | https://yef[年份].ccf.org.cn |\n| ADL（学科前沿讲习班） | https://ccf.org.cn/ADL[编号] |\n| NCCA（计算机应用大会） | https://ccf.org.cn/ncca[年份] |\n\n### 查询时间范围\n- 即将举办：未来三个月内（从今天到 +90 天）\n- 刚刚结束：过去一个月内（从今天到 -30 天）\n\n## 执行步骤\n\n### 步骤1：收集用户偏好（可选）\n如果用户提供了兴趣偏好，先收集并记录：\n\n- 研究领域：如人工智能、数据挖掘、计算机网络、自然语言处理等\n- 活动类型：如学术会议、认证考试、公益活动、培训讲习班等\n- 参与目的：如学习新技术、获取认证、交流学术、企业合作等\n- 时间偏好：如近期可参加、暑期、节假日等\n- 地点偏好：如一线城市、高校所在地等\n\n### 步骤2：调用CCF会议系统API获取数据\n\n```bash\n# 基础查询（无需用户输入）\ncurl -s -X POST \"https://conf.ccf.org.cn/conf/v2/index/meeting/list.do\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"pageNo\":1,\"pageSize\":50,\"signupTimeState\":\"0\",\"sortType\":\"0\"}'\n```\n\n### 步骤3：解析API返回数据\n从返回的JSON中提取 data.records 数组，每个记录包含：\n\n- id: meetingId\n- meetingTitle: 会议名称\n- startTime/endTime: 时间戳\n- province/city: 地点\n- shortUrl: 短链接\n- webUrl: 官方网站\n- signupTimeState: 报名状态\n\n### 步骤4：生成会议详情链接\n根据上述优先级规则生成每个会议的详情页面URL。\n\n### 步骤5：筛选和整理数据，区分活动状态\n判断活动状态的逻辑：\n\n- 当前日期在报名开始和结束时间之间 → 状态为 🟢 报名中\n- 当前日期早于报名开始时间 → 状态为 🔵 即将开始\n- 当前日期晚于活动结束时间 → 状态为 ⚪ 已结束\n\n## 资源检索（CCF数字图书馆）\n当用户想查询已结束活动的资源（视频、PPT、讲稿、专辑等）时使用。\n\n### 架构说明\n数字图书馆前端页面是用户看到的搜索界面，但**实际数据通过后端API返回JSON**。\n\n- **用户页面地址** = 前端搜索入口URL（可发给用户点击打开）\n- **后端API地址** = 实际数据接口（用于程序化查询，返回结构化JSON）\n\n### ⚠️ 重要：区分页面URL和API端点\n不要将页面URL当成API来调用。例如 `https://dl.ccf.org.cn/video/videoIndex.html?searWord=xxx` 是用户看到的视频搜索**页面**，它内部调用的是 `/video/getVideoList` 这个**后端API**。\n\n---\n\n### 1. 统一搜索 API（聚合页 `/V2/toSearchList.html`）\n\n这是最常用的搜索入口，返回视频/讲稿/期刊/专辑等所有类型的聚合结果。\n\n#### 1.1 搜索列表 `searchList.do`\n\n```bash\n# GET 请求，参数需 URL 编码\ncurl -G -sL \"https://dl.ccf.org.cn/searchList.do\" \\\n  -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\" \\\n  -H \"R"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7e76b7d4zpv9k9avhjjx6jvn82fvqb\",\n  \"slug\": \"ccf-events\",\n  \"version\": \"1.1.421\",\n  \"publishedAt\": 1779866137040\n}"},{"path":"skill-card.md","content":"## Description:\n\nQueries recent China Computer Federation events, conferences, certifications, competitions, and related schedules, with optional personalized recommendations and links to post-event CCF Digital Library resources.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[alucard118](https://clawhub.ai/user/alucard118)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to find current or recently ended CCF activities, certifications, competitions, and event resources. Agents use it to query CCF sources, classify event status, and return concise Markdown tables with official links.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Persistent scheduled reminders can create recurring background activity beyond one-time CCF lookups.\n\nMitigation: Enable cron reminders only after the user explicitly requests a recurring schedule, and provide a clear way to list, disable, or remove the job.\n\nRisk: The Puppeteer configuration helper can overwrite an existing project .env when run with --config.\n\nMitigation: Back up and review any existing .env before running --config, or configure PUPPETEER_EXECUTABLE_PATH manually.\n\nRisk: Generated Puppeteer verification commands may be unsafe to copy from an untrusted project directory.\n\nMitigation: Review generated commands before execution and run them only in trusted local projects.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/alucard118/skills/ccf-events)\n- [CCF meeting list API](https://conf.ccf.org.cn/conf/v2/index/meeting/list.do)\n- [CCF Digital Library search](https://dl.ccf.org.cn/searchList.do)\n- [CCF activities](https://www.ccf.org.cn/Activities/Activities/)\n\n## Skill Output:\n\n**Output Type(s):** [markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown tables with links and occasional shell command or configuration snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May use CCF event and digital library endpoints; scheduled reminders are optional and should be enabled only when requested.]\n\n## Skill Version(s):\n\n1.1.421 (source: SKILL.md frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"package.json","content":"{\n  \"name\": \"ccf-events\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CCF 活动信息查询工具 - 使用 Puppeteer 进行浏览器自动化\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"setup:puppeteer\": \"node scripts/ensure_puppeteer.js --install\",\n    \"setup:puppeteer:auto\": \"node scripts/ensure_puppeteer.js --auto\",\n    \"check:puppeteer\": \"node scripts/ensure_puppeteer.js\",\n    \"fix:puppeteer\": \"node scripts/ensure_puppeteer.js --fix\",\n    \"verify:puppeteer\": \"node scripts/ensure_puppeteer.js --verify\",\n    \"puppeteer:info\": \"node scripts/ensure_puppeteer.js --json\",\n    \"puppeteer:version\": \"node scripts/ensure_puppeteer.js --version\"\n  },\n  \"keywords\": [\n    \"ccf\",\n    \"puppeteer\",\n    \"automation\",\n    \"events\",\n    \"crawler\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\",\n    \"npm\": \">=7.0.0\"\n  },\n  \"dependencies\": {\n    \"puppeteer\": \"^24.15.0\"\n  },\n  \"devDependencies\": {},\n  \"private\": true\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。 Skill: ccf-events Owner: alucard118 Summary: 查询CCF（中国计算机学会）近期学术会议、认证竞赛、活动日程等信息。支持个性化推荐（根据用户研究领域/兴趣偏好筛选活动），自动区分活动状态（报名中/即将开始/已结束），为已结束活动提供数字图书馆视频和讲稿检索。 Tags: latest:1.1.421 Version history: v1.1.421 | 2026-05-27T07:15:37.040Z | auto - Updated version to 1.1.421 in SKILL.md. - Changed trigger block field \"version\" from 1.1.420 to 1.1.421. - No functional or documentation changes beyond the version bump. v1.1.420 | 2026","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1089,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T19:28:15.017Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:52:28.627Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}