剪存:让剪贴板完成自动化工作(入选阮一峰周刊, GitHub 200+ Stars) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
snso
1.68D
V2EX    分享创造

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

  •  1
     
  •   snso 4 天前 2799 次点击

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

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

    最新进展

    入选阮一峰周刊

    GitHub 200+ Stars

    • 项目在 GitHub 上已获得 200+ Stars (刚刚 200)
    • 感谢每一位支持者的 Star 和反馈!
    • 特别感谢 v 佬们的支持和提供的建议

    关于剪存

    剪存是一个跨平台的剪贴板历史管理工具,基于 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 等),生成真实感的数据。

    适用场景

    • 前端开发时快速生成测试数据
    • API 接口联调时生成模拟响应
    • 数据库填充测试数据

    JWT Token 生成

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

    适用场景

    • API 开发测试
    • 身份验证调试
    • 微服务间通信测试

    时间戳转换

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

    适用场景

    • 日志分析
    • 时间格式转换
    • 调试时间相关问题

    2. 数据处理场景

    Base64 编码/解码

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

    适用场景

    • 图片转 Base64
    • 数据传输编码
    • 配置文件处理

    文本信息提取

    从文本中自动提取邮箱、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. 使用示例脚本

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

    • JSON Mock 数据生成器
    • Base64 编码/解码
    • JWT Token 生成
    • 文本信息提取
    • 钉钉/Pushover 消息推送
    • URL 短链接生成
    • 时间戳转换

    你可以在 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 ,这是对我们最大的支持!

    17 条回复    2025-12-12 22:24:58 +08:00
    rayg0
        1
    rayg0  
       4 天前
    挺有意思的,可扩展空间很大。
    snso
        2
    snso  
    OP
       4 天前
    @rayg0 哈哈 欢迎贡献脚本
    hafuhafu
        3
    hafuhafu  
       4 天前
    剪切板内容可以通过 js 脚本拓展这个想法还是挺好也挺实用的。
    就是作为剪切板历史记录工具本身的功能还是得完善一下。
    zarvin
        4
    zarvin  
       4 天前
    使用了一下,挺好的,已 star
    510908220
        5
    510908220  
       4 天前
    体验了下,不错。
    ikw
        6
    ikw  
       4 天前
    体验了一下,效果确实还可以,有几个地方感觉可以优化一下
    1. 建议用 https://gitlab.com/cznic/sqlite 去掉 cgo 开发体验好很多
    2. CleanShot X 的截图识别成文件了,Paste 是能识别到是图片的,或许可以针对 File 类似多识别一下文件类型?
    snso
        7
    snso  
    OP
       4 天前
    @ikw 感觉你提的建议 学到了新知识,后面更新优化
    BlackkCCCat
        8
    BlackkCCCat  
       4 天前
    终于看到了一个和 Mac 端 pastebot 有类似功能的剪切板 app 了,pastebot 是支持 awk 等命令来扩展剪切板内容,强
    BlackkCCCat
        9
    BlackkCCCat  
       4 天前
    @BlackkCCCat star 了,但是我看目前好像不支持像常规剪切板 app 一样的极简模式或快捷面板( issue 有人提),希望能尽快支持
    snso
        10
    snso  
    OP
       3 天前   1
    @ikw 识别成文件问题已解决发布了
    Wcowin
        11
    Wcowin  
       3 天前
    好强,向你学习 我最近是开发的一款转为 Mac 的粘贴板工具 https://github.com/Wcowin/OneClip
    liuliuliuliu
        12
    liuliuliuliu  
    PRO
       2 天前
    20M 对于一个剪切板工具来说还是大了点……
    litianyunq
        13
    litianyunq  
       2 天前
    参考下 iCopy 这种快捷展示模式可以不(虽然也是参考别人的),大部分情况不需要专门唤起窗口,快捷展示更人性化。
    snso
        14
    snso  
    OP
       2 天前
    @litianyunq 已经安排上了 过几天就可以上了
    stinkytofux
        15
    stinkytofux  
       2 天前
    算了, 实在是不想连剪贴板工具都跑在浏览器上.
    YsHaNg
        16
    YsHaNg  
       2 天前 via iPhone
    阮一峰是啥
    maemolee
        17
    maemolee  
       2 天前
    有点意思,装了看看
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2705 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:26 PVG 22:26 LAX 06:26 JFK 09:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86