plsreadme
问题所在
你用 Markdown 写了一个 README、PRD、会议纪要或 API 文档。现在你需要将其分享给没有 Markdown 渲染器、不使用 GitHub,或者只是需要一个可以在浏览器中打开的简洁链接的人。
plsreadme 只需一步即可将任何 Markdown 转换为永久、渲染精美的网页。无需账户。无需注册。零门槛。
Related MCP server: slideless-mcp
✨ 功能
即时共享 — 粘贴 Markdown 或上传文件,获取
plsrd.me链接精美渲染 — 简洁的排版、深色模式、移动端响应式
行内评论 — 读者可以点击任何段落并留下反馈
审阅模式(当前 vs 时间轴) — 多版本文档默认为当前草稿反馈,并可一键访问完整的时间轴历史记录
AI 自动格式化 — 丢入原始文本;它会输出为整洁的 Markdown
MCP 服务器 — 直接从 Claude、Cursor、VS Code 或任何 MCP 客户端共享文档
OpenClaw 技能 — 可在 ClawHub 上用于 AI 代理工作流
短链接 — 每个文档都会获得一个紧凑的
plsrd.me/v/xxxURL原始访问 — 从任何共享链接下载原始
.md文件版本时间轴 + 安全恢复 —
/v/:id/versions+/v/:id/history+ 优先归档的恢复 API,实现快速回滚Clerk 身份验证基础 — GitHub/Google 登录集成 + Clerk 托管的电子邮件备选方案 + 后端身份验证验证工具
所有权模型(第 2 阶段) — 文档可以关联到 Clerk 用户 (
owner_user_id),同时保留匿名流程我的链接仪表板(第 3 阶段) — 经过身份验证的
/my-links页面,支持搜索/排序/分页以及快速复制/打开操作旧链接认领(第 4 阶段) — 已登录用户可以通过证明原始
admin_token来认领旧的匿名链接零配置网站演示 — 在浏览器中尝试无需账户或 API 密钥
🚀 快速开始
网页
前往 plsreadme.com,粘贴你的 Markdown,点击分享。
身份验证路径与发布状态
推荐顺序:
先在浏览器中尝试 — 最快的演示路径,无需 MCP 设置。
在客户端支持验证后使用托管远程 MCP 配合浏览器登录。
在无法进行交互式登录时使用 API 密钥 / 本地 MCP 备选方案。
当前发布状态:
流程 | 当前状态 | 所有权规则 | 来源标签 |
匿名网站演示 | 通过浏览器验证的演示流程现已可用 |
|
|
已登录网站创建 | 现已可用 | 文档创建时将已登录的 Clerk 用户作为所有者 |
|
托管远程 MCP 配合浏览器登录 | 在受支持的客户端中现已可用 | 浏览器登录后为已登录用户创建归属文档 |
|
托管远程 MCP 配合 API 密钥 | 作为兼容性备选方案现已可用 | 为 API 密钥所有者创建归属文档 |
|
本地 npm MCP 配合 API 密钥 | 现已可用,推荐用于本地 stdio 设置 | 为 API 密钥所有者创建归属文档 |
|
本地 npm MCP 匿名备选方案 | 仅在明确选择加入时可用 | 除非后续认领/保存,否则保持匿名 |
|
托管远程 MCP 发布说明:
https://plsreadme.com/mcphttps://plsreadme.com/sse
这些托管的远程 MCP 路由在代码中通过 OAuth 保护的浏览器登录运行,包括 /authorize、/oauth/token 和 /oauth/register。
操作说明:
D1
doc_create_events是跨网页、托管 MCP 和本地 MCP 流程的规范创建归属表。docs.raw_view_count跟踪每次渲染点击,而docs.view_count保留用于疑似人类的阅读。请参阅
docs/runbooks/auth-surface-monitoring.md获取生产查询集和响应步骤。访问令牌有效期约为
1 小时刷新令牌有效期约为
30 天重新连接同一客户端会替换旧的授权
退出网站登录本身不会撤销现有的编辑器授权
此仓库现已连接到名为
OAUTH_KV的专用 Cloudflare Workers KV 绑定
当客户端不支持浏览器登录时,请从 /my-links 创建个人 API 密钥,并使用托管远程标头备选方案或本地 npx -y plsreadme-mcp 软件包。
网站演示信任模型现状:
/api/create-link上的匿名网站创建需要短期的浏览器验证授权已登录网站创建跳过该授权,保持低门槛
创建后 UI 现在分支为
保存到我的账户、连接你的编辑器和复制链接
API
curl -X POST https://plsreadme.com/api/render \
-H "Content-Type: application/json" \
-d '{"markdown": "# Hello World\n\nThis is my doc."}'{
"id": "abc123def456",
"url": "https://plsreadme.com/v/abc123def456",
"raw_url": "https://plsreadme.com/v/abc123def456/raw",
"admin_token": "sk_..."
}保存 admin_token — 你在编辑或删除时需要它:
# Update
curl -X PUT https://plsreadme.com/v/abc123def456 \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{"markdown": "# Updated content"}'
# Delete
curl -X DELETE https://plsreadme.com/v/abc123def456 \
-H "Authorization: Bearer sk_..."版本时间轴 + 安全恢复
使用时间轴端点在 AI 迭代周期中查看修订上下文:
curl https://plsreadme.com/v/abc123def456/versions{
"id": "abc123def456",
"current_version": 5,
"total_versions": 5,
"versions": [
{ "version": 5, "is_current": true, "raw_url": "https://plsreadme.com/v/abc123def456/raw" },
{ "version": 4, "is_current": false, "raw_url": "https://plsreadme.com/v/abc123def456/raw?version=4" }
]
}如果 AI 编辑导致文档回退,请恢复之前的快照(优先归档,非破坏性):
curl -X POST https://plsreadme.com/v/abc123def456/restore \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{"version": 4}'恢复操作与更新一样受到速率限制(目前每个执行者密钥 60 次/小时),以减少滥用。
对于由已通过身份验证的 Clerk 用户拥有的文档,更新/删除/恢复也需要该所有者会话(以防止跨用户修改),而匿名文档仅使用 admin_token 即可继续工作。
审阅模式使用说明(先显示当前草稿,按需显示时间轴)
文档查看器现在公开了评论审阅控件:
当前草稿 — 仅显示绑定到最新文档版本的评论(当文档有多个版本时为默认值)。
时间轴 — 显示完整的跨版本评论历史记录。
你可以直接从 API 获取相同的模式:
# Latest-version comments only
curl "https://plsreadme.com/api/comments/abc123def456?view=current"
# Full timeline comments (default API behavior)
curl "https://plsreadme.com/api/comments/abc123def456?view=all"查看器链接在 URL 中保留模式以供可共享的审阅上下文使用:
https://plsreadme.com/v/abc123def456?view=currenthttps://plsreadme.com/v/abc123def456?view=timeline
要将旧的匿名链接认领到你的已登录账户中:
curl -X POST https://plsreadme.com/api/auth/claim-link \
-H "Authorization: Bearer <clerk-session-jwt>" \
-H "Content-Type: application/json" \
-d '{"id":"abc123def456","adminToken":"sk_..."}'MCP (AI 编辑器)
目前的建议:
当你的客户端干净地支持时,使用托管远程 MCP 配合浏览器登录
当远程身份验证不可用或在客户端中不便时,使用个人 API 密钥备选方案
为了最安全的 stdio 路径,使用带有
PLSREADME_API_KEY的本地plsreadme-mcp软件包
将你的编辑器连接到 plsreadme 并通过自然语言共享文档:
“将此 README 分享为 plsreadme 链接” “将我的 PRD 变成一个可共享的页面” “将这些会议纪要变成一个可读的链接”
MCP/代理自动审阅循环与 /versions
对于迭代式 AI 写作流程(草稿 → 批评 → 修改),代理可以将 /v/:id/versions 作为事实来源:
为人类保留规范的可读 URL (
/v/:id)。在迭代之间轮询
/v/:id/versions。将
current_version与上次审阅的版本进行比较。如果发生更改,获取最新版本的
raw_url并运行审阅检查。如果质量回退,可选择使用管理员令牌 + 所有者会话触发
/v/:id/restore。
这为自动化提供了确定性的修订跟踪,而无需抓取 HTML。
请参阅 docs/ai-iteration-versioning.md 获取完整手册。
🔌 MCP 设置
客户端兼容性矩阵
截至 2026 年 4 月 5 日:
客户端 | 推荐路径 | 浏览器登录支持 | API 密钥备选方案 | 说明 |
Claude Code | 优先托管远程 MCP | 已验证在线 | 是 | 最佳支持的远程流程;使用 |
Cursor | 优先托管远程 MCP | 已记录,但实际上取决于构建版本 | 是 | 如果你的构建版本未显示 OAuth 提示,请使用标头 |
VS Code | 可用时使用托管远程 MCP | 存在配置,发布情况因构建版本而异 | 是 | 当登录 UX 缺失时, |
Windsurf | 可用时使用托管远程 MCP | 已记录远程支持 | 是 | 当浏览器身份验证尚未公开时,使用 |
Claude Desktop | 本地 npm MCP | 此处无已验证的远程浏览器流程 | 是 | 优先使用 stdio + |
原始 HTTP / 脚本 | 托管远程标头模式 | 无 | 是 | 直接发送 |
托管远程登录(受支持的客户端)
Claude Code:
claude mcp add --transport http plsreadme https://plsreadme.com/mcpCursor:
{
"mcpServers": {
"plsreadme": {
"url": "https://plsreadme.com/mcp"
}
}
}VS Code:
{
"servers": {
"plsreadme": {
"type": "http",
"url": "https://plsreadme.com/mcp"
}
}
}Windsurf:
{
"mcpServers": {
"plsreadme": {
"serverUrl": "https://plsreadme.com/mcp"
}
}
}生命周期说明:
访问令牌 TTL 约为
1 小时刷新令牌 TTL 约为
30 天重新连接同一客户端会替换旧的授权
退出登录会结束网站会话,但不会自动撤销现有的编辑器授权
使用
GET /api/auth/mcp-grants和DELETE /api/auth/mcp-grants/:grantId来审计或撤销托管编辑器授权
如果你的客户端支持浏览器登录,请优先选择此路径。这是最干净的设置,并自动将归属文档绑定到你的网站账户。
托管远程 API 密钥备选方案
首先从 https://plsreadme.com/my-links 创建个人 API 密钥,然后使用以下其中一种:
Claude Code:
claude mcp add --transport http \
--header "Authorization: Bearer $PLSREADME_API_KEY" \
plsreadme-api https://plsreadme.com/mcpCursor:
{
"mcpServers": {
"plsreadme-api": {
"url": "https://plsreadme.com/mcp",
"headers": {
"Authorization": "Bearer ${env:PLSREADME_API_KEY}"
}
}
}
}VS Code:
{
"inputs": [
{
"type": "promptString",
"id": "plsreadme-api-key",
"description": "plsreadme personal API key",
"password": true
}
],
"servers": {
"plsreadme-api": {
"type": "http",
"url": "https://plsreadme.com/mcp",
"headers": {
"Authorization": "Bearer ${input:plsreadme-api-key}"
}
}
}
}Windsurf:
{
"mcpServers": {
"plsreadme-api": {
"serverUrl": "https://plsreadme.com/mcp",
"headers": {
"Authorization": "Bearer ${env:PLSREADME_API_KEY}"
}
}
}
}原始远程端点用户:
curl -i https://plsreadme.com/mcp \
-H "Authorization: Bearer $PLSREADME_API_KEY"本地 npm 备选方案
Claude Code:
claude mcp add --transport stdio \
--env PLSREADME_API_KEY=$PLSREADME_API_KEY \
plsreadme -- npx -y plsreadme-mcpCursor:
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"plsreadme": {
"command": "npx",
"args": ["-y", "plsreadme-mcp"],
"env": {
"PLSREADME_API_KEY": "${env:PLSREADME_API_KEY}"
}
}
}
}VS Code:
添加到 .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "plsreadme-api-key",
"description": "plsreadme personal API key",
"password": true
}
],
"servers": {
"plsreadme": {
"command": "npx",
"args": ["-y", "plsreadme-mcp"],
"env": {
"PLSREADME_API_KEY": "${input:plsreadme-api-key}"
}
}
}
}Claude Desktop:
添加到 claude_desktop_config.json:
{
"mcpServers": {
"plsreadme": {
"command": "npx",
"args": ["-y", "plsreadme-mcp"],
"env": {
"PLSREADME_API_KEY": "<paste-your-personal-api-key>"
}
}
}
}Windsurf:
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"plsreadme": {
"command": "npx",
"args": ["-y", "plsreadme-mcp"],
"env": {
"PLSREADME_API_KEY": "${env:PLSREADME_API_KEY}"
}
}
}
}说明:
本地 stdio 现在默认期望
PLSREADME_API_KEY,以便新文档具有归属权显式的旧版匿名模式仍然存在,使用
PLSREADME_ALLOW_ANONYMOUS=1从 https://plsreadme.com/my-links 创建你的密钥
迁移现有的匿名 MCP 设置
如果你已经匿名使用了 plsreadme-mcp:
从
/my-links创建个人 API 密钥。将
PLSREADME_API_KEY添加到你的 MCP 客户端配置中。仅将
PLSREADME_ALLOW_ANONYMOUS=1作为旧工作流的临时兼容性拐杖保留。如果你仍有旧的
admin_token,稍后使用/api/auth/claim-link认领旧的匿名链接。
迁移规则很简单:
新的自动化/编辑器创建默认应具有归属权
匿名本地 MCP 现在仅限旧版且需显式开启
网站演示路径即使在编辑器身份验证变得更严格时,仍保持零配置
add-mcp
npx add-mcp plsreadme-mcpOpenClaw
clawhub install plsreadmeDocker (用于 MCP 注册表 / 列表检查)
在干净的容器中构建并运行 stdio MCP 服务器:
docker build -t plsreadme-mcp:local .
docker run --rm -i plsreadme-mcp:local容器化服务器使用 stdio(无需端口,无需环境变量)。
🛠 MCP 工具
工具 | 功能 |
| 通过路径共享本地文件 → 返回可共享链接。重新共享会更新同一链接。 |
| 直接共享 Markdown 或纯文本 → 返回可共享链接 |
| 使用新内容更新现有文档(按 ID 或文件路径) |
| 永久删除共享文档(按 ID 或文件路径) |
| 列出你从此项目共享的所有文档 |
提示词:
share-document— 将内容共享为可读链接的引导流程refactor-and-share— 使用你的 AI 模型将原始文本重构为精美的 Markdown,然后共享它
纯文本输入?没问题 — MCP 会自动将其结构化为 Markdown,或者你可以使用 refactor-and-share 提示词来利用 AI 的推理能力获得精美的结果。
.plsreadme 记录文件
MCP 服务器会在你的项目根目录下的 .plsreadme JSON 文件中跟踪你共享的文档。这存储了编辑和删除所需的文档 ID、URL 和管理员令牌。
**⚠️ 将 `.pls
Available Tools
5 toolsplsreadme_deleteADestructive
Delete a plsreadme document permanently.
Requires either the document ID or the original file path. Looks up the admin token from the local .plsreadme record file.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Document ID to delete. | |
| file_path | No | Original file path (looks up the linked doc). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark destructiveHint=true. The description adds that deletion is 'permanently' and reveals that the tool 'Looks up the admin token from the local .plsreadme record file,' which is a behavioral dependency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences: first states the primary action, second provides key constraints. No unnecessary words or repetition. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with no output schema, the description covers the core action, permanence, and a prerequisite. The token lookup detail is helpful. It could mention error handling or confirmation, but overall is adequate for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters having descriptions. The description adds the critical constraint that 'Requires either the document ID or the original file path,' clarifying that they are alternatives, which the schema's optionality does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Delete a plsreadme document permanently.' The verb 'Delete' and the resource 'plsreadme document' are specific. The description distinguishes from siblings (list, share, update) as there is no other delete tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage prerequisite: requires either document ID or file path. However, it does not specify when not to use this tool or offer alternatives to alternatives to deletion. The guidance is minimal but present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plsreadme_listARead-onlyIdempotent
List all plsreadme documents tracked in the local .plsreadme file.
Shows document IDs, titles, URLs, and source files.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the detail that it reads from a local file, which is useful but not essential beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that front-load the core action. Every word serves a purpose, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no parameters and no output schema, the description adequately covers behavior (lists all documents) and return fields. It does not mention sorting or pagination, but given the tool's simplicity, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema, so the description does not need to add parameter details. Schema coverage is 100% by default, and the description provides no contradictory or missing information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifically states the action (list all documents), the resource (plsreadme documents tracked in the local .plsreadme file), and the output fields (IDs, titles, URLs, source files). It clearly distinguishes from sibling operations like delete, share, and update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings. There is no mention of prerequisites or alternatives, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plsreadme_updateAIdempotent
Update an existing plsreadme document with new content.
Requires either the document ID or the original file path. Looks up the admin token from the local .plsreadme record file.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Document ID to update. | |
| file_path | No | Original file path (looks up the linked doc). | |
| markdown | Yes | New markdown content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: authentication via local file, alternative identifiers. Consistent with idempotentHint=true and readOnlyHint=false. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, first states action, second details requirements. No redundant information, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers action, required params, and identification method. Lacks error handling details or return type, but sufficient for a simple update tool with idempotent hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds meaning by clarifying id and file_path are alternatives, not both required. Enhances understanding of parameter relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'existing plsreadme document'. It distinguishes this tool from siblings (delete, list, share) by specifying content update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on required parameters (either id or file_path) and mentions a prerequisite (admin token lookup). Could explicitly state when to use vs alternatives, but siblings are distinct actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.1- Added
plsreadme_delete - Added
plsreadme_list - Added
plsreadme_share_file - Added
plsreadme_share_text - Added
plsreadme_update
TDQS
Scored across 5 tools
Each tool has a distinct purpose: delete, list, share file, share text, update. There is no ambiguity as descriptions clearly differentiate them.
All tools follow the consistent pattern 'plsreadme_verb' with verbs like delete, list, share_file, share_text, update. Naming is uniform and predictable.
With 5 tools covering the core operations of sharing, listing, updating, and deleting documents, the count is well-scoped and appropriate for the service's purpose.
The tool set offers full CRUD-like coverage (create via share, read via list, update, delete) but lacks a direct 'get by ID' tool, though list provides IDs and URLs.
Maintenance
Related MCP Connectors
Publish HTML, Markdown, and multi-file sites as shareable URLs instantly via MCP.
Publish and share access-controlled Markdown documents from any MCP-enabled AI tool.
List, share, upload, and manage Slideless HTML presentations from any MCP host.
MCP server for accessing curated awesome list documentation
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that wraps the rustypaste API, allowing users to upload text, files, and URLs to a rustypaste instance. It supports features such as single-use links, file expiration, and URL shortening.729 npm-

slideless-mcpofficial
FlicenseNot gradedqualityCmaintenanceMCP server that wraps the Slideless HTTP API as tools for listing, sharing, uploading, and managing HTML presentations from any MCP host without installing the CLI.-- AlicenseAqualityBmaintenanceAn MCP server that lets AI publish markdown documents to a clean, themed web UI. One tool call creates a shareable doc.84MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for managing a personal markdown wiki. Provides search, navigation, read, write, delete, and move tools with automatic index.md management.-