剪存:让剪贴板完成自动化工作(入选阮一峰周刊, GitHub 200+ Stars)

2025 年 12 月 10 日
 snso

剪存:让剪贴板成完成自动化工作

一个强大的剪贴板历史管理工具,现已支持自定义脚本功能,让你的剪贴板操作自动化起来!

🎉 最新进展

📰 入选阮一峰周刊

⭐ GitHub 200+ Stars

📋 关于剪存

剪存是一个跨平台的剪贴板历史管理工具,基于 Wails + Vue 3 构建,支持 macOS 和 Windows 。关于基础功能(自动保存、搜索过滤、图片处理等)可以参考之前的推广文。今天重点介绍的是自定义脚本功能——这个让剪存变成的强大。

✨ 自定义脚本功能:让剪贴板更智能

核心特性

  1. JavaScript 脚本支持:使用熟悉的 JavaScript 编写脚本,无需学习新语言
  2. 两种触发方式
    • 手动执行:通过快捷键或菜单手动触发脚本
    • 自动执行:剪贴板内容保存后自动运行(可配置过滤条件)
  3. 灵活的过滤机制
    • 按内容类型过滤(文本/图片/URL/JSON 等)
    • 按关键词过滤(支持正则表达式)
  4. 完整的浏览器 API:可以使用 fetchcryptoDate 等所有浏览器 API
  5. 内置 API 函数:通过 import 导入 csRequest( HTTP 请求)和 csCopyText(剪贴板复制)等函数

🎯 丰富的使用场景

1. 开发场景

📝 JSON Mock 数据生成

复制一个 JSON Schema 或 API 响应模板,自动生成符合格式的 Mock 数据。支持智能识别字段类型(邮箱、手机号、日期、图片 URL 等),生成真实感的数据。

适用场景

🎫 JWT Token 生成

复制用户信息或配置,自动生成 JWT Token ,方便 API 测试和调试。

适用场景

⏰ 时间戳转换

复制时间戳或日期字符串,自动转换为可读格式,支持双向转换。

适用场景

2. 数据处理场景

📤 Base64 编码/解码

快速对文本进行 Base64 编码或解码,支持 Unicode 字符。

适用场景

📝 文本信息提取

从文本中自动提取邮箱、URL 、手机号、身份证号、银行卡号、IP 地址等结构化信息。

适用场景

3. 通知协作场景

💬 钉钉/企业微信消息推送

复制重要信息后,自动推送到钉钉群或企业微信群,实现跨设备通知。

适用场景

📱 Pushover 推送

将剪贴板内容推送到手机,支持优先级设置。

适用场景

4. 内容处理场景

🔗 URL 短链接生成

复制长链接,自动生成短链接,方便分享。

适用场景

🤖 AI 文本分析

复制文本内容,调用 AI API (如阿里云百炼)进行情感分析、内容总结、错别字检测等。

适用场景

5. 工作流自动化场景

📊 数据格式转换

复制不同格式的数据,自动转换为目标格式( CSV ↔ JSON 、Markdown ↔ HTML 等)。

适用场景

🔍 内容验证

复制内容后自动验证格式(邮箱格式、URL 有效性、JSON 合法性等)。

适用场景

💡 实际案例分享

案例 1:前端开发者的 Mock 数据生成器

场景:前端开发时需要大量测试数据,但手动编写太繁琐。

解决方案

  1. 复制 API 返回的 JSON Schema
  2. 运行 Mock 数据生成脚本
  3. 自动生成 10-20 条符合格式的测试数据
  4. 数据包含真实的邮箱、手机号、日期等格式

效果:从 10 分钟手动编写数据 → 3 秒自动生成

案例 2:团队协作的信息同步

场景:开发过程中复制了重要的错误信息或配置,需要及时通知团队成员。

解决方案

  1. 配置钉钉推送脚本
  2. 设置关键词过滤(如包含 "error" 或 "config")
  3. 复制相关内容后自动推送到团队群

效果:重要信息自动同步,无需手动发送消息

案例 3:日志分析的时间戳转换

场景:查看日志时遇到大量时间戳,需要快速转换为可读格式。

解决方案

  1. 复制时间戳
  2. 运行时间戳转换脚本
  3. 自动识别秒级/毫秒级时间戳并转换

效果:无需打开在线工具,一键转换

🛠️ 如何开始使用?

1. 安装剪存

2. 创建你的第一个脚本

  1. 打开剪存应用
  2. 进入设置 → 脚本管理
  3. 点击"新建脚本"
  4. 填写脚本信息(名称、描述、触发时机等)
  5. 编写 JavaScript 代码
  6. 保存并启用

