乐于分享
好东西不私藏

一行命令,让 AI 的输出直接发布公网

一行命令,让 AI 的输出直接发布公网

AI Agent 跑完了分析任务,输出了一个漂亮的 CSV 文件。然后呢?——发附件?截图?还是把几千行数据粘贴到聊天窗口里?

这个”最后一公里”问题,是目前 AI 工作流里最被忽视的痛点之一。数据生产出来了,但如何优雅地”交付”,始终没有一个真正顺滑的答案。

直到出现了 easl(发音同 “easel”,画架)。


它到底做了什么?

核心逻辑极其简单:把任意数据文件一键发布成一个公开链接,访问者用浏览器即可看到带交互的渲染结果,无需登录、无需安装任何东西。

# 三秒发布一个 CSV 报告
$ easl publish data.csv --title "Q4 Results" --open
# → https://warm-dawn.easl.dev
# 管道直接发布 JSON
$ cat logs.json | easl publish --type json
# 或者用 REST API
$ curl -X POST https://api.easl.dev/publish \
    -H "Content-Type: application/json" \
    -d '{"content": "# 报告标题\n...", "contentType": "text/markdown"}'

它能自动识别文件格式,并用最合适的方式呈现:

格式
渲染效果
CSV
可排序表格,固定表头,斑马条纹
Markdown
完整排版,代码高亮,表格渲染
JSON
可折叠树状视图,语法高亮,一键展开全部
Mermaid .mmd
流程图、时序图、甘特图即时渲染
SVG
净化后可缩放查看(脚本自动剥除)
HTML
原样托管,不加任何包装
PDF
嵌入式 Viewer 呈现
图片 .png/.jpg/.gif/.webp
响应式居中查看

8 种格式,零配置,全部自动识别。

背后是 Cloudflare Workers + R2 + D1 的边缘网络,全球分发,访问速度不成问题。


快速上手

方式一:CLI 命令行

# 安装
curl -fsSL https://easl.dev/install.sh | sh
# 发布文件
easl publish report.md
# => https://calm-river.easl.dev
# 更多用法
easl publish data.csv --title "Q4 Results" --open
cat logs.json | easl publish --type json
easl list   # 查看已发布的页面

方式二:接入 MCP,让 Agent 自己发布

这是 easl 最聪明的设计——把自己做成 MCP 工具,直接嵌入 AI Agent 的工作流。

在 Claude Desktop、Cursor、Windsurf 等工具的 MCP 配置文件里加入:

{
  "mcpServers": {
    "easl": {
      "command": "npx",
      "args": ["-y", "@easl/mcp"]
    }
  }
}

之后直接对 Agent 说:”帮我把这份 CSV 发布成一个可以分享的表格页面”,它就会自动调用工具,返回链接,全程无需手动干预。

MCP 提供了 5 个工具:

工具
功能
publish_content
发布原始内容字符串 → 链接,最快路径
publish_file
从磁盘发布单个文件,自动识别格式
publish_site
发布整个目录为多页站点
list_sites
列出当前会话发布的所有页面
delete_site
按 slug 删除已发布的页面

方式三:给 Agent 注入技能知识

npx skills add AdirAmsalem/easl

支持 Claude Code、Cursor、Codex、ChatGPT、Gemini CLI 等主流 Agent 工具,让 Agent 内置 easl 的用法知识,调用更准确。

方式四:直接调用 REST API

Base URL:https://api.easl.dev

方法
路径
说明
POST
/publish
发布内容,支持单文件或多文件数组
GET
/sites/:slug
获取页面元数据
DELETE
/sites/:slug
删除页面(需 X-Claim-Token 请求头)
POST
/feedback
提交反馈

它真正适合的场景

场景一:AI Agent 的交付尾声

Agent 跑完爬取、分析、总结任务后,直接调用 publish_content,把结果发布成页面,最后回复用户一个链接。这是 easl 的核心设计场景。

场景二:临时数据分享

分析师跑完一个 SQL 查询,想让同事快速看一眼,不用发附件、不用拉权限、不用搭服务。一条命令,发链接,看完可以删。

场景三:CI/CD 流水线的可视化产物

在 GitHub Actions 末尾把测试报告、覆盖率数据发布成链接,PR review 时直接点开查看,而不是下载附件再本地打开。

场景四:架构图快速分发

Mermaid 流程图、系统架构 SVG 画完后,对方没有对应的渲染工具?发布成链接,浏览器直接看,无需任何安装。

场景五:轻量内容临时发布

写了一段技术文档想临时分享给客户,又懒得搭博客。easl 就是一次性的 Notion——发完即走,不需要维护。


技术架构

easl 以单个 Cloudflare Worker 的形式运行在边缘网络上:

Hono 路由框架,处理 API 请求、落地页、文档和子域名通配服务
R2 对象存储,存放上传的文件内容
D1(SQLite) 追踪页面元数据和版本历史
KV 缓存渲染好的 HTML Shell,加速访问

当访问者打开 warm-dawn.easl.dev 时,Worker 检测文件类型,生成对应的 HTML Shell,并将原始数据嵌入其中由客户端水合渲染。

packages/  worker/      → Cloudflare Worker(路由、智能渲染、文件服务)  cli/         → CLI 工具(npm: @easl/cli)  mcp-server/  → MCP 服务端(npm: @easl/mcp,stdio 传输,5 个工具)

自托管部署

不想依赖官方服务?easl 完全开源,可以部署在自己的 Cloudflare 账户下。

前置条件: Node.js ≥ 20、Cloudflare 账户、wrangler CLI

第一步:克隆并安装依赖

git clone https://github.com/AdirAmsalem/easl.git
cd easl
pnpm install

第二步:创建 Cloudflare 资源

# 创建 KV 命名空间(用于缓存)
wrangler kv namespace create SITES_KV
# 创建 R2 存储桶(用于文件存储)
wrangler r2 bucket create easl-content
# 创建 D1 数据库(用于元数据)
wrangler d1 create easl-db

第三步:配置

将上一步得到的资源 ID 填入 packages/worker/wrangler.toml,同时配置你自己的域名。

第四步:初始化数据库

cd packages/worker
pnpm db:migrate

第五步:部署

pnpm deploy

部署完成后,将 MCP 配置里的 EASL_API_URL 环境变量指向你自己的 Worker 地址即可:

EASL_API_URL=https://your-worker.your-domain.com

本地开发调试

pnpm dev    # 启动本地开发服务器(wrangler dev)
pnpm test   # 运行测试
pnpm build  # 构建所有包

本地开发使用路径路由代替子域名:

API:http://localhost:8787/publish
查看页面:http://localhost:8787/s/:slug
文档:http://localhost:8787/docs

优点与局限

值得称赞

零配置,真正一行命令解决问题
8 种格式自动识别,渲染效果完善
Cloudflare 边缘网络,全球访问快
MCP 原生支持,嵌入 Agent 工作流无缝衔接
完全开源(MIT),支持自托管

需要留意

官方服务发布的内容默认公开,暂无私有选项(自托管可自行控制)
定位是临时/短期分享,不适合需要长期维护的内容
目前仍是个人项目,稳定性依赖 Cloudflare 免费套餐

小结

easl 解决的是一个看起来很小、但实际上每天都在困扰开发者和 AI 用户的问题:数据生产出来了,怎么体面地给别人看?

它不试图成为 Notion,不试图成为 Google Sheets,只做好这一件事:把任意格式的数据,变成任何人都能直接在浏览器里查看的漂亮链接。

在 AI Agent 越来越普及的今天,这个”最后一公里”的工具,比你想象的更有价值。


项目地址:github.com/AdirAmsalem/easl · MIT License