overleaf-project-synclisted
Install: claude install-skill black-yt/skills
# Overleaf Project Sync
## 核心原则
- 只从浏览器当前登录会话中临时复制 Overleaf Cookie;不要把 Cookie、项目 ID、下载链接或个人账号信息写入仓库。
- 用 `scripts/overleaf_sync.py` 执行检查和同步,不要把一次性脚本复制到论文项目根目录。
- 默认不写入本地目录;不传子命令时等价于 `check`。
- 只有显式执行 `update --overwrite` 时才把 Overleaf ZIP 中的文件复制到本地;`update` 不带 `--overwrite` 也只做 dry-run。
- 脚本会在系统临时目录下载和解压 ZIP,并在结束后自动清理;不要在项目根目录留下 `overleaf_tmp.zip`、`overleaf_tmp/` 等临时文件。
- 同步前先 `check`,确认差异符合预期后再 `update`。
- 同步后检查 `git status --short` 和 `git diff --check`;不要直接提交未审阅的远端覆盖结果。
## 从 Overleaf 网页获取参数
1. 在浏览器打开 Overleaf 首页并保持登录。
2. 按 `Ctrl + Shift + C`,或用浏览器菜单打开开发者工具。
3. 切到 `Network` 面板。
4. 建议勾选 `Preserve log`,避免从首页跳转到项目页时请求记录被清掉。
5. 从 Overleaf 首页点击进入目标项目页,让浏览器产生项目相关请求。
6. 在 Network 请求列表中选择一个 Overleaf 请求。优先找这些请求:
- 下载项目 ZIP 的请求;
- URL 中包含 `/project/[PROJECT_ID]` 的项目页请求;
- URL 中包含 `download/zip` 的请求;
- 其他发往 `www.overleaf.com` 且状态码正常��请求。
7. 点开请求的 `Headers`。
8. 在 `Request Headers` 中找到 `Cookie`,复制 `Cookie:` 后面的值。
9. 通常只需要其中的 `overleaf_session2=...` 这一段;如果下载返回 `401`、`403` 或登录态异常,再复制完整 Cookie 串重试。
10. 在项目页找到下载项目 ZIP 的请求或链接,形如:
```text
https://www.overleaf.com/project/[PROJECT_ID]/download/zip
```
也可以根据项目 URL 手动拼出 ZIP 下载链接:
```text
项目页: https://www.overleaf.com/project/[PROJECT_ID]
ZIP 链接: https://www.overleaf.com/project/[PROJECT_ID]/download/zip
```
11. 把 Cookie 和 ZIP URL 作为环境变量或命令行参数传给脚本。
推荐使用环境变量,避免命令历史里直接出现长 Cookie:
```bash
export OVERLEAF_ZIP_URL='https://www.overleaf.com/project/[PROJECT_ID]/download/zip'
export OVERLEAF_COOKIE='overleaf_session2=[SESSION_VALUE