Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qiaomu Page

做好了,就分享。

让 AI 做好的网页,有一个随时能打开、持续能更新的链接。
From your agent. To the web.

中文 · English

体验首页 ↗ · 玩一个真实作品 · 自己部署 · Agent 接入

Deploy with Vercel Deploy to Cloudflare

Verify License: ISC Node.js 24+

Qiaomu Page:复制 Prompt 给 Agent,将做好的网页变成分享链接

一个 Prompt 接入 · 一句话发布 · 一个链接持续更新

从「做出来」到「发给朋友」

你和 AI 做了一个小工具、一份交互报告,或者一整个静态网站。最想做的下一步,是发一个链接给朋友。

Qiaomu Page 把这一步留在原来的对话里:让 Agent 接上你自己的发布服务,发布文件,返回链接。 以后说“更新刚才的网站”,朋友打开的仍是同一个地址。

给自己装一套,也能让朋友共用。每个人都可以直接注册独立身份和发布空间,无需邀请码。初始密码由 CLI 生成并留在用户本机,不经过聊天。

复制首页 Prompt 给 Agent 即可注册和接入;已有账号登录后复制,会连接原来的空间。

先玩一下

以下作品由仓库中的 HTML 原样发布,无需登录即可体验。点击图片打开。

色彩实验室:交互调色板 专注时钟:可交互的倒计时 记忆翻牌:在浏览器里玩配对游戏
色彩实验室
把灵感调成一组配色。
查看源码
专注时钟
给一件事留一段时间。
查看源码
记忆翻牌
一个随手发给朋友的小游戏。
查看源码

更多可发布示例 →

把发布留在对话里

在实例首页复制 Prompt,粘贴给 Codex、Claude Code、Cursor 等具备命令执行能力的 Agent。它读取当前实例的 Skill,安装 CLI,直接注册并连接你的发布空间;不需要邀请码。已有账号登录后复制 Prompt,会连接原来的空间。

你:把这个文件夹发布出去。
   → Agent 上传静态文件,返回分享链接。

你:改好了,更新刚才的网站,保留链接。
   → 原地址更新,旧版本可恢复。

你:分享标题改成「我的周末计划」,再加一张封面。
   → Agent 更新分享设置;你也能在网页后台修改。

首次接入时,Agent 会把账号找回能力一起配好:

Agent:你想用什么用户名?
你:qiaomu
Agent:注册完成。[点击查看初始密码](实际使用时指向你本机的私密文件)
       登录后可在“账号设置”中修改密码。

上面的链接是流程示意,不是固定密码或仓库内文件。真实安装时,CLI 会为每位用户单独生成 12 位初始密码,排除容易混淆的字符,并以 0600 权限保存到本机。

也可以直接说 “发布到 QP”、“更新 QP 上的网站”。Qiaomu Page 是正式产品名,QP 是唯一推荐简称;已注册账号不会被重新注册或重置密码。

这是可用操作的示意,具体链接由你的实例返回。首次安装完成工具接入和账号注册,不会自动上传文件;发布什么始终由你决定。

你想做什么 Qiaomu Page 帮你完成
分享 AI 做好的作品 HTML、Markdown、静态网站文件夹,上传后直接打开
一直用同一个链接 自动分配 用户名.example.com/项目名;重名时才加数字,改标题、改账号、更新内容都保留 URL
放心继续改 重试不重复建站,版本冲突检查,历史恢复、下架与重新发布
让朋友一起用 直接注册独立身份和空间;管理员可查看和停用成员
让分享卡片更好看 按需设置 OG 标题、摘要和封面,按需开启搜索收录
在对话里管理账号 首次只询问用户名,初始密码私密落盘;以后可在对话或后台修改
掌握自己的数据 Docker / VPS / Cloudflare / Vercel,私有存储,可备份与恢复

发布的是什么,打开的就是什么。 默认保留原始 HTML,不加水印、平台署名或推广。分享增强与搜索收录由作者主动开启,已有网页元信息优先。

网页端,同样顺手

不想输入命令,也能直接上传、更新作品、恢复版本和管理朋友。

Qiaomu Page 桌面首页:一屏完成发布入口展示 Qiaomu Page 390px 手机首页

账号设置:修改用户名或替换初始密码

初始密码只是为了让账号可登录、可找回。用户查看本地密码文件后登录,即可在“账号设置”换成自己的密码;作品、稳定链接和 Agent 连接不变。

看看分享设置与朋友邀请

分享标题、摘要、封面与收录设置

输入备注,为朋友生成独立邀请 Prompt

截图来自隔离的演示数据,实际界面截图由浏览器验收脚本生成。

快速开始

推荐:Docker,自有数据,一套跑起来

需要 Docker 与 Compose v2;无需在宿主机安装 Node.js。首次构建时间取决于网络和设备。

git clone https://github.com/joeseesun/qiaomu-page.git
cd qiaomu-page

docker run --rm --user "$(id -u):$(id -g)" \
  -v "$PWD:/workspace" -w /workspace \
  node:24.20.0-bookworm-slim node scripts/setup.js --docker

