基于 Cloudflare Pages + CopyQ + HTTP Shortcuts 的全平台静默云剪切板
本方案实现了**电脑(Linux/NixOS)与手机(Android)**之间的双向、无缝、静默剪切板同步。
- ⚡ 核心特性:无第三方闭源服务、全轻量化处理、静默运行无弹窗阻碍、支持双向选区同步。
服务端
作为数据中转站,利用 Cloudflare KV 存储文本。未找到文本时返回
404状态码,保持数据纯净。
在本地的一个目录下新建文件_worker.js:
export default {
async fetch(request, env) {
const room = new URL(request.url).pathname.split('/').filter(Boolean)[0];
if (!room) return new Response(null, { status: 400 });
if (request.method === "GET") {
const text = await env.CLIPBOARD_KV.get(room);
return new Response(text, { status: text ? 200 : 404 });
}
if (request.method === "POST") {
await env.CLIPBOARD_KV.put(room, await request.text(), { expirationTtl: 86400 });
return new Response(null, { status: 200 });
}
return new Response(null, { status: 405 });
}
};cloudflare中
-
新建 KV 空间:
- 登录 Cloudflare 后台,点击左侧菜单的 KV。
- 点击 Create a namespace(创建命名空间),名字填
CLIPBOARD_KV。
-
创建 Pages 项目:
- 进入 Cloudflare 后台 -> Workers & Pages -> Create -> 选择 Pages -> 起个项目名 -> Upload assets(上传上边的文件夹)-> 部署。
-
绑定 KV 变量(关键步骤):
- 部署完成后,进入该 Pages 项目的后台,点击 Settings(设置) -> Functions(函数)。
- 往下滚动找到 KV namespace bindings(KV 命名空间绑定)。
- 点击 Add binding(添加绑定):
- Variable name(变量名称):严格填写
CLIPBOARD_KV - KV namespace:选择在第一步创建的那个 KV 空间。
- Variable name(变量名称):严格填写
- 保存并重新部署一次(或者随便去后台点一下重新触发部署),让绑定生效。
PC端
Note
- my-copy:抓取本地剪切板并静默推送到云端。
- my-paste:从云端拉取文本
NixOS配置脚本:
(writeShellScriptBin "my-copy" ''
TEXT=$(copyq clipboard)
[ -n "$TEXT" ] && echo -n "$TEXT" | curl -s --data-binary @- https://paste-6bw.pages.dev/${userSettings.username}
'')
(writeShellScriptBin "my-paste" ''
TEXT=$(curl -s -f https://paste-6bw.pages.dev/${userSettings.username})
[ -z "$TEXT" ] && exit 0
copyq copy "$TEXT"
copyq copy text/plain "$TEXT" && copyq select 0
copyq add "$TEXT"
'')- 注意更换链接
- 配合窗口管理器绑定按键
安卓端
Note
通过安卓端
HTTP Shortcuts软件实现一键同步,并将触发器放入**下拉通知栏快捷开关(Quick Settings Tiles)**中。(当然也能通过termux脚本)
动作一:手机同步到云端 (copy)
- Method:
POST - URL:
https://paste-6bw.pages.dev/zxcfdcmv - Request Body Type: 不填
- Body Content:
- 返回体类型:自定义类型
- 请求体:点击右侧变量图标新建个
剪切板内容的变量类型,名字填成clipboard,然后在请求体中选中这个{clipboard}
动作二:云端同步到手机 (paste)
-
Method:
GET -
URL:
https://paste-6bw.pages.dev/zxcfdcmv -
Response Display: 选择
No display (run in background)(后台静默) -
Scripting -> Run on Success (成功后运行):
copyToClipboard(response.body); showToast("已同步到手机剪切板");
可直接导入配置
https://imgbed-5fd.pages.dev/file/files/1790238348714_http_shortcuts.zip