关于 Presio
Presio 是基于浏览器的 PDF 演示工具,适合希望无需安装桌面应用即可播放幻灯片的演讲者。它默认在浏览器中处理本地 PDF,并支持查看窗口同步、演讲者备注、媒体和插件。
主要功能
- 01在浏览器中演示 PDF
- 02同步控制窗口与观看窗口
- 03跨设备共享演示
- 04显示 Markdown 演讲者备注
- 05同步视频和嵌入媒体播放
- 06通过插件扩展演示功能
适用场景
- 01通过浏览器演示 PDF
- 02在第二个窗口或设备上显示幻灯片
- 03演示时查看演讲者备注
- 04通过插件添加投票或字幕
MCP 相关
Presio 提供 MCP 服务和 REST API,供 Agent 演示及验证 PDF。文档列出的 MCP 端点为 https://presio.ch/mcp。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://presio.xyz/mcpclaude mcp add --transport http xyz-presio-presio https://presio.xyz/mcp{"mcpServers":{"xyz-presio-presio":{"type":"http","url":"https://presio.xyz/mcp"}}}在 Cursor 中打开{"servers":{"xyz-presio-presio":{"type":"http","url":"https://presio.xyz/mcp"}}}在 VS Code 中打开{"mcpServers":{"xyz-presio-presio":{"type":"http","url":"https://presio.xyz/mcp"}}}{"mcpServers":{"xyz-presio-presio":{"serverUrl":"https://presio.xyz/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
2| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| filename | string | 否 | 原始文件名,例如 deck.pdf |
| pdf_base64 | string | 是 | PDF 文件内容,采用 base64 编码 |
| session_id | string | 否 | 要原位更新的现有演示文稿 ID(来自先前的 present 响应),而不是创建新的演示文稿 |
| controller_token | string | 否 | 该演示文稿的控制器令牌——创建时返回的 url 中的 t= 查询参数。提供 session_id 时必须提供此参数。 |
详细介绍
Presio
在浏览器中展示 PDF:无需安装,是 Pympress 的替代方案。可在 presio.ch 或 presio.xyz 试用(如果你的机构屏蔽了 .xyz,请使用 presio.ch)。
打开 PDF,在一个浏览器窗口中控制幻灯片,并在另一个窗口中展示。本仓库是托管服务的源代码。


功能
- 默认本地运行:你的 PDF 保留在浏览器中,并且可离线使用。本地演示文稿会保留 7 天。
- 控制器 + 查看器:查看器窗口会实时同步显示控制器的内容。
- 跨设备演示:登录并同步,即可获得一个 6 位代码。查看者在主页输入代码,即可实时跟随演示。
- 共享控制权:将口令交给他人,即可让对方控制演示。
- 演讲者备注:以 markdown 格式显示在当前幻灯片和下一张幻灯片旁。
- 嵌入式媒体:视频、GIF 和 YouTube/Vimeo 视频,并与查看者同步播放。
- 计时器、可自定义布局和可重新映射的快捷键。
- 插件:添加投票或字幕等功能;参见插件。
- Agent API:MCP 服务和 REST API;参见通过 AI Agent 使用。
添加视频和演讲者备注
任何 PDF 都可以使用。要添加备注和媒体,请使用官方软件包,或手动嵌入(参见手动嵌入备注):
- Typst — presio-typst-package
- LaTeX — presio-latex-package
Typst
#import "@preview/presio:0.2.3": media, speaker-notes
= Introduction
Hello world.
#speaker-notes[
Remember to mention the demo before moving on.
]
#media("https://www.youtube.com/watch?v=dQw4w9WgXcQ", width: 60%, aspect-ratio: 16/9)
LaTeX
\documentclass{beamer}
\usepackage{presio}
\begin{document}
\begin{frame}{Introduction}
Hello world.
\presionote{Remember to mention the demo before moving on.}
\end{frame}
\begin{frame}{The demo}
\presiomedia[width=0.7\linewidth]{https://www.youtube.com/watch?v=dQw4w9WgXcQ}
\end{frame}
\end{document}
安装时,将软件包仓库中的 presio.sty 复制到 .tex 文件所在目录。
手动嵌入备注
Presio 会从附加到 PDF 的 JSON 文件(Typst),或从 note: 链接注释(LaTeX)中读取演讲者备注。
Typst:定义一个辅助函数,并在每张幻灯片上调用它:
#let speaker-notes(notes) = context {
// Page number keeps the attachment filename unique per slide
let page-num = counter(page).display()
let filename = "notes-slide-" + page-num + ".json"
let json-string = json.encode((slide: page-num, notes: notes))
pdf.attach(
filename,
bytes(json-string),
description: "Speaker notes for slide " + page-num,
mime-type: "application/json",
)
}
#speaker-notes("Remember to mention the demo.")
LaTeX:使用 hyperref 创建不可见的 note: 链接:
\usepackage{hyperref}
\newcommand{\speakernote}[1]{%
\href{note:#1}{\phantom{n}}%
}
% Usage on a slide:
\speakernote{Remember to mention the demo.}
在 presio.ch/check 检查结果,该页面会报告每页的备注和媒体是否有效。
插件
插件可添加实时投票或隐藏式字幕等功能。可在 GitHub 的 presio-plugin 主题下浏览插件,然后前往“设置” → “发现插件”添加。
要构建自己的插件,请将以下提示词粘贴到 Claude Code、Codex 或 Cursor 中:
Read https://presio.ch/plugins.md and build me a Presio plugin. Ask me what it should do first.
通过 AI Agent 使用
Agent 可以通过 MCP 或 REST 演示和检查 PDF。请从 presio.ch/llms.txt 开始。要将 MCP 服务添加到 Claude Code:
claude mcp add --transport http presio https://presio.ch/mcp
自托管
如需完整部署(账号、跨设备同步、自有域名),请参阅
deploy/README.md。
如需使用无账号或 Supabase 的单个离线容器:
docker run -d -p 3001:3001 -e PRESIO_MODE=local -e LOCAL_DATA_DIR=/data \
-e TRUST_PROXY=false -v presio-data:/data \
ghcr.io/potentialhedge/presio-local:1
:1 会跟踪当前主版本,因此不会引入破坏性变更(参见版本和升级)。有关此模式所包含的内容,请参阅完全本地运行 / 离线运行。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。