docker compose --env-file .env.docker up -d --build --wait

打开 本地首页。然后获取五分钟有效、仅可使用一次的管理员登录链接:

docker compose --env-file .env.docker exec -T quickshare \
  node bin/qiaomu-page.js dashboard --url http://127.0.0.1:3000

登录后即可发布作品、设置账号或邀请朋友。没有通用默认密码;随机管理员密钥保存在本机 .env.docker,请私密保存。公网使用需配置 HTTPS 与对应 BASE_URL。

完整 Docker 指南 →

一键部署到云端

Deploy with Vercel Deploy to Cloudflare

点击按钮,在自己的账号下创建仓库和云服务。Vercel 已预选 Turso + 私有 Blob;Cloudflare 从配置创建 Durable Object + 私有 R2。按向导保存管理员密钥并确认平台资源,完成后让 Agent 接入。

安装与首次管理员接入 → · 验收范围

也可以让 Agent 用 CLI 安装

克隆仓库后,使用 Node.js 24+ 安装依赖,选择一个平台执行:

npm ci --ignore-scripts

# Cloudflare Workers + Durable Objects + R2
npm run install:cloudflare -- qiaomu-page

# 或:Vercel + Turso + 私有 Blob
npm run install:vercel -- qiaomu-page

安装脚本创建或复用资源、生成并保存管理员密钥,完成后输出访问地址。需要你自己的平台账号;首次登录、服务条款和可能涉及的计费开通由本人确认。qiaomu-page 可换成自己的项目名;已有安装升级时沿用原名。

CLI 安装与云端运行已实测。按钮提供官方安装向导;登录、套餐和条款由本人确认。

云端安装、管理员登录与恢复 →

本地开发:Node.js 24+
npm ci
npm run setup
npm start

访问本地首页。另开终端运行 node bin/qiaomu-page.js dashboard 获取本地管理员登录链接。.env 和 Docker 的 .env.docker 独立保存。

已连接 Agent?CLI 也能独立用

下面的 qiaomu-page.js 指实例提供的独立 CLI 文件,使用 Agent 安装时记录的路径:

node qiaomu-page.js whoami --json
node qiaomu-page.js publish ./dist
node qiaomu-page.js update ./dist
node qiaomu-page.js publish ./dist --new
node qiaomu-page.js access RETURNED_SLUG --mode link
node qiaomu-page.js share RETURNED_SLUG --name Friend --expires 7d --output ./private-share.json
node qiaomu-page.js list --json
node qiaomu-page.js versions RETURNED_SLUG
node qiaomu-page.js account --json

RETURNED_SLUG 用发布时返回的实际值替换。未配置实例地址时,CLI 会停止并提示登录,不会连接到别人的服务。新安装使用 qiaomu-page Skill、CLI 和配置名;旧 quickshare 命令、Skill 与配置仍可迁移复用,已有连接无需重建。见命名与兼容性。

CLI 1.10 会在首次发布时自动选择良好的作品标题:--title 优先,否则读取 HTML <title>、首个 <h1> 或 Markdown 一级标题,最后才使用经过整理的源文件名。更新时保留已有作品标题,除非明确传入新的 --title。这些都只是 Qiaomu Page 元数据,不会改写原始 HTML、Markdown 或构建产物;账号用户名也不会从作品推导或修改。发布前可运行 node qiaomu-page.js check SOURCE --json 检查浏览器存储、Service Worker、Cookie、顶层跳转和管理 API 等运行兼容性风险。

推荐配置 ACCOUNT_ORIGIN_TEMPLATE=https://{handle}.example.com,公开地址会是 https://用户名.example.com/项目名/。账号 handle 在第一次分配后固定;项目 path 从标题提炼,只在重名时追加 -2、-3,也可在首次发布时用 CLI --path 或网页“项目短地址”指定。改用户名、标题和内容都不会换链接。同一账号的公开作品共享该账号 origin 的本地存储,不同账号仍由子域隔离;管理 Cookie/API 和 Service Worker 始终不可用。旧 /s/slug 与旧 CONTENT_ORIGIN_TEMPLATE 作品子域继续兼容并跳转至首选短网址。

不需要记 CLI 命令,可以直接对 Agent 说:「发布这个网页到 QP」「更新 QP 上的这个作品,保持链接不变」「列出我在 QP 上的作品」「下架这个作品」「恢复刚才下架的作品」「设为仅自己可见」「生成一个 7 天有效的分享链接」。

项目关联、错误恢复、访问模式与升级注意事项见CLI 与分享权限。分享文件包含只读访问地址,应保存在发布目录之外。

数据放在哪里

