yuque-ai-mcp 2.7.4 → 2.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,192 @@
1
+ <p align="center">
2
+ <img src="https://cdn.nlark.com/yuque/0/2025/png/25689388/1749661212345-avatar/8a3b5c7d-1e2f-4a5b-9c7d-8e1f2a3b4c5d.png" width="120" alt="yuque-ai-mcp" />
3
+ </p>
4
+
5
+ <h1 align="center">yuque-ai-mcp</h1>
6
+ <p align="center">
7
+ <b>61 fine-grained MCP tools for the full Yuque OpenAPI</b>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/version-2.7.4-blue" alt="version" /></a>
12
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license" /></a>
13
+ <a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-61%20guides-orange" alt="skills" /></a>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="README_CN.md">中文文档</a>
18
+ </p>
19
+
20
+ ---
21
+
22
+ A full-featured Yuque (语雀) MCP Server built on the [Model Context Protocol](https://modelcontextprotocol.io/). Provides 61 fine-grained tools across 15 domains — every Yuque OpenAPI endpoint as a dedicated tool.
23
+
24
+ ## Why
25
+
26
+ - **19 → 61 tools** — 3x more coverage than the official [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server)
27
+ - **Dual transport** — stdio + HTTP SSE, shared registry, zero downtime on reload
28
+ - **Modular architecture** — 15 domains, barrel exports, single source of truth registry
29
+ - **Full API coverage** — group, recycle, upload, statistics, versions, boards — all the missing pieces
30
+ - **[Skill layer](https://github.com/yehuoshun/yuque-ai-skills)** — 61 usage guides for AI agents
31
+
32
+ ## Table of Contents
33
+
34
+ - [Quick Start](#quick-start)
35
+ - [Tool Overview](#tool-overview)
36
+ - [Architecture](#architecture)
37
+ - [Configuration](#configuration)
38
+ - [Error Handling](#error-handling)
39
+ - [Contributing](#contributing)
40
+ - [License](#license)
41
+
42
+ ## Quick Start
43
+
44
+ ```bash
45
+ cd server
46
+ npm install
47
+ npm run build
48
+
49
+ # Copy config template
50
+ cp config/config.example.json config/config.json
51
+ # Edit config.json with your Yuque API token
52
+
53
+ # Run
54
+ npm start # stdio mode
55
+ npm run dev:http # HTTP SSE mode (http://localhost:3099)
56
+ ```
57
+
58
+ > **Note**: `npm run dev:http` uses `tsx` for hot-reload during development.
59
+
60
+ ## Tool Overview
61
+
62
+ | Domain | Tools | Highlights |
63
+ |--------|-------|------------|
64
+ | **doc** | 14 | CRUD, versions, diff, batch get, import URL/file, cross-book copy, export |
65
+ | **repo** | 8 | CRUD, batch get, cross-book copy, full export (TOC-structure + INDEX/GRAPH) |
66
+ | **toc** | 3 | Get, update, batch update (createTitle/appendNode/removeNode/moveNode) |
67
+ | **search** | 2 | General search + RAG-enhanced search |
68
+ | **user** | 3 | User info, heartbeat, group list |
69
+ | **group** | 3 | Member list, role change, delete member |
70
+ | **statistic** | 4 | Group/member/repo/doc statistics |
71
+ | **note** | 4 | CRUD + soft-delete/restore |
72
+ | **recycle** | 3 | List, restore, destroy (Cookie auth) |
73
+ | **upload** | 1 | File upload to Yuque CDN (Cookie auth) |
74
+ | **board** | 3 | Mindmap, flowchart, architecture diagram |
75
+ | **mine** | 2 | Book stacks, editor center (Cookie auth) |
76
+ | **rss** | 3 | Source list, fetch + dedup + save, schedule analysis |
77
+ | **crawler** | 4 | Fetch, CSS extract, dedup save, schedule analysis |
78
+ | **kv** | 4 | Get, set, delete, list — incremental sharding, 250KB/doc limit |
79
+ | **Total** | **61** | |
80
+
81
+ See [SKILL.md](SKILL.md) or [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills) for full tool documentation.
82
+
83
+ ## vs Official
84
+
85
+ | Feature | Official yuque-mcp-server | yuque-ai-mcp |
86
+ |---------|--------------------------|--------------|
87
+ | Tools | 19 | **61** |
88
+ | Granularity | Coarse | **Fine-grained** (1 tool / endpoint) |
89
+ | Group, Recycle, Upload, Statistics | ❌ | ✅ |
90
+ | Versions, Diff, Cross-book Copy | ❌ | ✅ |
91
+ | Transport | stdio only | **stdio + HTTP SSE** |
92
+ | Config | Env var | **config.json** (token + cookie) |
93
+ | Skill Layer | ❌ | ✅ 61 guides |
94
+
95
+ ## Architecture
96
+
97
+ ```
98
+ server/src/
99
+ ├── common/ # Shared: config, errors, types, format, validate,
100
+ │ # api-client, web-request, register-tools, copy/export/schedule common,
101
+ │ # repo-capacity (auto-expand), toc-cache (24h TTL), text-utils
102
+ ├── user/ search/ group/ doc/ toc/ repo/ statistic/
103
+ ├── note/ recycle/ upload/ board/ rss/ crawler/ mine/ kv/
104
+ ├── index.ts # stdio entry
105
+ └── http.ts # HTTP SSE entry (port 3099)
106
+ ```
107
+
108
+ ## Configuration
109
+
110
+ ```json
111
+ {
112
+ "token": "Your Yuque API Token",
113
+ "api_base": "https://www.yuque.com/api/v2",
114
+ "cookie": "Optional, for recycle/upload features",
115
+ "ctoken": "Optional, extracted from Cookie",
116
+ "kv": { "enabled": true },
117
+ "rss": {
118
+ "enabled": true,
119
+ "sources": {
120
+ "cnblogs": {
121
+ "name": "博客园",
122
+ "slug_pattern": "/p/(\\d+)",
123
+ "feeds": {
124
+ "sitehome": { "label": "首页", "url": "https://feed.cnblogs.com/blog/sitehome/rss" }
125
+ }
126
+ }
127
+ },
128
+ "namespaces": {
129
+ "cnblogs": {
130
+ "book_id": [80197497],
131
+ "kv_slugs": ["80197550/274164064"],
132
+ "schedule_slugs": []
133
+ }
134
+ }
135
+ },
136
+ "crawler": {
137
+ "enabled": true,
138
+ "namespaces": {
139
+ "my-source": {
140
+ "book_id": [80197497],
141
+ "kv_slugs": ["80197550/274164064"],
142
+ "schedule_slugs": []
143
+ }
144
+ }
145
+ }
146
+ }
147
+ ```
148
+
149
+ - `book_id`: Target repo ID array — last element is the active repo. Auto-expands when full (5000 docs).
150
+ - `kv_slugs`: KV dedup shard docs (`{book_id}/{doc_id}` format)
151
+ - `schedule_slugs`: Schedule config docs
152
+
153
+ ## Error Handling
154
+
155
+ Unified error handling with structured responses (HTTP status + message + response summary). All tools share the same error pipeline.
156
+
157
+ Key errors:
158
+ - `book_full` — Auto-expands by creating a new repo and appending to the `book_id` array
159
+ - `401` / `403` — Token/permission issues
160
+ - `429` — Rate limit with automatic retry
161
+
162
+ See [references/api/errors.md](references/api/errors.md) for the full error code reference.
163
+
164
+ ## Contributing
165
+
166
+ ```bash
167
+ git clone https://github.com/yehuoshun/yuque-ai-mcp.git
168
+ cd yuque-ai-mcp/server
169
+ npm install
170
+ npm run build
171
+
172
+ # New tool checklist:
173
+ # 1. Create server/src/{domain}/{tool}.ts
174
+ # 2. Export in {domain}/index.ts + append to tools array
175
+ # 3. npx tsc
176
+ # 4. Restart HTTP server + curl health
177
+ # 5. Sync yuque-ai-skills
178
+ # 6. Update README
179
+ ```
180
+
181
+ Both [yuque-ai-mcp](https://github.com/yehuoshun/yuque-ai-mcp) and [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills) are kept in sync.
182
+
183
+ ## Tech Stack
184
+
185
+ - TypeScript + Node.js
186
+ - @modelcontextprotocol/sdk v1.x
187
+ - Zod (validation)
188
+ - Yuque OpenAPI v2 / Web API
189
+
190
+ ## License
191
+
192
+ MIT
package/README_CN.md ADDED
@@ -0,0 +1,191 @@
1
+ <p align="center">
2
+ <h1 align="center">yuque-ai-mcp</h1>
3
+ <p align="center">
4
+ <b>61 个细粒度 MCP 工具,覆盖语雀 OpenAPI 全部能力</b>
5
+ </p>
6
+ </p>
7
+
8
+ <p align="center">
9
+ <a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/版本-2.7.4-blue" alt="version" /></a>
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/许可-MIT-green" alt="license" /></a>
11
+ <a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-61%20指导-orange" alt="skills" /></a>
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="README.md">English</a>
16
+ </p>
17
+
18
+ ---
19
+
20
+ 基于 [Model Context Protocol](https://modelcontextprotocol.io/) 的语雀全功能 MCP Server。61 个工具,15 个域——每个语雀 OpenAPI 端点一个专用工具。
21
+
22
+ ## 为什么选这个
23
+
24
+ - **19 → 61 工具** — 比官方 [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server) 多 3 倍覆盖
25
+ - **双传输模式** — stdio + HTTP SSE,共享注册中心,修改无需重启
26
+ - **模块化架构** — 15 个域,barrel export,唯一注册中心
27
+ - **完整 API 覆盖** — 团队、回收站、上传、统计、版本、画板——补全官方缺失
28
+ - **[Skill 层](https://github.com/yehuoshun/yuque-ai-skills)** — 61 个 AI Agent 使用指导
29
+
30
+ ## 目录
31
+
32
+ - [快速开始](#快速开始)
33
+ - [工具概览](#工具概览)
34
+ - [与官方对比](#与官方对比)
35
+ - [架构](#架构)
36
+ - [配置](#配置)
37
+ - [错误处理](#错误处理)
38
+ - [贡献](#贡献)
39
+ - [许可](#许可)
40
+
41
+ ## 快速开始
42
+
43
+ ```bash
44
+ cd server
45
+ npm install
46
+ npm run build
47
+
48
+ # 复制配置模板
49
+ cp config/config.example.json config/config.json
50
+ # 编辑 config.json 填入你的语雀 API Token
51
+
52
+ # 运行
53
+ npm start # stdio 模式
54
+ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
55
+ ```
56
+
57
+ > 开发时用 `npm run dev:http` 启动 `tsx` 热重载。
58
+
59
+ ## 工具概览
60
+
61
+ | 域 | 工具数 | 亮点 |
62
+ |--------|-------|------------|
63
+ | **doc** | 14 | CRUD、版本管理、Diff、批量获取、URL/文件导入、跨库复制、导出 |
64
+ | **repo** | 8 | CRUD、批量获取、跨库复制、全量导出(TOC 结构 + INDEX/GRAPH) |
65
+ | **toc** | 3 | 获取、更新、批量更新(createTitle/appendNode/removeNode/moveNode) |
66
+ | **search** | 2 | 通用搜索 + RAG 增强搜索 |
67
+ | **user** | 3 | 用户信息、心跳、团队列表 |
68
+ | **group** | 3 | 成员列表、角色变更、删除成员 |
69
+ | **statistic** | 4 | 团队/成员/知识库/文档统计 |
70
+ | **note** | 4 | CRUD + 软删除/恢复 |
71
+ | **recycle** | 3 | 列表、恢复、彻底删除(Cookie 认证) |
72
+ | **upload** | 1 | 文件上传到语雀 CDN(Cookie 认证) |
73
+ | **board** | 3 | 思维导图、流程图、架构图 |
74
+ | **mine** | 2 | 书架列表、编辑中心(Cookie 认证) |
75
+ | **rss** | 3 | 数据源列表、抓取+去重+写入、定时策略分析 |
76
+ | **crawler** | 4 | 抓取、CSS 提取、去重写入、定时策略分析 |
77
+ | **kv** | 4 | 增删查列——增量分片,单文档 250KB 上限 |
78
+ | **合计** | **61** | |
79
+
80
+ 完整工具文档见 [SKILL.md](SKILL.md) 或 [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills)。
81
+
82
+ ## 与官方对比
83
+
84
+ | 功能 | 官方 yuque-mcp-server | yuque-ai-mcp |
85
+ |---------|--------------------------|--------------|
86
+ | 工具数 | 19 | **61** |
87
+ | 粒度 | 粗粒度 | **细粒度**(1 端点 = 1 工具) |
88
+ | 团队、回收站、上传、统计 | ❌ | ✅ |
89
+ | 版本、Diff、跨库复制 | ❌ | ✅ |
90
+ | 传输模式 | 仅 stdio | **stdio + HTTP SSE** |
91
+ | 配置 | 环境变量 | **config.json**(token + cookie) |
92
+ | Skill 层 | ❌ | ✅ 61 指导 |
93
+
94
+ ## 架构
95
+
96
+ ```
97
+ server/src/
98
+ ├── common/ # 公共:config, errors, types, format, validate,
99
+ │ # api-client, web-request, register-tools, copy/export/schedule,
100
+ │ # repo-capacity(自动扩容), toc-cache(24h TTL), text-utils
101
+ ├── user/ search/ group/ doc/ toc/ repo/ statistic/
102
+ ├── note/ recycle/ upload/ board/ rss/ crawler/ mine/ kv/
103
+ ├── index.ts # stdio 入口
104
+ └── http.ts # HTTP SSE 入口(端口 3099)
105
+ ```
106
+
107
+ ## 配置
108
+
109
+ ```json
110
+ {
111
+ "token": "你的语雀 API Token",
112
+ "api_base": "https://www.yuque.com/api/v2",
113
+ "cookie": "可选,回收站/上传功能需要",
114
+ "ctoken": "可选,从 Cookie 中提取",
115
+ "kv": { "enabled": true },
116
+ "rss": {
117
+ "enabled": true,
118
+ "sources": {
119
+ "cnblogs": {
120
+ "name": "博客园",
121
+ "slug_pattern": "/p/(\\d+)",
122
+ "feeds": {
123
+ "sitehome": { "label": "首页", "url": "https://feed.cnblogs.com/blog/sitehome/rss" }
124
+ }
125
+ }
126
+ },
127
+ "namespaces": {
128
+ "cnblogs": {
129
+ "book_id": [80197497],
130
+ "kv_slugs": ["80197550/274164064"],
131
+ "schedule_slugs": []
132
+ }
133
+ }
134
+ },
135
+ "crawler": {
136
+ "enabled": true,
137
+ "namespaces": {
138
+ "my-source": {
139
+ "book_id": [80197497],
140
+ "kv_slugs": ["80197550/274164064"],
141
+ "schedule_slugs": []
142
+ }
143
+ }
144
+ }
145
+ }
146
+ ```
147
+
148
+ - `book_id`:目标知识库 ID 数组,最后一个为当前活跃仓库。满 5000 篇自动扩容追加。
149
+ - `kv_slugs`:KV 去重分片文档(`{book_id}/{doc_id}` 格式)
150
+ - `schedule_slugs`:定时策略配置文档
151
+
152
+ ## 错误处理
153
+
154
+ 统一错误处理,返回结构化错误(HTTP 状态码 + 消息 + 响应摘要)。所有工具共用同一错误管道。
155
+
156
+ 关键错误:
157
+ - `book_full` — 知识库超 5000 篇,自动创建新仓库并追加到 `book_id` 数组
158
+ - `401` / `403` — Token/权限问题
159
+ - `429` — 限流,自动重试
160
+
161
+ 完整错误码见 [references/api/errors.md](references/api/errors.md)。
162
+
163
+ ## 贡献
164
+
165
+ ```bash
166
+ git clone https://github.com/yehuoshun/yuque-ai-mcp.git
167
+ cd yuque-ai-mcp/server
168
+ npm install
169
+ npm run build
170
+
171
+ # 新增工具清单:
172
+ # 1. 创建 server/src/{域}/{工具}.ts
173
+ # 2. 在 {域}/index.ts 中 export + 追加到工具数组
174
+ # 3. npx tsc
175
+ # 4. 重启 HTTP Server + curl health
176
+ # 5. 同步 yuque-ai-skills
177
+ # 6. 更新 README
178
+ ```
179
+
180
+ [yuque-ai-mcp](https://github.com/yehuoshun/yuque-ai-mcp) 和 [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills) 保持同步更新。
181
+
182
+ ## 技术栈
183
+
184
+ - TypeScript + Node.js
185
+ - @modelcontextprotocol/sdk v1.x
186
+ - Zod(参数校验)
187
+ - 语雀 OpenAPI v2 / Web API
188
+
189
+ ## 许可
190
+
191
+ MIT
package/SKILL.md ADDED
@@ -0,0 +1,180 @@
1
+ # yuque-ai-mcp
2
+
3
+ 语雀全功能 MCP Server,61 个工具 / 15 个域。当用户提到「语雀」「yuque」「知识库」「文档」「团队」等关键词时触发。
4
+
5
+ ## 触发场景
6
+
7
+ - 语雀知识库管理(创建、删除、列表、复制、导出)
8
+ - 文档操作(读写、搜索、导入导出、版本对比)
9
+ - 用户/团队信息查询
10
+ - 回收站管理
11
+ - 目录 TOC 导航
12
+ - 画板(思维导图/流程图)
13
+ - 统计数据
14
+ - 小记
15
+ - RSS 抓取
16
+ - 网页爬虫
17
+ - KV 存储
18
+
19
+ ## API 端点索引
20
+
21
+ ### user(3 工具)
22
+ | 工具 | 说明 |
23
+ |------|------|
24
+ | `yuque_hello` | 心跳检测,验证 Token 有效性 |
25
+ | `yuque_get_user` | 获取当前 Token 的用户详情 |
26
+ | `yuque_get_user_groups` | 获取用户所属的团队列表 |
27
+
28
+ ### search(2 工具)
29
+ | 工具 | 说明 |
30
+ |------|------|
31
+ | `yuque_search` | 通用搜索文档/知识库 |
32
+ | `yuque_rag_search` | RAG 检索增强搜索 + 自动获取文档内容 |
33
+
34
+ ### group(3 工具)
35
+ | 工具 | 说明 |
36
+ |------|------|
37
+ | `yuque_get_group_users` | 获取团队成员列表 |
38
+ | `yuque_update_group_user` | 变更团队成员角色 |
39
+ | `yuque_delete_group_user` | 删除团队成员 |
40
+
41
+ ### doc(14 工具)
42
+ | 工具 | 说明 |
43
+ |------|------|
44
+ | `yuque_list_docs` | 获取知识库文档列表 |
45
+ | `yuque_create_doc` | 创建文档 |
46
+ | `yuque_get_doc` | 获取文档详情(支持 ID 或 slug) |
47
+ | `yuque_update_doc` | 更新文档 |
48
+ | `yuque_delete_doc` | 删除文档 |
49
+ | `yuque_batch_get_docs` | 批量获取文档详情(max 20) |
50
+ | `yuque_get_doc_versions` | 获取文档历史版本列表 |
51
+ | `yuque_get_doc_version_detail` | 获取文档历史版本详情 |
52
+ | `yuque_diff_doc_versions` | 对比两个版本的行级差异 |
53
+ | `yuque_copy_doc` | 单文档跨库复制 |
54
+ | `yuque_export_doc` | 导出单篇文档为 Markdown(含图片下载) |
55
+ | `yuque_import_url` | 从网页 URL 导入文档 |
56
+ | `yuque_import_file` | 从本地文件导入文档(direct/upload_assets/embed_assets) |
57
+ | `yuque_embed_url` | 生成文档嵌入阅读器 URL |
58
+
59
+ ### toc(3 工具)
60
+ | 工具 | 说明 |
61
+ |------|------|
62
+ | `yuque_get_toc` | 获取知识库目录 |
63
+ | `yuque_update_toc` | 更新知识库目录 |
64
+ | `yuque_batch_update_toc` | 批量更新目录(Agent 出计划,Tool 执行) |
65
+
66
+ ### repo(8 工具)
67
+ | 工具 | 说明 |
68
+ |------|------|
69
+ | `yuque_list_repos` | 获取知识库列表(用户/团队) |
70
+ | `yuque_create_repo` | 创建知识库 |
71
+ | `yuque_get_repo` | 获取知识库详情 |
72
+ | `yuque_update_repo` | 更新知识库 |
73
+ | `yuque_delete_repo` | 删除知识库 |
74
+ | `yuque_batch_get_repos` | 批量获取知识库详情(max 20) |
75
+ | `yuque_copy_repo` | 批量跨库复制(LLM 分类 + 目录重建) |
76
+ | `yuque_export_repo` | 批量导出知识库为 Markdown(按 TOC 目录结构) |
77
+
78
+ ### statistic(4 工具)
79
+ | 工具 | 说明 |
80
+ |------|------|
81
+ | `yuque_get_group_statistics` | 获取团队汇总统计数据 |
82
+ | `yuque_get_member_statistics` | 获取团队成员统计数据 |
83
+ | `yuque_get_book_statistics` | 获取团队知识库统计数据 |
84
+ | `yuque_get_doc_statistics` | 获取团队文档统计数据 |
85
+
86
+ ### note(4 工具)
87
+ | 工具 | 说明 |
88
+ |------|------|
89
+ | `yuque_list_notes` | 获取小记列表 |
90
+ | `yuque_get_note` | 获取小记详情 |
91
+ | `yuque_create_note` | 创建小记 |
92
+ | `yuque_update_note` | 更新小记 |
93
+
94
+ ### recycle(3 工具)
95
+ | 工具 | 说明 |
96
+ |------|------|
97
+ | `yuque_list_recycles` | 列出回收站项目 |
98
+ | `yuque_restore_recycle` | 恢复回收站项目 |
99
+ | `yuque_destroy_recycle` | 彻底删除回收站项目 |
100
+
101
+ ### upload(1 工具)
102
+ | 工具 | 说明 |
103
+ |------|------|
104
+ | `yuque_upload_attachment` | 上传文件到语雀 CDN |
105
+
106
+ ### board(3 工具)
107
+ | 工具 | 说明 |
108
+ |------|------|
109
+ | `yuque_get_board` | 获取文档中的画板资源 |
110
+ | `yuque_create_board` | 在文档中创建画板资源 |
111
+ | `yuque_update_board` | 更新文档中的画板资源 |
112
+
113
+ ### rss(3 工具)
114
+ | 工具 | 说明 |
115
+ |------|------|
116
+ | `yuque_rss_list_sources` | 列出所有可用 RSS 数据源及 feed 类型 |
117
+ | `yuque_rss_fetch` | 抓取 RSS/Atom Feed,解析后去重写入语雀 |
118
+ | `yuque_rss_schedule` | 分析更新频率,生成推荐抓取时间并写入配置 |
119
+
120
+ ### crawler(4 工具)
121
+ | 工具 | 说明 |
122
+ |------|------|
123
+ | `yuque_crawl_fetch` | 抓取网页原始 HTML |
124
+ | `yuque_crawl_extract` | CSS 选择器从 HTML 提取内容 |
125
+ | `yuque_crawl_save` | 去重 + 写入语雀(接收 Agent 清洗后的内容) |
126
+ | `yuque_crawl_schedule` | 分析爬虫抓取频率,生成推荐抓取时间 |
127
+
128
+ > **清洗规范**:Agent 负责 fetch → 提取正文 → HTML→Markdown → 传干净 body 给 `crawl_save`。详见 `references/api/crawler_api.md`。
129
+
130
+ ### mine(2 工具)
131
+ | 工具 | 说明 |
132
+ |------|------|
133
+ | `yuque_get_book_stacks` | 获取知识库分组(书架)列表 |
134
+ | `yuque_get_editor_center` | 获取个人编辑中心全景数据 |
135
+
136
+ ### kv(4 工具)
137
+ | 工具 | 说明 |
138
+ |------|------|
139
+ | `yuque_kv_get` | 读取 KV 命名空间的完整 JSON map(分片合并) |
140
+ | `yuque_kv_set` | 增量设置 key-value,超 250KB 自动分片 |
141
+ | `yuque_kv_delete` | 遍历分片查找并删除 key |
142
+ | `yuque_kv_list` | 列出已配置的 KV 命名空间 |
143
+
144
+ ## 错误码
145
+
146
+ 所有工具共用统一错误处理。API 失败时返回结构化错误信息(含状态码、中文描述、响应摘要)。
147
+
148
+ 完整错误码及处理策略见 `references/api/errors.md`。
149
+
150
+ ## 配置
151
+
152
+ ```json
153
+ {
154
+ "token": "语雀 API Token",
155
+ "api_base": "https://www.yuque.com/api/v2",
156
+ "cookie": "可选,回收站/上传/mine 功能需要",
157
+ "ctoken": "可选,从 Cookie 中提取",
158
+ "kv": { "enabled": true },
159
+ "rss": {
160
+ "enabled": true,
161
+ "namespaces": {
162
+ "cnblogs": {
163
+ "book_id": 80197497,
164
+ "kv_slugs": ["80197550/274164064"],
165
+ "schedule_slugs": ["80278170/274357940"]
166
+ }
167
+ }
168
+ },
169
+ "crawler": {
170
+ "enabled": true,
171
+ "namespaces": {
172
+ "cnblogs": {
173
+ "book_id": 80197497,
174
+ "kv_slugs": ["80197550/274164064"],
175
+ "schedule_slugs": ["80278170/274358465"]
176
+ }
177
+ }
178
+ }
179
+ }
180
+ ```
@@ -5,14 +5,38 @@
5
5
  *
6
6
  * slug 格式:`{book_id}/{doc_id}`,用 / 分割解析。
7
7
  * kv_slugs / schedule_slugs 均为数组,支持多文档。
8
+ *
9
+ * RSS 源定义在 config.json 的 rss.sources 中,不硬编码在代码里。
8
10
  */
9
11
  interface NamespaceConfig {
10
12
  book_id: number[];
11
13
  kv_slugs?: string[];
12
14
  schedule_slugs?: string[];
13
15
  }
16
+ /** RSS Feed 定义(config.json 中配置) */
17
+ export interface RssFeedDef {
18
+ label: string;
19
+ description?: string;
20
+ url?: string;
21
+ url_template?: string;
22
+ params_schema?: Record<string, {
23
+ type: "string" | "number";
24
+ description: string;
25
+ required?: boolean;
26
+ default?: string | number;
27
+ }>;
28
+ }
29
+ /** RSS 源定义(config.json 中配置) */
30
+ export interface RssSourceDef {
31
+ name: string;
32
+ description?: string;
33
+ feeds: Record<string, RssFeedDef>;
34
+ /** 从文章链接提取站点文章 ID 的正则,capture group 1 即为 slug。不配则 fallback 到 md5 */
35
+ slug_pattern?: string;
36
+ }
14
37
  interface RssConfig {
15
38
  enabled: boolean;
39
+ sources?: Record<string, RssSourceDef>;
16
40
  namespaces?: Record<string, NamespaceConfig>;
17
41
  }
18
42
  interface KvConfig {
@@ -32,6 +56,8 @@ interface Config {
32
56
  crawler?: CrawlerConfig;
33
57
  }
34
58
  export declare function loadConfig(): Config;
59
+ /** 从 config 加载 RSS 源定义 */
60
+ export declare function loadRssSources(): Record<string, RssSourceDef>;
35
61
  /** 持久化 config 到文件 */
36
62
  export declare function saveConfig(): void;
37
63
  /** 解析 slug:`{book_id}/{doc_id}` → { bookId, docId } */
@@ -5,6 +5,8 @@
5
5
  *
6
6
  * slug 格式:`{book_id}/{doc_id}`,用 / 分割解析。
7
7
  * kv_slugs / schedule_slugs 均为数组,支持多文档。
8
+ *
9
+ * RSS 源定义在 config.json 的 rss.sources 中,不硬编码在代码里。
8
10
  */
9
11
  import { readFileSync, writeFileSync, existsSync } from "fs";
10
12
  import { resolve, dirname } from "path";
@@ -13,24 +15,19 @@ import { homedir } from "os";
13
15
  const __dirname = dirname(fileURLToPath(import.meta.url));
14
16
  /** 查找 config 文件:--config 参数 → cwd → ~/.yuque-mcp → 开发路径 */
15
17
  function findConfigPath() {
16
- // 1. 命令行参数 --config /path/to/config.json
17
18
  const cliArg = process.argv.findIndex(a => a === "--config" || a === "-c");
18
19
  if (cliArg !== -1 && process.argv[cliArg + 1]) {
19
20
  return process.argv[cliArg + 1];
20
21
  }
21
- // 2. 当前工作目录
22
22
  const cwdPath = resolve(process.cwd(), "yuque-config.json");
23
23
  if (existsSync(cwdPath))
24
24
  return cwdPath;
25
- // 3. 用户目录
26
25
  const homePath = resolve(homedir(), ".yuque-mcp", "config.json");
27
26
  if (existsSync(homePath))
28
27
  return homePath;
29
- // 4. 开发模式(相对 dist/ 的路径)
30
28
  const devPath = resolve(__dirname, "../../../config/config.json");
31
29
  if (existsSync(devPath))
32
30
  return devPath;
33
- // 5. 包内默认
34
31
  return resolve(homedir(), ".yuque-mcp", "config.json");
35
32
  }
36
33
  let _config = null;
@@ -52,6 +49,10 @@ export function loadConfig() {
52
49
  _config.api_base = _config.api_base || "https://www.yuque.com/api/v2";
53
50
  return _config;
54
51
  }
52
+ /** 从 config 加载 RSS 源定义 */
53
+ export function loadRssSources() {
54
+ return loadConfig().rss?.sources ?? {};
55
+ }
55
56
  /** 持久化 config 到文件 */
56
57
  export function saveConfig() {
57
58
  if (!_config)
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,2DAA2D;AAC3D,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3E,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAqDD,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,oGAAoG;YACpG,sGAAsG,CACvG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,kBAAkB,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,yGAAyG,CAAC,CAAC;IAC7H,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,8BAA8B,CAAC;IACtE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IACxD,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI;SACf,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAClE,CAAC"}
@@ -36,7 +36,7 @@ export const crawlSave = {
36
36
  url: { type: "string", description: "Source URL (for dedup slug + source footer)" },
37
37
  title: { type: "string", description: "Document title (required)" },
38
38
  body: { type: "string", description: "HTML body content to save (required)" },
39
- source: { type: "string", description: "Source key for repo routing and KV namespace, e.g. 'cnblogs'" },
39
+ source: { type: "string", description: "Source key for repo routing and KV namespace. Matches config.json crawler.namespaces.{source}.book_id." },
40
40
  target_repo: { type: "string", description: "Target repo ID. Falls back to config crawler.namespaces.{source}.book_id." },
41
41
  kv_namespace: { type: "string", description: "KV namespace for dedup. Defaults to source if set, otherwise 'crawler'." },
42
42
  format: { type: "string", description: "Content format: html (default) | markdown | lake" },
@@ -1 +1 @@
1
- {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/crawler/save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/crawler/save.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ export const crawlSchedule = {
36
36
  inputSchema: {
37
37
  type: "object",
38
38
  properties: {
39
- source: { type: "string", description: "Source key, e.g. 'cnblogs'." },
39
+ source: { type: "string", description: "Source key. Matches config.json crawler.namespaces.{source}.book_id." },
40
40
  kv_namespace: { type: "string", description: "KV namespace for dedup data. Defaults to source." },
41
41
  mode: { type: "string", description: "Mode: 'analyze' (analyze + write back, default) | 'dry_run' (analyze only, no write)" },
42
42
  raw: { type: "boolean", description: "Return raw full JSON (default false)" },
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/crawler/schedule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEjD,oCAAoC;AAEpC,SAAS,sBAAsB,CAC7B,MAAc,EACd,SAAwB,EACxB,SAAiB,EACjB,IAA6C,EAC7C,QAAgB,EAChB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,aAAa;AAEb,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,gKAAgK;IAE7K,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACtE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;YACjG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sFAAsF,EAAE;YAC7H,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;SAC9E;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAAgB,CAAC;QACtC,MAAM,WAAW,GAAI,IAAI,EAAE,YAAuB,IAAI,MAAM,CAAC;QAC7D,MAAM,IAAI,GAAI,IAAI,EAAE,IAAe,IAAI,SAAS,CAAC;QACjD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU;yBAC1C,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAE/C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,SAAS;4BAChB,OAAO,EAAE,iBAAiB,WAAW,SAAS;4BAC9C,IAAI,EAAE,mCAAmC;yBAC1C,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY;4BAC/D,OAAO,EAAE,0BAA0B;4BACnC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;yBACjE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACf,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE/C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;QAExE,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAC9E,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACxF,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3D,IAAI,WAA0E,CAAC;QAC/E,IAAI,YAAY,KAAK,eAAe,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxG,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9F,WAAW,GAAG;gBACZ,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE;4BACR,IAAI,EAAE,IAAI,CAAC,KAAK;4BAChB,YAAY,EAAE,IAAI,CAAC,YAAY;4BAC/B,SAAS;4BACT,SAAS;4BACT,aAAa,EAAE,QAAQ;4BACvB,cAAc,EAAE,SAAS;4BACzB,cAAc,EAAE,SAAS;4BACzB,aAAa,EAAE,YAAY;yBAC5B;wBACD,WAAW;qBACZ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/crawler/schedule.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * slug 格式:`{book_id}/{doc_id}`,config.json 中存为数组。
6
6
  *
7
7
  * config 结构:
8
- * { "rss": { "namespaces": { "cnblogs": { "book_id": ..., "kv_slugs": ["80197550/274164064"], ... } } } }
8
+ * { "rss": { "namespaces": { "my-source": { "book_id": ..., "kv_slugs": ["12345/67890"], ... } } } }
9
9
  *
10
10
  * set 流程:取最后一个 slug → GET 读 body → 判断大小 → PUT 更新或 POST 创建新分片 → push 新 slug 到 config
11
11
  * get 流程:遍历 kv_slugs 数组 → 逐个读 → 合并返回
package/dist/kv/common.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * slug 格式:`{book_id}/{doc_id}`,config.json 中存为数组。
6
6
  *
7
7
  * config 结构:
8
- * { "rss": { "namespaces": { "cnblogs": { "book_id": ..., "kv_slugs": ["80197550/274164064"], ... } } } }
8
+ * { "rss": { "namespaces": { "my-source": { "book_id": ..., "kv_slugs": ["12345/67890"], ... } } } }
9
9
  *
10
10
  * set 流程:取最后一个 slug → GET 读 body → 判断大小 → PUT 更新或 POST 创建新分片 → push 新 slug 到 config
11
11
  * get 流程:遍历 kv_slugs 数组 → 逐个读 → 合并返回
package/dist/kv/delete.js CHANGED
@@ -12,7 +12,7 @@ export const kvDelete = {
12
12
  type: "object",
13
13
  properties: {
14
14
  domain: { type: "string", description: "Domain: 'rss' or 'crawler'. Locates kv_slugs in config." },
15
- namespace: { type: "string", description: "KV namespace, e.g. 'cnblogs'." },
15
+ namespace: { type: "string", description: "KV namespace key. Matches config.json rss/crawler namespaces." },
16
16
  key: { type: "string", description: "Key to delete" },
17
17
  raw: { type: "boolean", description: "Return raw full JSON (default false, returns summary)" },
18
18
  },
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/kv/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,wGAAwG;IAErH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAClG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;YAC3E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;YACrD,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;SAC/F;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;KACzC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAC5C,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CACjC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAA2B,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,kBAAkB;4BACzB,OAAO,EAAE,MAAM,CAAC,KAAK;yBACtB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,SAAS;wBACT,GAAG;wBACH,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/kv/delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,wGAAwG;IAErH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAClG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YAC3G,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;YACrD,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;SAC/F;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;KACzC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAC5C,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CACjC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAA2B,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,kBAAkB;4BACzB,OAAO,EAAE,MAAM,CAAC,KAAK;yBACtB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,SAAS;wBACT,GAAG;wBACH,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
package/dist/kv/get.js CHANGED
@@ -13,7 +13,7 @@ export const kvGet = {
13
13
  type: "object",
14
14
  properties: {
15
15
  domain: { type: "string", description: "Domain: 'rss' or 'crawler'. Locates kv_slugs in config." },
16
- namespace: { type: "string", description: "KV namespace, e.g. 'cnblogs'." },
16
+ namespace: { type: "string", description: "KV namespace key. Matches config.json rss/crawler namespaces." },
17
17
  raw: { type: "boolean", description: "Return raw full JSON (default false, returns summary)" },
18
18
  },
19
19
  required: ["domain", "namespace"],
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/kv/get.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,uHAAuH;IAEpI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAClG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;YAC3E,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;SAC/F;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;KAClC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAC7C,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAA2B,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;QAE5C,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,cAAc,SAAS,oCAAoC,MAAM,eAAe,SAAS,MAAM;yBACzG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,SAAS;wBACT,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;wBAC9B,IAAI,EAAE,GAAG;qBACV,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/kv/get.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,uHAAuH;IAEpI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAClG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YAC3G,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;SAC/F;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;KAClC;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAC7C,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAA2B,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;QAE5C,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,cAAc,SAAS,oCAAoC,MAAM,eAAe,SAAS,MAAM;yBACzG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,SAAS;wBACT,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;wBAC9B,IAAI,EAAE,GAAG;qBACV,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
package/dist/kv/set.js CHANGED
@@ -12,7 +12,7 @@ export const kvSet = {
12
12
  type: "object",
13
13
  properties: {
14
14
  domain: { type: "string", description: "Domain: 'rss' or 'crawler'. Locates kv_slugs in config." },
15
- namespace: { type: "string", description: "KV namespace, e.g. 'cnblogs'." },
15
+ namespace: { type: "string", description: "KV namespace key. Matches config.json rss/crawler namespaces." },
16
16
  key: { type: "string", description: "Key to set" },
17
17
  value: { type: "string", description: "Value to store" },
18
18
  raw: { type: "boolean", description: "Return raw full JSON (default false, returns summary)" },
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/kv/set.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,8GAA8G;IAE3H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAClG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;YAC3E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;YAClD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;YACxD,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;SAC/F;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC;KAClD;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAC5C,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAChC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CACrC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAA2B,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAe,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,eAAe;4BACtB,OAAO,EAAE,MAAM,CAAC,KAAK;yBACtB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,SAAS;wBACT,GAAG;wBACH,KAAK;wBACL,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/kv/set.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,8GAA8G;IAE3H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YAClG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YAC3G,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;YAClD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;YACxD,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;SAC/F;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC;KAClD;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAC5C,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAChC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CACrC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAA2B,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAe,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,eAAe;4BACtB,OAAO,EAAE,MAAM,CAAC,KAAK;yBACtB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,SAAS;wBACT,GAAG;wBACH,KAAK;wBACL,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * rss/dedup — slug 生成逻辑
3
3
  *
4
4
  * slug 生成优先级:
5
- * 1. sources.ts 中的 slugResolver(link) 提取站点文章 ID
5
+ * 1. config.json 中 rss.sources.{source}.slug_pattern正则提取站点文章 ID
6
6
  * 2. fallback: md5(link).slice(0, 12)
7
7
  */
8
8
  /** 生成去重 slug */
package/dist/rss/dedup.js CHANGED
@@ -2,20 +2,23 @@
2
2
  * rss/dedup — slug 生成逻辑
3
3
  *
4
4
  * slug 生成优先级:
5
- * 1. sources.ts 中的 slugResolver(link) 提取站点文章 ID
5
+ * 1. config.json 中 rss.sources.{source}.slug_pattern正则提取站点文章 ID
6
6
  * 2. fallback: md5(link).slice(0, 12)
7
7
  */
8
8
  import { createHash } from "crypto";
9
- import { RSS_SOURCES } from "./sources.js";
9
+ import { getRssSources } from "./sources.js";
10
10
  /** 生成去重 slug */
11
11
  export function buildSlug(source, link) {
12
- const src = RSS_SOURCES[source];
13
- if (src?.slugResolver) {
14
- const resolved = src.slugResolver(link);
15
- if (resolved)
16
- return resolved;
12
+ const sources = getRssSources();
13
+ const src = sources[source];
14
+ if (src?.slug_pattern) {
15
+ try {
16
+ const m = link.match(new RegExp(src.slug_pattern));
17
+ if (m?.[1])
18
+ return `${source}-${m[1]}`;
19
+ }
20
+ catch { /* regex 无效则 fallback */ }
17
21
  }
18
- // fallback: md5 前 12 位
19
22
  return createHash("md5").update(link).digest("hex").slice(0, 12);
20
23
  }
21
24
  //# sourceMappingURL=dedup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/rss/dedup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,gBAAgB;AAChB,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,IAAY;IACpD,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IACD,uBAAuB;IACvB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/rss/dedup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,gBAAgB;AAChB,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,IAAY;IACpD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC"}
@@ -7,14 +7,14 @@
7
7
  import { apiPut } from "../common/api-client.js";
8
8
  import { check, requiredString } from "../common/validate.js";
9
9
  import { loadConfig } from "../common/config.js";
10
- import { RSS_SOURCES } from "./sources.js";
10
+ import { getRssSources } from "./sources.js";
11
11
  import { parseFeed } from "./parser.js";
12
12
  import { buildSlug } from "./dedup.js";
13
13
  import { loadKvMap, kvIncrementalSet } from "../kv/common.js";
14
14
  import { createDocWithAutoExpand } from "../common/repo-capacity.js";
15
15
  /** 构建 feed URL */
16
16
  function buildFeedUrl(source, feedType, params) {
17
- const src = RSS_SOURCES[source];
17
+ const src = getRssSources()[source];
18
18
  if (!src)
19
19
  return null;
20
20
  const feed = src.feeds[feedType];
@@ -94,14 +94,14 @@ export const rssFetch = {
94
94
  inputSchema: {
95
95
  type: "object",
96
96
  properties: {
97
- source: { type: "string", description: "Source key, e.g. 'cnblogs'. Use yuque_rss_list_sources to list available sources." },
97
+ source: { type: "string", description: "Source key. Use yuque_rss_list_sources to list available sources." },
98
98
  feed_type: { type: "string", description: "Feed type key, e.g. 'sitehome', 'picked', 'user'. Use yuque_rss_list_sources to see available feed types." },
99
99
  feed_params: { type: "string", description: "Template params for feeds with url_template. JSON string, e.g. '{\"username\":\"hsewr333\"}'" },
100
100
  target_repo: { type: "string", description: "RSS target repo ID. Optional — falls back to config.json rss.namespaces.{source}.book_id." },
101
- kv_namespace: { type: "string", description: "KV namespace for dedup, e.g. 'cnblogs'. Defaults to source key." },
101
+ kv_namespace: { type: "string", description: "KV namespace for dedup. Defaults to source key." },
102
102
  max_items: { type: "number", description: "Max items to fetch and save (default 10, max 50)" },
103
103
  mode: { type: "string", description: "Mode: 'append' (save new docs, default) | 'dry_run' (preview only, no save)" },
104
- title_prefix: { type: "string", description: "Optional prefix for doc titles, e.g. '[博客园] '" },
104
+ title_prefix: { type: "string", description: "Optional prefix for doc titles, e.g. '[SourceName] '" },
105
105
  raw: { type: "boolean", description: "Return raw full JSON (default false, returns summary)" },
106
106
  },
107
107
  required: ["source", "feed_type"],
@@ -129,7 +129,7 @@ export const rssFetch = {
129
129
  const cfg = loadConfig();
130
130
  const enableKv = !!(cfg.kv?.enabled);
131
131
  // 1. 查数据源配置
132
- const src = RSS_SOURCES[source];
132
+ const src = getRssSources()[source];
133
133
  if (!src) {
134
134
  return {
135
135
  content: [{ type: "text", text: JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-feed.js","sourceRoot":"","sources":["../../src/rss/fetch-feed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-feed.js","sourceRoot":"","sources":["../../src/rss/fetch-feed.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,12 @@
4
4
  * 无参数,直接返回 sources.ts 中的配置。
5
5
  * Agent 调用 fetch 前先调这个了解有哪些源可用。
6
6
  */
7
- import { RSS_SOURCES } from "./sources.js";
7
+ import { getRssSources } from "./sources.js";
8
8
  export const rssListSources = {
9
9
  name: "yuque_rss_list_sources",
10
10
  description: "List all available RSS sources and their feed types. Call before yuque_rss_fetch. 详见 references/api/extended_api.md",
11
11
  async handler() {
12
- const sources = Object.entries(RSS_SOURCES).map(([key, src]) => ({
12
+ const sources = Object.entries(getRssSources()).map(([key, src]) => ({
13
13
  key,
14
14
  name: src.name,
15
15
  description: src.description,
@@ -1 +1 @@
1
- {"version":3,"file":"list-sources.js","sourceRoot":"","sources":["../../src/rss/list-sources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,qHAAqH;IAElI,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;gBACjC,MAAM,EAAE,IAAI,CAAC,aAAa;oBACxB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClD,IAAI,EAAE,CAAC;wBACP,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC,CAAC;oBACL,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAClE,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"list-sources.js","sourceRoot":"","sources":["../../src/rss/list-sources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,qHAAqH;IAElI,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACnE,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;gBACjC,MAAM,EAAE,IAAI,CAAC,aAAa;oBACxB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClD,IAAI,EAAE,CAAC;wBACP,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC,CAAC;oBACL,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAClE,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { check, requiredString } from "../common/validate.js";
14
14
  import { loadConfig } from "../common/config.js";
15
- import { RSS_SOURCES } from "./sources.js";
15
+ import { getRssSources } from "./sources.js";
16
16
  import { loadKvMap } from "../kv/common.js";
17
17
  import { classifyBand, parseArticles, countRecentWithAuthors, getScheduleSlugs, findScheduleDoc, upsertScheduleDoc, } from "../common/schedule-common.js";
18
18
  // ── RSS 专用:schedule body 构建 ──
@@ -41,7 +41,7 @@ export const rssSchedule = {
41
41
  inputSchema: {
42
42
  type: "object",
43
43
  properties: {
44
- source: { type: "string", description: "Source key, e.g. 'cnblogs'. Use yuque_rss_list_sources to list available sources." },
44
+ source: { type: "string", description: "Source key. Use yuque_rss_list_sources to list available sources." },
45
45
  kv_namespace: { type: "string", description: "KV namespace for dedup data. Defaults to source key." },
46
46
  mode: { type: "string", description: "Mode: 'analyze' (analyze + write back, default) | 'dry_run' (analyze only, no write)" },
47
47
  raw: { type: "boolean", description: "Return raw full JSON (default false)" },
@@ -57,7 +57,7 @@ export const rssSchedule = {
57
57
  const mode = args?.mode ?? "analyze";
58
58
  const cfg = loadConfig();
59
59
  const enableKv = !!(cfg.kv?.enabled);
60
- const src = RSS_SOURCES[source];
60
+ const src = getRssSources()[source];
61
61
  if (!src) {
62
62
  return {
63
63
  content: [{ type: "text", text: JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/rss/schedule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,gCAAgC;AAEhC,SAAS,oBAAoB,CAC3B,UAAkB,EAClB,KAAa,EACb,MAAc,EACd,IAAY,EACZ,SAAwB,EACxB,SAAiB,EACjB,IAA6C,EAC7C,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,OAAiB;IAEjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,aAAa;AAEb,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,2HAA2H;IAExI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mFAAmF,EAAE;YAC5H,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;YACrG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sFAAsF,EAAE;YAC7H,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;SAC9E;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,EAAE,MAAgB,CAAC;QACtC,MAAM,WAAW,GAAI,IAAI,EAAE,YAAuB,IAAI,MAAM,CAAC;QAC7D,MAAM,IAAI,GAAI,IAAI,EAAE,IAAe,IAAI,SAAS,CAAC;QACjD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,UAAU,MAAM,EAAE;4BAC3B,IAAI,EAAE,mCAAmC;yBAC1C,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,aAAa;4BACpB,OAAO,EAAE,UAAU;4BACnB,IAAI,EAAE,oCAAoC;yBAC3C,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAE/C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK,EAAE,SAAS;4BAChB,OAAO,EAAE,iBAAiB,WAAW,SAAS;4BAC9C,IAAI,EAAE,kCAAkC;yBACzC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,MAAM,EAAE,GAAG,CAAC,IAAI;4BAChB,YAAY,EAAE,WAAW;4BACzB,cAAc,EAAE,YAAY;4BAC5B,OAAO,EAAE,iCAAiC;4BAC1C,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;yBACpF,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACf,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;QAExE,MAAM,QAAQ,GAIT,EAAE,CAAC;QAER,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAChE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAC7F,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;YACtE,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;YACtE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC7D,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAExF,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS;gBACT,SAAS,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBACnD,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,aAAa,EAAE,QAAQ;gBACvB,cAAc,EAAE,SAAS;gBACzB,cAAc,EAAE,SAAS;gBACzB,aAAa,EAAE,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAA2E,EAAE,CAAC;QAChG,IAAI,YAAY,KAAK,eAAe,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3D,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,GAAG,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,oBAAoB,CAC/B,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAC/C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EACtC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,EAC7D,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,cAAc,EACxE,QAAQ,CAAC,aAAa,CACvB,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC7E,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;oBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM;YACpD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM;YACnD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM;YACnD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM;SACxD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM;wBACN,UAAU,EAAE,GAAG,CAAC,IAAI;wBACpB,IAAI,EAAE,YAAY;wBAClB,QAAQ;wBACR,OAAO;wBACP,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;qBACjE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/rss/schedule.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,18 @@
1
1
  /**
2
- * rss/sources — 数据源配置
2
+ * rss/sources — RSS 源类型定义 + 加载器
3
3
  *
4
- * 新增数据源只需在此文件追加一个条目,无需改 tool 代码。
4
+ * 源定义在 config.json 的 rss.sources 中,不硬编码在代码里。
5
+ * 新增数据源只需改 config,无需改代码。
5
6
  */
6
- export interface RssFeed {
7
- label: string;
8
- description?: string;
9
- url?: string;
10
- url_template?: string;
11
- params_schema?: Record<string, ParamDef>;
12
- }
7
+ import { type RssFeedDef, type RssSourceDef } from "../common/config.js";
8
+ export type { RssFeedDef, RssSourceDef };
9
+ export type RssFeed = RssFeedDef;
10
+ export type RssSource = RssSourceDef;
13
11
  export interface ParamDef {
14
12
  type: "string" | "number";
15
13
  description: string;
16
14
  required?: boolean;
17
15
  default?: string | number;
18
16
  }
19
- export interface RssSource {
20
- name: string;
21
- description?: string;
22
- feeds: Record<string, RssFeed>;
23
- /** 从文章链接提取站点文章 ID,生成 slug 用于去重。返回 null 则 fallback 到 md5(link) */
24
- slugResolver?: (link: string) => string | null;
25
- }
26
- export declare const RSS_SOURCES: Record<string, RssSource>;
17
+ /** 获取所有 RSS 源(从 config.json 读取) */
18
+ export declare function getRssSources(): Record<string, RssSourceDef>;
@@ -1,54 +1,12 @@
1
1
  /**
2
- * rss/sources — 数据源配置
2
+ * rss/sources — RSS 源类型定义 + 加载器
3
3
  *
4
- * 新增数据源只需在此文件追加一个条目,无需改 tool 代码。
4
+ * 源定义在 config.json 的 rss.sources 中,不硬编码在代码里。
5
+ * 新增数据源只需改 config,无需改代码。
5
6
  */
6
- export const RSS_SOURCES = {
7
- cnblogs: {
8
- name: "博客园",
9
- description: "开发者的网上家园,技术博客聚合平台",
10
- slugResolver: (link) => {
11
- const m = link.match(/\/p\/(\d+)/);
12
- return m ? `cnblogs-${m[1]}` : null;
13
- },
14
- feeds: {
15
- sitehome: {
16
- label: "首页最新",
17
- description: "博客园首页最新发布的文章",
18
- url: "https://feed.cnblogs.com/blog/sitehome/rss",
19
- },
20
- picked: {
21
- label: "编辑推荐",
22
- description: "博客园编辑精选推荐",
23
- url: "https://feed.cnblogs.com/blog/sitehome/picked",
24
- },
25
- "48h": {
26
- label: "48小时阅读排行",
27
- description: "博客园48小时内阅读量最高的文章",
28
- url: "https://feed.cnblogs.com/blog/sitehome/48h",
29
- },
30
- "10d": {
31
- label: "10天推荐排行",
32
- description: "博客园10天内推荐最多的文章",
33
- url: "https://feed.cnblogs.com/blog/sitehome/10d",
34
- },
35
- user: {
36
- label: "用户博客",
37
- description: "指定用户的博客文章",
38
- url_template: "https://feed.cnblogs.com/blog/u/{username}/rss",
39
- params_schema: {
40
- username: { type: "string", description: "博客园用户名,如 hsewr333", required: true },
41
- },
42
- },
43
- category: {
44
- label: "分类",
45
- description: "指定分类的文章",
46
- url_template: "https://feed.cnblogs.com/blog/category/{category}/rss",
47
- params_schema: {
48
- category: { type: "string", description: "分类名,如 dotnet, python, web", required: true },
49
- },
50
- },
51
- },
52
- },
53
- };
7
+ import { loadRssSources } from "../common/config.js";
8
+ /** 获取所有 RSS 源(从 config.json 读取) */
9
+ export function getRssSources() {
10
+ return loadRssSources();
11
+ }
54
12
  //# sourceMappingURL=sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/rss/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyBH,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,OAAO,EAAE;QACP,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtC,CAAC;QACD,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,cAAc;gBAC3B,GAAG,EAAE,4CAA4C;aAClD;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,WAAW;gBACxB,GAAG,EAAE,+CAA+C;aACrD;YACD,KAAK,EAAE;gBACL,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,kBAAkB;gBAC/B,GAAG,EAAE,4CAA4C;aAClD;YACD,KAAK,EAAE;gBACL,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,gBAAgB;gBAC7B,GAAG,EAAE,4CAA4C;aAClD;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,gDAAgD;gBAC9D,aAAa,EAAE;oBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC/E;aACF;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,uDAAuD;gBACrE,aAAa,EAAE;oBACb,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACvF;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/rss/sources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAsC,MAAM,qBAAqB,CAAC;AAczF,mCAAmC;AACnC,MAAM,UAAU,aAAa;IAC3B,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuque-ai-mcp",
3
- "version": "2.7.4",
3
+ "version": "2.7.6",
4
4
  "description": "Full-featured Yuque MCP Server — 61 fine-grained tools covering the entire Yuque OpenAPI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -31,7 +31,7 @@
31
31
  "dev:http": "tsx watch src/http.ts",
32
32
  "start": "node dist/index.js",
33
33
  "start:http": "node dist/http.js",
34
- "prepublishOnly": "npm run build"
34
+ "prepublishOnly": "npm run build && cp ../README.md ../README_CN.md ../SKILL.md . 2>/dev/null; true"
35
35
  },
36
36
  "repository": {
37
37
  "type": "git",