olcli:外页 CLI
在您的终端上进行 Overleaf 工程, 而您的合作作者继续使用 Overleaf 网页编辑器 . 拉出,推出,同步,diff并编译出LaTeX项目;读取并回答评论;使用Overleaf作为git远程;给AI代理一个在写作前询问你的MCP服务器.
- 合作者改变不了什么. 他们不断在浏览器中编辑,评论和编译;你在Vim,VS代码,Emacs或代理中工作,并与同一个项目同步.
- 免费Overleaf计划. 拉出,推出,同步,diff,ladexdiff,编译,PDF和输出下载,文件操作,zip,注释上市和git远程帮助器在一个免费的上页.com账户上被检查. 跟踪变化是例外:Overleaf本身只在溢价项目中提供.
- 自办社区版 以同样的命令.
- 没有金币,没有付费计划. olcli在正常的Overleaf会话中标记出来. Overleaf自己的Git集成是一个溢价特性;olcli的git远程帮助器没有与之相接.
- 一个包: 命令行工具,git远程帮助器,MCP服务器和TypeScript库.
安装
brew install aloth/tap/olcli # Homebrew (macOS, Linux)
npm install -g @aloth/olcli # npm (any platform, Node 20.18.1 or newer)
在与 Nix 的 Linux 上 : nix run github:aloth/olcli -- --help不安装 : npx @aloth/olcli list对于通过特工技能的AI特工: npx skills add aloth/olcli。 。 。 .
快开始
olcli auth --browser # sign in through a browser window
olcli list # your projects
olcli pull "My Thesis" # download into ./My_Thesis
cd My_Thesis
vim main.tex
olcli diff # what would change on Overleaf
olcli push # upload your edits
olcli pdf # compile on Overleaf and download the PDF
olcli auth --browser 在 Chrome, Edge, Chromium 或 Brave 中以新的临时配置文件打开登录页面( 绝不是你自己的), 等待您已经签名, 只保留会话 cookie 。 它与SSO,Google,ORCID和两个因子的登录器合作,而olcli从不看到你的密码. 它需要22号或更新; 设置 OLCLI_BROWSER 当找不到浏览器时.
用会话饼干签名
没有支持的浏览器, 或者没有显示的服务器 ? 粘贴饼干:
olcli auth --cookie # prompts, input stays hidden
pbpaste | olcli auth --cookie - # or read it from stdin
olcli auth status # instance, account, where the credential comes from
去拿你的会话饼干: 在浏览器中签名到Overleaf,打开开发工具(F12),然后打开应用程序(Chrome, Edge)或存储(Firefox),Cookies,并复制其值 overleaf_session2 (单位:千美元)overleaf.sid (关于大多数自主办实例)。 命令线上的一个值也起作用了 但是在你的空壳史上着陆了.
自行主办而无需重新开放的 olcli auth --email [email protected],提示密码。 脚本可以设置 OVERLEAF_SESSION,或 OVERLEAF_EMAIL 财务报告和审定财务报表 OVERLEAF_PASSWORD跳过 olcli auth 完全没有.
自主办
olcli config set-url https://latex.example.org
olcli config set-cookie-name overleaf.sid
olcli auth --browser
或者每个命令: olcli --base-url https://latex.example.org list。 MCP 服务器和 git 远程帮助读取 OVERLEAF_BASE_URL 财务报告和审定财务报表 OVERLEAF_COOKIE_NAME。 。 。 .
特征
- 拉,推,同步 带有嵌入式文件夹的本地删除
sync,而LaTeX则建造被忽略的文物(忽略规则(中文(简体) ) - 抖动 本地文件在您推前与当前工程相对应,使用
--exit-code用于CI(文件/DIFF.md(中文(简体) ) - 标记修改 :
olcli diff --latexdiff --pdf在Overleaf上建立通过和下划线的PDF顾问和日记,不需要本地TeX(需要)latexdiff(关于路径) - 编译和下载 pDF,一个单一的根文档(
-r appendix.tex),或汇编产出,例如.bbl阿尔谢夫 - 文件 : 上传、下载、删除、重命名并按路径移动; 将项目下载为 zip
- 审查评论: 列表、添加、答复、解析、重开和删除注释线索
- 已跟踪更改 : 清单中建议的插入和删除、接受或拒绝。 轨迹变化是一个Overleaf溢价特征:只有在所有者有溢价计划的项目中才能使用,任何计划的特邀合作者然后都可以使用. 在其他项目中,没有跟踪更改清单
- 项目: 按模式创建、重命名和批量重命名(干运行,除非
--apply(中文(简体) ) - Git 远程 :
git clone overleaf::https://www.overleaf.com/project/<id>(单位:千美元)文件/GIT-REMOTE.md(中文(简体) ) - MCP 服务器 aI 代理; 每个先写字的工具文献/磁共振(中文(简体) )
- 授权项目名称 : 大小写不敏感,唯一前缀,“你是指”建议
- 可脚本 :
--json上面的列表,管子的纯输出,NO_COLOR,表示某种意思的退出代码
使用 Claude 代码、 编码和光标
olcli 运送一个MCP服务器, olcli-mcp添加到 .mcp.json (Claude代码), .cursor/mcp.json (Cursor)或您的客户端的 MCP 设置 :
{
"mcpServers": {
"overleaf": {
"command": "npx",
"args": ["-y", "--package", "@aloth/olcli", "olcli-mcp"]
}
}
}
代码在 ~/.codex/config.toml (或 .codex/config.toml 在信任的项目中:
[mcp_servers.overleaf]
command = "npx"
args = ["-y", "--package", "@aloth/olcli", "olcli-mcp"]
服务器使用存储的会话 olcli auth; 设置 OVERLEAF_SESSION 内 env 如果你喜欢的话 每个修改项目(推出一个文件,删除,重命名,注释,接受或拒绝被跟踪的修改,创建一个项目)的工具都会显示它会做什么,只有在客户端确认后才写出. 服务器告诉代理商,注释和文档文本等项目内容是数据而不是指令. 细节,完整的工具列表和没有确认支持的客户端: 文献/磁共振。 。 。 .
图标
在被拉动的目录中( 它包含 .olcli.json),项目论证可以省去. olcli <command> --help 以示例显示每个选项.
| 命令 | 说明 |
|---|---|
olcli auth | 签名于 : --browser, (中文(简体) ), --cookie,或 --email |
olcli auth status | 实例、 账户、 证书来源; 未签名的出处 1 |
olcli logout | 清除存储的证书 |
olcli list | 列出项目(--json, (中文(简体) ), -n(中文(简体) ) |
olcli info [project] | 项目细节和文件列表 |
olcli project create <name> | 创建空白或示例项目( E)--template(中文(简体) ) |
olcli project rename <new> [project] | 重命名工程本身 |
olcli project rename-bulk | 按模式重命名许多工程( 干运行, 除非 --apply(中文(简体) ) |
olcli pull [project] [dir] | 下载工程文件 |
olcli push [dir] | 上传本地更改( E)--dry-run, (中文(简体) ), --all, (中文(简体) ), --delete(中文(简体) ) |
olcli sync [dir] | 推后,宣传本地删除(--no-delete, (中文(简体) ), --dry-run(中文(简体) ) |
olcli diff [project] [dir] | 与现场项目相对应的内容 diff--name-only, (中文(简体) ), --exit-code, (中文(简体) ), --latexdiff, (中文(简体) ), --pdf(中文(简体) ) |
olcli upload <file> [project] | 上传一个文件( E)--to <path>(中文(简体) ) |
olcli download <file> [project] | 下载一个文件( E)-o(中文(简体) ) |
olcli delete <file> [project] | 删除一个文件或文件夹(别名) rm(中文(简体) ) |
olcli rename <old> <new> [project] | 重命名或移动文件或文件夹(别名) mv(中文(简体) ) |
olcli zip [project] | 将工程下载为 zip 归档 |
olcli compile [project] | 编辑 :-r <root.tex>(中文(简体) ) |
olcli pdf [project] | 编译和下载 PDF (-o, (中文(简体) ), -r(中文(简体) ) |
olcli output [type] | 下载编译输出, 如 bbl 或者说 log (单位:千美元)--list(中文(简体) ) |
olcli comments list [project] | 清单评论意见--status, (中文(简体) ), --context, (中文(简体) ), --changes, (中文(简体) ), --json(中文(简体) ) |
olcli comments add <file> <message> | 对所选文本的评论 |
olcli comments reply <id> <body> | 对线索的答复 |
olcli comments resolve <id> | 解析线程( E)reopen 财务报告和审定财务报表 delete 也一样) |
olcli changes accept <ids...> | 接受跟踪更改( Primium 项目) |
olcli changes reject <ids...> | 拒绝跟踪更改; 预览, 除非 --yes |
olcli config set-url <url> | 设置实例 URL(get-url, (中文(简体) ), set-cookie-name, (中文(简体) ), set-timeout(中文(简体) ) |
olcli ignored [dir] | 显示无效的忽略模式 |
全球选项: --base-url <url>, (中文(简体) ), --cookie-name <name>, (中文(简体) ), --timeout <ms>, (中文(简体) ), --verbose (打印每个 HTTP 请求), --no-color。 。 。 .
同步是如何工作的
pull下载每个文件并跳过自上次拉出以来更改的本地文件;--force覆盖他们.push上传自上次拉起的文件并保留文件夹结构.push --dry-run列出他们;olcli diff显示实际的不同.sync拉出,然后推出。 本地编辑在更新时获胜, 本地删除的文件在 Overleaf 上被删除(--no-delete选择退出;sync --dry-run --verbose以备预览).- 在推前,
olcli diff比较目前Overleaf上的项目,所以在您覆盖它之前,您可以看到一个合作作者更新的编辑.
实例
# Daily thesis workflow
olcli pull "PhD Thesis" thesis && cd thesis
olcli sync && olcli pdf -o draft.pdf
# Marked-up PDF of your local revision for your advisor
olcli diff --latexdiff --pdf
# Fail a CI job when the paper on Overleaf drifted from the repository
olcli diff --exit-code --name-only
# Review comments, with two lines of context
olcli comments list --status open --context 2
# arXiv submission prep
olcli output bbl -o main.bbl
olcli zip -o arxiv-submission.zip
# Back up every project
for proj in $(olcli list --json | jq -r '.[].name'); do
olcli zip "$proj" -o "backups/${proj}.zip"
done
代理服务器
奥尔克利荣誉 HTTPS_PROXY, (中文(简体) ), HTTP_PROXY, (中文(简体) ), ALL_PROXY 财务报告和审定财务报表 NO_PROXY (小写姓名优先) 每一个请求。 https://例是通过CONNECT隧道到达的,因此代理从不看到会话饼干. localhost 和回路地址总是直接到达. --verbose 命名用于每个请求的代理.
HTTPS_PROXY=http://proxy.example.org:3128 olcli list
配置和全权证书
全权证书按以下顺序宣读: OVERLEAF_SESSION,则 .olauth 在当前目录中(由 olcli auth --save-local),然后是全局配置. olcli auth status 显示使用哪个和它居住的地方。 会话 cookie 以纯文本存储; 密码仅在您通过时保存 --save-password。 。 。 . olcli logout 清除全局配置和 .olauth。 。 。 .
每个环境变量、超时设置和被忽略的规则(.olignore, (中文(简体) ), .olignore.local)在下文中叙述 文件/协商.md。 。 。 . olcli --help 列出变量.
图书馆
import { OverleafClient } from '@aloth/olcli';
const client = await OverleafClient.fromSessionCookie(cookie);
const projects = await client.listProjects();
const pdf = await client.downloadPdf(projects[0].id);
所有出口: 文献/图书馆。 。 。 .
解决问题
- "会议过期或无效. 运行: olcli 认证: 会话过期; 再次签名 .
olcli auth status告诉你使用了哪种证书. - 大型项目的超时:
olcli config set-timeout 60000,或--timeout 60000一次 一次吗. - 汇编失败 : 页面编辑器显示完整日志;
olcli output log下载它. - 还有什么: 以
--verbose,并将输出(没有饼干)包括在一期中.
文档
- 文件/DIFF.md: diff、ladxdiff和CI门
- 文献/磁共振: MCP 服务器、工具和写入确认
- 文件/GIT-REMOTE.md: 作为 git 遥控器的外页
- 文件/协商.md: 证书、 环境变量、 超时、 忽略规则
- 文献/图书馆: 类型脚本库
- 文献/档案:客户端如何与Overleaf交谈(没有公开Overleaf API,因此使用浏览器会话)
捐款
欢迎捐款。 见 捐款额 本地设置,测试需要真实的Overleaf账户, 以及CI检查的拉取请求.
许可证
麻省理工学院 亚历山大·洛斯