yuque-cookie-plugin 0.1.0
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/.env.example +5 -0
- package/README.md +253 -0
- package/bin/yuque-local.mjs +3 -0
- package/dist/auth.js +439 -0
- package/dist/cli.js +692 -0
- package/dist/client-cookie.js +544 -0
- package/dist/download-utils.js +579 -0
- package/dist/downloader.js +388 -0
- package/dist/editor-bridge.js +240 -0
- package/dist/fs-utils.js +9 -0
- package/dist/lake-diff.js +113 -0
- package/dist/lake-heading-numbering.js +29 -0
- package/dist/lake-insert.js +34 -0
- package/dist/lake-markdown.js +54 -0
- package/dist/lake-parser.js +79 -0
- package/dist/lake-transform.js +12 -0
- package/dist/reports.js +10 -0
- package/dist/serve-book.js +134 -0
- package/dist/types.js +1 -0
- package/docs/docker-quickstart.md +96 -0
- package/docs/native-lake-capability.md +101 -0
- package/docs/npm-release.md +91 -0
- package/docs/real-acceptance.md +146 -0
- package/docs/usage-zh.md +580 -0
- package/package.json +71 -0
- package/skills/yuque-cookie-plugin/SKILL.md +58 -0
- package/skills/yuque-cookie-plugin/commands.yaml +61 -0
- package/skills/yuque-cookie-plugin/reference/agent-spec.md +51 -0
- package/vendor/lake-editor/CodeMirror.js +1 -0
- package/vendor/lake-editor/antd.4.24.13.css +26886 -0
- package/vendor/lake-editor/doc.css +23603 -0
- package/vendor/lake-editor/doc.umd.js +2 -0
- package/vendor/lake-editor/katex.js +18829 -0
- package/vendor/lake-editor/lake-editor-icon.js +1 -0
- package/vendor/lake-editor/react-dom.production.min.js +267 -0
- package/vendor/lake-editor/react.production.min.js +31 -0
package/.env.example
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# yuque-cookie-plugin
|
|
2
|
+
|
|
3
|
+
一个面向 AI Agent 的本地语雀 Web Session 自动化工具。
|
|
4
|
+
|
|
5
|
+
本项目的核心目标是让 AI 通过和浏览器一致的网页 Session 路径操作语雀文档,而不是依赖语雀 Personal Token、OpenAPI Token、Skill 或 MCP。工具使用 `_yuque_session` 和 `yuque_ctoken` 访问语雀网页端接口,用于降低 token 限流和 MCP 部署带来的限制。
|
|
6
|
+
|
|
7
|
+
这不是一个 OpenAPI wrapper,而是一个本地 CLI 操作面:AI 可以用它读取、整理、下载、快照、对比、格式化并安全写入语雀文档,尽量接近语雀编辑器原生 Lake 结构。
|
|
8
|
+
|
|
9
|
+
## 当前 MVP 能力
|
|
10
|
+
|
|
11
|
+
- Cookie 登录和登录态检测:`login`、`auth-status`
|
|
12
|
+
- 读取语雀信息:`inspect`
|
|
13
|
+
- 文档快照和结构对比:`snapshot`、`diff-lake`
|
|
14
|
+
- Lake 和 Markdown 辅助转换:`lake-to-markdown`、`editor-serialize`
|
|
15
|
+
- 安全写入:`apply-lake`、`update-lake`
|
|
16
|
+
- 创建知识库和文档:`create-book`、`create-doc`
|
|
17
|
+
- 标题原生编号:`--number-headings`
|
|
18
|
+
- 整库/单篇下载:`download-book`、`download-doc`
|
|
19
|
+
- 下载资源清单、warning、retry 报告
|
|
20
|
+
- 本地 VitePress 预览:`serve-book`
|
|
21
|
+
- 上传并插入图片、PDF 附件:`upload-attach`、`insert-image`、`insert-attachment`
|
|
22
|
+
|
|
23
|
+
## 安装
|
|
24
|
+
|
|
25
|
+
从 npm 安装:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g yuque-cookie-plugin
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
如果 npm 版本还没有发布,也可以临时从 GitHub 安装:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g https://codeload.github.com/c-sunc6/yuque-cookie-plugin/tar.gz/refs/heads/main
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
安装后可直接运行:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
yuque-local --help
|
|
41
|
+
yuque-local auth login
|
|
42
|
+
yuque-local doctor --json
|
|
43
|
+
yuque-local skill install --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
开发者本地源码运行:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
git clone git@github.com:c-sunc6/yuque-cookie-plugin.git
|
|
50
|
+
cd yuque-cookie-plugin
|
|
51
|
+
npm install
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
本项目建议作为“项目内本地 CLI”使用:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm run yuque-local -- --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
MVP 阶段不建议使用 `npm install -g`、`npm link` 或修改全局 npm 配置,避免影响电脑上的其他开发环境。
|
|
61
|
+
|
|
62
|
+
## 登录
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm run yuque-local -- auth login
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
命令会打开一个本地网页,需要填写:
|
|
69
|
+
|
|
70
|
+
- 语雀个人/团队主页 URL,例如 `https://www.yuque.com/your-login/`
|
|
71
|
+
- `_yuque_session`
|
|
72
|
+
- `yuque_ctoken`
|
|
73
|
+
|
|
74
|
+
凭据会保存到:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
~/.config/yuque-cookie-plugin/config.json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
项目目录不会保存真实 Cookie。配置文件会记录保存时间、更新时间、最近成功验证时间和最近失败时间。
|
|
81
|
+
|
|
82
|
+
也可以用环境变量覆盖本地配置:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
export YUQUE_SESSION='your _yuque_session'
|
|
86
|
+
export YUQUE_CTOKEN='your yuque_ctoken'
|
|
87
|
+
export YUQUE_HOME_URL='https://www.yuque.com/your-login/'
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
验证登录态:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm run yuque-local -- auth status https://www.yuque.com/<your-login>/<your-book> --json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
在 Docker、SSH、远程服务器或浏览器无法自动打开的环境中,使用无头登录:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
yuque-local auth login --manual
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
也可以一次性传入参数,适合本地受控脚本:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
yuque-local auth login --manual \
|
|
106
|
+
--home-url https://www.yuque.com/<your-login>/ \
|
|
107
|
+
--session '<_yuque_session>' \
|
|
108
|
+
--ctoken '<yuque_ctoken>'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 常用命令
|
|
112
|
+
|
|
113
|
+
查看知识库或文档信息:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npm run yuque-local -- book inspect https://www.yuque.com/<your-login>/<your-book>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
下载整个知识库:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
npm run yuque-local -- book download https://www.yuque.com/<your-login>/<your-book> \
|
|
123
|
+
--dist-dir download \
|
|
124
|
+
--incremental
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
下载单篇文档:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npm run yuque-local -- doc download https://www.yuque.com/<your-login>/<your-book>/<doc-slug> \
|
|
131
|
+
--dist-dir download
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
创建文档:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
npm run yuque-local -- doc create https://www.yuque.com/<your-login>/<your-book> \
|
|
138
|
+
--title AI测试文档 \
|
|
139
|
+
--markdown-file article.md \
|
|
140
|
+
--number-headings
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
插入图片:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm run yuque-local -- doc insert-image https://www.yuque.com/<your-login>/<your-book>/<doc-slug> \
|
|
147
|
+
--file ./image.png \
|
|
148
|
+
--after-text "图片位置"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
插入 PDF 附件:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npm run yuque-local -- doc insert-attachment https://www.yuque.com/<your-login>/<your-book>/<doc-slug> \
|
|
155
|
+
--file ./example.pdf \
|
|
156
|
+
--after-text "附件位置"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
生成文档快照:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npm run yuque-local -- doc snapshot https://www.yuque.com/<your-login>/<your-book>/<doc-slug> \
|
|
163
|
+
--out /tmp/doc.snapshot.json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
对比两个快照:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npm run yuque-local -- diff-lake before.json after.json
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
预览下载后的知识库:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
npm run yuque-local -- serve-book download/知识库 --config-only
|
|
176
|
+
npm run yuque-local -- serve-book download/知识库 --port 5173
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## 原生 Lake 写入策略
|
|
180
|
+
|
|
181
|
+
项目优先使用语雀自身生成的 Lake 结构,而不是手写 Markdown 后直接覆盖。
|
|
182
|
+
|
|
183
|
+
典型流程:
|
|
184
|
+
|
|
185
|
+
1. 通过语雀 Web Session 创建或读取文档。
|
|
186
|
+
2. `snapshot` 获取语雀生成的 `body_asl`。
|
|
187
|
+
3. 只做已验证的 Lake 变换,例如标题编号 `data-lake-index-type="2"`。
|
|
188
|
+
4. 写入前生成备份和报告。
|
|
189
|
+
|
|
190
|
+
PDF 附件写入已通过真实测试验证:file card 必须包含 `src + name`,其中 `src` 指向 `https://www.yuque.com/office/<filekey>?from=<doc-url>`,否则语雀阅读页可能打开 `about:blank`。
|
|
191
|
+
|
|
192
|
+
## yuque-dl 迁移
|
|
193
|
+
|
|
194
|
+
本项目已迁移并改造了部分 `gxr404/yuque-dl` 的核心下载能力,但不通过外部 shell 调用它,而是使用 TypeScript 在本项目内实现,并适配 `_yuque_session + yuque_ctoken` 的认证路径。
|
|
195
|
+
|
|
196
|
+
已支持:
|
|
197
|
+
|
|
198
|
+
- 整库下载并保持 TOC 目录结构
|
|
199
|
+
- 单篇/多篇文档下载
|
|
200
|
+
- `progress.json` 增量下载
|
|
201
|
+
- `index.md` 汇总页
|
|
202
|
+
- 图片、附件、音视频资源本地化
|
|
203
|
+
- 资源清单、失败 warning、retry 信息
|
|
204
|
+
- VitePress 本地预览配置
|
|
205
|
+
|
|
206
|
+
仍在继续补齐:
|
|
207
|
+
|
|
208
|
+
- 复杂语雀表格变体
|
|
209
|
+
- 音视频真实复杂样例
|
|
210
|
+
- 思维导图、画板、复杂 card 的原生创建和更新
|
|
211
|
+
|
|
212
|
+
## 开发与验证
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
npm run typecheck
|
|
216
|
+
npm test
|
|
217
|
+
npm run yuque-local -- --help
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
发布前本地打包验证:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
npm pack
|
|
224
|
+
npm install -g ./yuque-cookie-plugin-0.1.0.tgz
|
|
225
|
+
yuque-local --help
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
真实语雀验收不会进入默认 `npm test`。需要手动运行:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
npm run real:acceptance -- \
|
|
232
|
+
--book-url https://www.yuque.com/<your-login>/<your-book> \
|
|
233
|
+
--dist-dir /tmp/yuque-real-acceptance
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## 文档
|
|
237
|
+
|
|
238
|
+
- `docs/usage-zh.md`:中文完整使用指南
|
|
239
|
+
- `docs/real-acceptance.md`:真实语雀验收流程
|
|
240
|
+
- `docs/native-lake-capability.md`:原生 Lake 能力矩阵
|
|
241
|
+
- `docs/development-plan.md`:开发计划和迭代日志
|
|
242
|
+
- `docs/principles.md`:项目开发原则
|
|
243
|
+
- `docs/github-mvp-release.md`:GitHub MVP 发布检查清单
|
|
244
|
+
- `docs/npm-release.md`:npm 发布指南
|
|
245
|
+
- `docs/docker-quickstart.md`:Docker 隔离试用命令
|
|
246
|
+
|
|
247
|
+
## 安全约束
|
|
248
|
+
|
|
249
|
+
- 不要把真实 `_yuque_session` 或 `yuque_ctoken` 写入项目文件。
|
|
250
|
+
- 不要提交 `~/.config/yuque-cookie-plugin/config.json`。
|
|
251
|
+
- `reports/`、`backups/`、`node_modules/` 已被 `.gitignore` 忽略。
|
|
252
|
+
- 批量写入前先对单篇文档做真实实验。
|
|
253
|
+
- 不确定 Lake 语义时,先 snapshot,再 diff,再实现。
|