3. 使用示例脚本

项目提供了多个开箱即用的脚本示例:

你可以在 GitHub 仓库 中找到这些脚本,直接复制使用或作为参考。

🎨 脚本编写示例

简单示例:文本转大写

if (item.ContentType !== "Text") {
  return { error: "只支持文本类型" };
}
return item.Content.toUpperCase();

进阶示例:调用外部 API

import { csRequest } from '@clipsave/api';

// 使用内置的 csRequest 函数调用 API (绕过 CORS 限制)
const responseJson = await csRequest(
  'POST',
  'https://api.example.com/process',
  JSON.stringify({ 'Content-Type': 'application/json' }),
  JSON.stringify({ text: item.Content })
);

const response = JSON.parse(responseJson);
return response.body.result;

复制到剪贴板示例

import { csCopyText } from '@clipsave/api';

// 生成结果后自动复制到剪贴板
const result = processData(item.Content);
await csCopyText(result);
return result;

🌟 为什么选择剪存?

  1. 跨平台:支持 macOS 、Windows
  2. 开源免费:MIT 许可证,完全开源
  3. 轻量高效:基于 Go + Vue 3 ,性能优秀
  4. 扩展性强:通过脚本功能无限扩展能力
  5. 隐私安全:数据本地存储,不上传云端
  6. 持续更新:活跃的开发和社区支持

📚 更多资源

🤝 参与贡献

我们欢迎社区贡献更多实用的脚本!如果你有好的脚本想法或已经编写了有用的脚本,欢迎提交 Pull Request 。


让剪贴板成为你的自动化工作流中心,从今天开始! 🚀

如果这个工具对你有帮助,欢迎给项目点个 ⭐ Star ,这是对我们最大的支持!

4877 次点击
所在节点    分享创造
28 条回复
rayg0
2025 年 12 月 10 日
挺有意思的,可扩展空间很大。
snso
2025 年 12 月 10 日
@rayg0 哈哈 欢迎贡献脚本
hafuhafu
2025 年 12 月 10 日
剪切板内容可以通过 js 脚本拓展这个想法还是挺好也挺实用的。
就是作为剪切板历史记录工具本身的功能还是得完善一下。
zarvin
2025 年 12 月 10 日
使用了一下,挺好的,已 star
510908220
2025 年 12 月 10 日
体验了下,不错。
ikw
2025 年 12 月 10 日
体验了一下,效果确实还可以,有几个地方感觉可以优化一下
1. 建议用 https://gitlab.com/cznic/sqlite 去掉 cgo 开发体验好很多
2. CleanShot X 的截图识别成文件了,Paste 是能识别到是图片的,或许可以针对 File 类似多识别一下文件类型?
snso
2025 年 12 月 10 日
@ikw 感觉你提的建议 学到了新知识,后面更新优化
BlackkCCCat
2025 年 12 月 10 日
终于看到了一个和 Mac 端 pastebot 有类似功能的剪切板 app 了,pastebot 是支持 awk 等命令来扩展剪切板内容,强👍
BlackkCCCat
2025 年 12 月 10 日
@BlackkCCCat star 了,但是我看目前好像不支持像常规剪切板 app 一样的极简模式或快捷面板( issue 有人提),希望能尽快支持
snso
2025 年 12 月 11 日
@ikw 识别成文件问题已解决发布了
Wcowin
2025 年 12 月 11 日
好强,向你学习 我最近是开发的一款转为 Mac 的粘贴板工具 https://github.com/Wcowin/OneClip
liuliuliuliu
2025 年 12 月 12 日
20M 对于一个剪切板工具来说还是大了点……
litianyunq
2025 年 12 月 12 日
参考下 iCopy 这种快捷展示模式可以不(虽然也是参考别人的),大部分情况不需要专门唤起窗口,快捷展示更人性化。
snso
2025 年 12 月 12 日
@litianyunq 已经安排上了 过几天就可以上了
stinkytofux
2025 年 12 月 12 日
算了, 实在是不想连剪贴板工具都跑在浏览器上.
YsHaNg
2025 年 12 月 12 日
阮一峰是啥
maemolee
2025 年 12 月 12 日
有点意思,装了看看
diudiuu
1 月 4 日
go 那个 sqlite 驱动换下 cgo 有点恶心
diudiuu
1 月 4 日
snso
1 月 4 日
@canteon 其它地方也用到了 CGO ,sqlite 换了,也不能完全去除 CGO 。然后我开发时没有什么影响( Mac 系统),不知道你那边是什么问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1177926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX