SuperAPI AI 工具集

paste

办公与效率

查看项目

更新于 10-15 16:37

技能介绍

用途

paste 用于清理和重新排版内容,通常是从终端复制出来的文本,使其适合粘贴到 Slack、Notion、Twitter/X、LinkedIn、邮件、GitHub 或纯文本等目标。它读取剪贴板内容,去除终端噪声,按目的地规则转换格式,然后把结果写回剪贴板并在对话中预览。

主要能力

  • 内容获取:优先使用用户在提示中直接提供或此前对话中出现的内容;否则读取系统剪贴板;两者都为空时询问用户要粘贴什么。
  • 目的地解析:根据调用方式确定目标,如 /paste slack、/paste notion、/paste twitter(或 x)、/paste linkedin(或 li)、/paste email、/paste email rich(或 email html)、/paste github(或 gh)、/paste markdown(或 md)、/paste html。不带参数时默认为 plain。若含义不明确则询问。各目的地的具体规则记录在 references/destinations.md。
  • 密钥扫描:在任何清理或复制之前,先按 references/secret-patterns.md 中的模式扫描。命中时停止、以掩码形式(仅显示前 4 位和后 4 位)报告检测到的类型,并询问继续、脱敏(替换为 [REDACTED])还是中止,默认中止。
  • 通用清理:去除 ANSI 转义码(如 \x1b\[[0-9;]*[a-zA-Z] 及相关颜色、光标移动、屏幕控制码);去除制表框线字符(如 ╭ ─ ╮ │ ╰ ╯ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ 等),视上下文替换为简单等价符号(-、|)或直接删除;去除终端提示符残留(行首为 $、>、❯、%、# 且看起来像 shell 提示时);将回车符(\r)替换为 \n 或删除;去除每行行尾空白;把连续 3 行以上空行压缩为 2 行。
  • 目的地规则:读取 references/destinations.md 并应用对应的转换。

使用方式

调用形式为 /paste 加可选目的地参数。输出行为按目的地不同:

  • plain / slack / notion / twitter / linkedin / email / github:在对话中以代码块显示预览;执行剪贴板写入流程,且预览以读回的内容为准。
  • email rich:渲染为 HTML,写入 /tmp/paste-<timestamp>.html 并在浏览器打开(macOS 用 open,Linux 用 xdg-open,Windows 用 start)。跳过剪贴板,由用户从浏览器复制以保留富文本。
  • markdown:在对话中直接渲染清理后的 markdown,同时通过写入流程把原始 markdown 复制到剪贴板,并可询问是否也以 HTML 打开。
  • html:渲染为 HTML,写入临时文件并在浏览器打开,跳过剪贴板。

剪贴板写入流程:用文件写入工具把清理后内容写到临时文件(如 /tmp/paste-<slug>.txt),不要通过 shell heredoc 或 echo 管道写入,因为某些 agent 环境会对 heredoc 硬换行(约 70 字符)并给每行加缩进,导致实际粘贴内容损坏而对话预览看起来正常。之后用对应平台的写入命令从文件复制,再读回剪贴板与文件比对(如 pbpaste | cmp -s - "$f" && echo match),不一致时报告并回退为在代码块中展示文本。预览必须基于读回的内容,而非原本打算复制的内容。验证完成后删除临时文件,因为它可能含有用户复制的任何内容,包括密钥扫描放行的文本。

各平台剪贴板读写命令:

  • macOS:读 pbpaste,写 pbcopy < "$f"
  • Linux (Wayland):读 wl-paste -n,写 wl-copy < "$f"
  • Linux (X11):读 xclip -selection clipboard -o,写 xclip -selection clipboard < "$f"
  • Windows:读 powershell Get-Clipboard -Raw,写 powershell "Get-Content -Raw '$f' | Set-Clipboard"

若运行在无剪贴板的环境(远程、无头或聊天机器人 agent),跳过剪贴板,内容取自提示,并在代码块中返回清理后的文本。

完成后给出一行摘要说明清理了什么,例如去除了多少 ANSI 码、框线字符、提示符残留,以及字符数情况与剪贴板往返校验结果。

长度与链接处理

  • 长度提示:Twitter/X 超过 280 字符时警告并说明超出多少;LinkedIn 超过 400 字符(舒适线,非硬限制)时警告。其他目的地无长度警告。若用户表示要自行删减,不应拒绝或自动截断。
  • 链接处理:当内容含 URL 且目的地为 twitter 或 linkedin 时,单独列出 URL(不放进正文),并提醒链接应放在 LinkedIn 的首条评论或 X 的回复中。相关说明见记忆存储中的 feedback_social_link_placement.md。

典型示例

  • /paste slack:读取剪贴板,去除 ANSI,把 **bold** 转为 *bold*,复制到剪贴板并显示预览。
  • /paste twitter 加粘贴的错误日志:使用粘贴内容而忽略剪贴板,完成清理,在 412/280 字符时警告,复制并询问用户是否删减或更换目的地。
  • /paste html 加粘贴的 markdown 表格:渲染为 HTML 并在浏览器打开,用户选中后复制到 Notion/邮件可保留格式。
  • /paste 加含 sk-anthropic-key 的内容:停止并提示“发现疑似 Anthropic API 密钥:sk-an...3kf9。继续、脱敏还是中止?”

可组合使用的技能

  • jab-hook:当 MCP 路径不适用时,为粘贴进 Typefully 草稿清理输出,并对 X/LinkedIn 目的地执行链接放置规则。
  • social-fetch:在草稿或通讯中引用抓取到的帖子前先做清理。
  • second-brain:把 paste 的输出干净地捕获到 raw/note-<slug>.md 供后续汇编。
  • watch-video:转录或摘要输出常经过 paste 做针对平台的重新排版。

质量说明

  • 剪贴板写入流程是强制性的:文件 → 从文件复制 → 读回比对 → 基于读回内容预览。
  • 密钥检测始终最先执行,在任何格式转换或目的地逻辑之前扫描 sk-、AKIA、xoxb-*、JWT 形式字符串和长十六进制令牌,命中时先询问再继续。
  • 采用目的地感知的转换而非统一处理:Slack 用 *bold*,LinkedIn 用 Unicode 样式加粗,邮件用 HTML,同样输入会产生九种不同的合规输出;目的地标志并非可选。
  • 所有目的地都会去除 ANSI 码,因为终端转义序列在源终端之外都会显示为乱码。
  • 字符限制按资料描述执行:X 为 280,LinkedIn 为 3000,Twitter 为 25000,超出时拒绝复制并提供删减策略(此处限制数值与上文“警告”描述同时存在,均按资料原文保留)。
  • 社交目的地链接放在首条评论而非正文,在目的地为 twitter 或 linkedin 时执行。
  • HTML 目的地打开浏览器标签页而非写入剪贴板,因为格式化表格和代码块需要可渲染的表面才能带格式选中复制。