关于 PasteHTML
PasteHTML 将 HTML 和 Markdown 内容发布为可分享页面,并提供账户文件夹、内容更新和浏览量统计。其远程 MCP 服务通过浏览器 OAuth 授权,让 Agent 管理账户中的粘贴内容和文件夹。
主要功能
- 01发布 HTML 和 Markdown 内容
- 02更新现有粘贴内容
- 03将内容归入文件夹
- 04设置密码和自定义子域名
- 05查看内容信息和统计数据
适用场景
- 01分享 Agent 生成的设计文档
- 02更新已发布方案并保留原链接
- 03整理账户中的项目内容
- 04查看内容浏览统计
MCP 相关
PasteHTML 通过 Streamable HTTP 提供远程 MCP 服务。客户端经 OAuth 授权后,可创建、更新、配置、获取和列出粘贴内容,查看统计数据并管理文件夹。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://pastehtml.dev/mcpclaude mcp add --transport http dev-pastehtml https://pastehtml.dev/mcp{"mcpServers":{"dev-pastehtml":{"type":"http","url":"https://pastehtml.dev/mcp"}}}在 Cursor 中打开{"servers":{"dev-pastehtml":{"type":"http","url":"https://pastehtml.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"dev-pastehtml":{"type":"http","url":"https://pastehtml.dev/mcp"}}}{"mcpServers":{"dev-pastehtml":{"serverUrl":"https://pastehtml.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
pastehtml.dev
数秒内分享 HTML 页面。上传 HTML 文件,即可获得一个私人链接,朋友可以打开、预览并查看源代码。匿名发布仍然可用;注册账号后,还可使用文件夹、自定义子域名、浏览次数统计、基于浏览器重新上传更新,以及用于 Agent 向文件夹发布内容的账号 API 密钥。
工作原理
- 拖放(或浏览选择)不超过 2 MB 的
.html/.htm文件。 - 文档会发布到
https://<token>.pastehtml.dev/,也可以发布到已认领的自定义子域名(例如https://launch-plan.pastehtml.dev/);/p/<token>处提供检查页面(复制链接、预览、高亮显示的源代码)。 Token 是随机的 32 位小写字母数字 ID(约 165 位熵——使用小写是因为它们也会用作子域名,而且浏览器会将主机名转换为小写),因此随机链接除非被分享,否则是私密的。 - 粘贴内容可以设为密码保护。访问受锁定的粘贴内容之前,必须先输入密码;在此之前,检查页面、原始字节、渲染预览或实时子域名均不会提供。
- 已登录用户可以将粘贴内容保存到文件夹、查看浏览次数统计,并重新上传替换的
.html/.htm文件,而不更改分享链接。粘贴内容无法删除。通过 API 创建的更新 Token 仍可用于基于 Token 的自动更新。 - 分享页面提供实时预览(支持站内全屏模式)和由 Rouge 高亮显示的源代码视图。
- 每个粘贴内容都会作为来自其自身源的真实页面提供——
https://<token>.pastehtml.dev/——因此脚本和 localStorage 均可正常工作(审阅进度清单会保留),同时与其他粘贴内容及应用本身完全隔离。基于路径的/p/<token>/raw端点会以text/plain返回粘贴内容的精确字节——为程序化客户端提供逐字节一致的副本,不受传输过程中 CDN 重写 HTML 的影响;/p/<token>/render则会在 CSPsandbox中以text/html提供相同字节。
Agent API
无需浏览器即可发布——非常适合生成设计文档或实施计划,并希望返回分享链接的 AI Agent。匿名发布仍可在无需凭据的情况下使用;已登录用户也可以在 /api_keys 创建账号 API 密钥,让 Agent 向其账号发布内容并指定目标文件夹。
# Multipart upload
curl -F "[email protected]" https://pastehtml.dev/api/pastes
# Or stream the HTML straight from a pipe
curl --data-binary @plan.html -H "Content-Type: text/html" \
"https://pastehtml.dev/api/pastes?filename=plan.html"
匿名创建会返回 201 和
{ token, title, custom_subdomain, folder, owner, account_paste, password_protected, views_count, live_url, url, raw_url, render_url, markdown_url, update_token }
(或者返回 422 和 { errors })。使用账号密钥创建会返回相同的粘贴内容字段,但不包含 update_token;使用账号密钥更新账号所有者的粘贴内容,这样撤销密钥后,Agent 就无法继续访问。创建/更新请求中可添加 password=<secret>(或 custom_subdomain=<name>,后者需要账号密钥);更新时发送 clear_password=1 可移除粘贴内容的密码。获取 raw_url 可读回粘贴内容的精确字节(text/plain,传输过程中绝不会被重写)。
用于 Agent 的账户 API 密钥
已登录用户可以在控制面板中打开 API keys,创建密钥,并将该密钥提供给 Agent。可以通过 Authorization: Bearer pht_... 或 X-PasteHTML-API-Key: pht_... 使用。使用有效账户密钥调用 POST /api/pastes 时,粘贴内容归该用户所有,并会显示在其控制面板中。文件夹定位仅支持账户密钥:
curl -H "Authorization: Bearer $PASTEHTML_API_KEY" \
--data-binary @plan.html -H "Content-Type: text/html" \
"https://pastehtml.dev/api/pastes?filename=plan.html&folder_name=Roadmap"
使用 folder_name=<name> 查找或在该账户下创建文件夹,使用 folder_id=<id> 指定现有文件夹;更新时使用 clear_folder=1,可将粘贴内容移回“所有粘贴内容”。创建密钥时,也可以将其限定为默认文件夹;限定范围的密钥始终会在该文件夹中发布,只能更新该文件夹中已有的粘贴内容,会拒绝文件夹覆盖操作,只能通过文件夹 API 列出该文件夹的内容,也不能创建其他文件夹。删除文件夹时,限定范围的密钥会自动撤销。未限定范围的 Agent 可以通过以下方式查找现有文件夹 ID:
curl -H "Authorization: Bearer $PASTEHTML_API_KEY" \
https://pastehtml.dev/api/folders
未限定范围的密钥可以通过嵌套表单参数(folder[name]=Roadmap)或简单的顶层参数 name=Roadmap 创建文件夹,客户端可任选其一。创建文件夹时,限定文件夹范围的密钥会收到 403 响应。
账户密钥可以更新归该账户所有的粘贴内容;只要粘贴内容仍为匿名状态,按粘贴内容使用 update_token 的流程也会继续有效。如果 Agent 需要将匿名粘贴内容认领到账户,请在 Authorization: Bearer ... 中发送账户密钥,并通过 X-Update-Token: ... 单独发送粘贴密钥。认领操作不可逆:此后账户密钥将成为该粘贴内容的更新凭据,旧令牌将失效。
update_token 仅会显示一次——服务器只存储其摘要——只要粘贴内容保持匿名,就可以使用它进行任意次数的原位更新:
curl -X PATCH -H "Authorization: Bearer $UPDATE_TOKEN" \
-F "[email protected]" https://pastehtml.dev/api/pastes/$TOKEN
更新接受与创建相同的两种请求正文形式,并返回 200 以及刷新的 { token, title, custom_subdomain, folder, owner, account_paste, password_protected, views_count, live_url, url, raw_url, render_url, markdown_url };如果更新令牌错误或缺失,或账户密钥不属于该粘贴内容的所有者,则返回 403;如果粘贴内容不存在,则返回 404。粘贴内容发布和更新端点按 IP 限速,每分钟 20 次、每天 1,000 次;文件夹 API 端点也要求提供账户密钥,并按 IP 限速。
Agent 会自行发现所有这些信息:完整的集成指南位于
/llms.txt(首页也指向该指南,包括可见链接和 HTML 注释中的链接,方便原始内容抓取工具获取)。只需告诉 Agent“将此内容发布到 pastehtml.dev”即可。
MCP 服务
对于支持 Model Context Protocol 的 Agent,pastehtml.dev 也提供远程 MCP 服务,地址为 https://pastehtml.dev/mcp
(Streamable HTTP)。Agent 无需使用 pht_ 密钥,而是通过 OAuth 在浏览器中授权一次,之后即可在你的账户中操作——使用与仪表板相同的文件夹、浏览量统计和永久粘贴内容。
# Claude Code
claude mcp add --transport http pastehtml https://pastehtml.dev/mcp
# Codex
codex mcp add pastehtml --url https://pastehtml.dev/mcp
首次使用时,客户端会打开浏览器授权页面;批准后,Agent 即会连接——无需复制或保存密钥。授权采用 OAuth 2.1、PKCE 和 RFC 7591 动态客户端注册,权限范围为 mcp:read、
mcp:pastes:write 和 mcp:folders:write。你可以随时在仪表板的已连接的 Agent下查看或撤销已连接的 Agent。
共提供十种工具(粘贴内容是永久的——没有删除粘贴内容的工具):
create_paste— 发布新的 HTML 或 Markdown 粘贴内容,可选择将其放入文件夹。update_paste— 重新发布现有粘贴内容(在原位置覆盖)。configure_paste— 更改粘贴内容的密码、自定义子域名或文件夹。get_paste— 获取一条粘贴内容的元数据、URL 和存储内容。get_paste_stats— 汇总一条粘贴内容的浏览量数据。list_pastes— 分页列出账户中的粘贴内容,可按文件夹筛选。list_folders— 列出文件夹及其粘贴内容数量。create_folder— 创建一个新的空文件夹。rename_folder— 重命名文件夹。delete_folder— 删除文件夹(其中的粘贴内容会保留,并变为未归档状态)。
在生产环境中,可以使用 MCP_DYNAMIC_REGISTRATION_DISABLED 环境变量关闭动态客户端注册(已预注册的客户端仍可继续使用)。通过获取发现文档,对部署进行冒烟测试:
curl https://pastehtml.dev/.well-known/oauth-protected-resource
技术栈
- Ruby on Rails 8.1 · PostgreSQL · Hotwire(Turbo + Stimulus)
- Tailwind CSS v4(cssbundling)· esbuild(jsbundling)· Yarn 4
- 使用 mise 管理工具,使用 Docker Compose 运行 PostgreSQL
- 漫画风格设计:Bangers 展示字体搭配 Inter、半色调纹理、带硬偏移阴影的墨线描边面板
- 可安装的 PWA:manifest + 极简的网络优先 service worker,并提供离线备用页面(粘贴内容本身永远不会被缓存)
- 使用 meta-tags 实现 SEO(OG/Twitter 卡片,含品牌 OG 图片、canonical、粘贴页面设为 noindex),并提供漫画风格的静态错误页面
开发
mise run dev # starts postgres (docker), installs deps, prepares db, runs bin/dev
或者按步骤操作:
mise run docker:start # postgres on localhost:5435
mise run deps # bundle install + yarn install
mise run db:prepare
bin/dev # rails server + js/css watchers on port 3000
测试与 lint
mise run test # rails test
mise run lint # rubocop + brakeman
部署
使用 Kamal,通过 GitHub Actions(“Kamal Run”工作流)部署到单台服务器:应用容器和一个 postgres 18 附属服务。db/production.sql 会在该附属服务首次启动时创建 Solid Cache/Queue 数据库。粘贴内容通过 <token>.pastehtml.dev 子域名提供,因此代理会将通配符域名指向该服务,并使用 Cloudflare Origin CA 证书(通配符域名无法通过 HTTP-01 获取 Let's Encrypt 证书)。
一次性设置:
- Cloudflare(免费套餐):为
pastehtml.dev、www添加代理A记录,并添加代理通配符*记录,全部指向服务器。将 SSL/TLS 模式设为完全(严格)。为pastehtml.dev, *.pastehtml.dev创建 Origin Server 证书,并保留 PEM 证书和密钥。 - 仓库 Actions 密钥:
SERVER_IP、SSH_PRIVATE_KEY(对服务器的 root 访问权限)、RAILS_MASTER_KEY(来自config/master.key)、POSTGRES_PASSWORD、CLOUDFLARE_ORIGIN_CERTIFICATE和CLOUDFLARE_ORIGIN_KEY(Origin CA PEM 证书和密钥)。容器注册表(ghcr.io)使用工作流自身的GITHUB_TOKEN进行身份验证。 - 运行一次 Kamal Run 工作流,并使用命令
setup(配置 postgres + 代理),之后每次发布都使用deploy。
在本地运行 kamal 命令时,将 Origin CA 证书和密钥放入
.kamal/certs/origin.pem / origin-key.pem(已加入 gitignore),导出
SERVER_IP 和 POSTGRES_PASSWORD;如果需要在本地构建镜像,请从 config/deploy.yml 中移除 GHA 构建器缓存区块。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。