部署方式 数据库 文件存储 验证范围
Docker / VPS SQLite 或 libSQL 持久目录 / 私有 S3 容器安装、发布、重建保留数据;libSQL + MinIO 集成测试
Cloudflare Workers SQLite Durable Object 私有 R2 官方 CLI 部署、满尺寸上传、重部署保留数据、PITR 恢复
Vercel Turso / libSQL 私有 Vercel Blob 官方 CLI 部署、网页分块上传、重部署保留数据、导出恢复
flowchart LR
  A[Agent / CLI] --> C[身份与权限检查]
  B[网页后台] --> C
  C --> D[账号 · 稳定地址 · 版本索引]
  C --> E[私有文件存储]
  D --> F[分享链接]
  E --> F
  F --> G[隔离运行的静态网页]
Loading

文件先写入不可变对象,再用事务更新索引。分享链接经过发布状态检查;旧入口与受限内容运行于 opaque sandbox,配置账号内容域后,公开作品可在各自账号子域使用浏览器本地存储。网页会话与 Agent 使用不同的凭据机制,普通成员只能管理自己的内容。

架构说明 · 存储与迁移 · 安全策略

使用前了解这些

  • 静态发布:不运行后端 Node、Python、PHP,也不托管数据库型应用。前端项目先构建,再上传静态产物。
  • 内容大小:每次最多 100 个文件 / 8 MiB,单文件最多 5 MiB,每位成员最多 100 个站点。大文件自动分块上传。
  • 访问权限:默认凭普通链接访问、不进入展厅。可通过 Agent 改为「仅自己」或「受限链接」,并设置分享链接的有效期与撤销。受限链接可被转发。
  • 网页隔离:任何作品都不开放管理站 Cookie、管理 API 或 Service Worker。未配置内容域时 localStorage 不可用;配置账号内容域后,同一账号的公开作品共享账号 origin 的 localStorage,不同账号仍由子域隔离。静态资源建议使用相对路径。
  • 运行成本:开源代码使用 ISC 许可;云平台、域名与存储费用由部署者承担,免费额度以各平台当前规则为准。
  • 发布形态:目前从源码安装,尚未提供预构建容器镜像。默认 SQLite 使用单实例和持久卷。
常见问题

第一次要提供什么? 不需要邀请码,只需告诉 Agent 想要的用户名。CLI 会生成初始密码并保存到用户本机的私密文件,聊天中不显示密码。用户可点击 Agent 返回的真实本地文件链接查看,登录后再在“账号设置”修改。

CLI 支持作品的增删改查吗? 支持创建、列表与单项读取、原链接更新、历史版本和回滚。删除采用可恢复下架:unpublish 停止公开访问,restore 恢复,不提供容易误操作的永久删除。

旧的 quickshare 命令还能用吗? 可以。新安装使用 qiaomu-page,旧命令、环境变量和配置路径作为兼容层保留。

提示没有配置服务地址? 使用你自己实例的首页 Prompt 接入,或查看 node qiaomu-page.js login --help。不要把管理员密钥发给朋友。

更新后链接会变吗? CLI 1.6 起,同一来源的 publish 自动更新已关联站点,update 只更新、不新建。明确另建时用 publish --new。旧项目先用 link SLUG SOURCE 关联已有站点。

能替代通用应用托管吗? 当前面向个人和朋友分享静态作品。需要服务器代码、登录型前端存储或更大文件时,应选择匹配该需求的部署方式。

开发与贡献

欢迎安装反馈、可复现的 Bug 和聚焦的小范围 PR。读贡献指南、行为准则;安全问题请走私密报告。

npm run check
npm test
npm run verify:ui          # 需要 Chrome
npm run verify:published -- https://your-public-work.example/ # 真实渲染、脚本错误与桌面/手机溢出
npm run verify:docker     # 需要 Docker
npm run verify:backends   # libSQL + MinIO 集成验收
npm run verify:cloudflare # 本地原生 Workers 验收

当前发布通过 74 项自动化测试与桌面 / 390px 浏览器验收。CI 持续验证 Node、Docker、libSQL / S3 与 Workers;实际云部署和恢复记录见验收范围。

代码导览
目录 用途
server.js / lib/ 发布 API、账号、权限、存储与分享设置
views/ / public/showcase/ 网页首页、后台与作品展厅
bin/qiaomu-page.js / lib/agent.js 独立 CLI 与实例生成的 Agent Skill
cloudflare/ / vercel/ 云平台运行时
scripts/ / test/ 安装、备份、迁移与验收
examples/ 可直接发布的静态作品

下一步:完成全新账号的浏览器按钮安装验收、提供预构建容器镜像,继续缩短首次部署流程。

来源与作者

Qiaomu Page 专注于 Agent 发布与可自行安装的服务,交互理念受到 here.now 启发。沿用 ISC 代码许可,Geist 与 Noto Sans SC 字体遵循各自的 SIL OFL;详见 LICENSE 与 NOTICE。历史命名与升级兼容见命名与兼容性。

由 向阳乔木 制作和维护。把 AI 做成能真正用上的工具。

个人网站 · 博客 · 乔木推荐 · X @vista8 · GitHub
微信公众号:向阳乔木推荐看

About

把 AI 做好的网页,变成持续可更新的链接。邀请朋友,一句话发布。| Agent-first static publishing. Self-host, invite friends, keep your links.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages