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

2025 年 12 月 10 日
 snso

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

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

🎉 最新进展

📰 入选阮一峰周刊

⭐ GitHub 200+ Stars

📋 关于剪存

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

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

核心特性

  1. JavaScript 脚本支持:使用熟悉的 JavaScript 编写脚本,无需学习新语言
  2. 两种触发方式:
    • 手动执行:通过快捷键或菜单手动触发脚本
    • 自动执行:剪贴板内容保存后自动运行(可配置过滤条件)
  3. 灵活的过滤机制:
    • 按内容类型过滤(文本/图片/URL/JSON 等)
    • 按关键词过滤(支持正则表达式)
  4. 完整的浏览器 API:可以使用 fetch、crypto、Date 等所有浏览器 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 ,这是对我们最大的支持!

5757 次点击
所在节点    分享创造
28 条回复
eluotao
1 月 4 日
感谢你的软件,挺好的。
1 、脚本管理的按钮,直接放到设置 主界面旁边,可以直接点击进入脚本管理界面,更快。适合频繁操作的情况。
2 、可以设置组合按钮,左边是点击进入脚本管理,右边点击新增脚本。
3 、可以自定义脚本的摆放顺序和位置。目前设置顺序好像只要新增脚本,还是会在最前面。按道理设置好 1 2 3 的位置,之后添加都是在脚本的后面才对。

关于脚本搜索 一键添加,后期慢慢优化吧。
snso
1 月 4 日
@eluotao 感谢反馈
脚本顺序的调整,我是放在脚本管理第一列(顺序),那个是输入框是可以自己调整的排序位置
脚本市场现在已经上线了,可以一键安装
eluotao
1 月 4 日
@snso #22



你看我设置的效果,明显是倒序的。
eluotao
1 月 4 日
建议直接改成拖动顺序的方式,不要设置手动设置数字,如果脚本多,数字就不靠谱,每次都要重新设置所有脚本顺序的数字,拖动简单省事。每次添加就默认在最后,需要调整顺序,直接手动拖动即可。
snso
1 月 4 日
@eluotao 哈哈 是的 我就是按倒序排的,我的想法是新加的排在最前面
snso
1 月 4 日
@eluotao 可以的 马上安排
eluotao
1 月 4 日
1 、小建议,针对手动运行的脚本,在软件界面的时候直接可以针对当前的复制的内容,使用快捷键触发运行脚本的窗口选择,然后在通过数字键快速选择某个脚本运行。这样可以减少两次鼠标移动和点击。

操作流程:进入软件界面->选择任意的剪切板历史内容->快捷键触发打开脚本选择窗口->数字键选择相应脚本,无需使用鼠标即可完成,符合大多数 apple 的用户习惯。

至于处理完的数据,是否支持自动复制结果 还是不复制结果,这个不重要,取决于脚本的处理方式。可以设置一个固定的返回变量 copy_text ,只要返回到这个变量 就表示需要复制的处理文本,那可以根据设置触发自动复制,如果只是显示处理结果,那软件默认不执行复制操作。
snso
1 月 4 日
@eluotao
1 、command+r 可以弹出脚本选择框。command+数字 可以选择执行的脚本。 你如果是 windows 系统,快捷键是 control
2 、复制的功能可以在脚本里实现,有提供对应的 API ,csCopyText('要复制的文本内容');

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

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

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

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

© 2021 V2EX