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 ADDED
@@ -0,0 +1,5 @@
1
+ # This project does not auto-load .env.
2
+ # Export these in your shell when running commands.
3
+ YUQUE_SESSION="paste _yuque_session here"
4
+ YUQUE_CTOKEN="paste yuque_ctoken here"
5
+ YUQUE_HOME_URL="https://www.yuque.com/your-login/"
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,再实现。
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../dist/cli.js'