Pasteon
Mac 自定义工作流

把复制的内容变成你自己的可重复操作。

用可视化步骤或代码构建工作流,选择它支持的剪贴板类型,然后直接在 Pasteon 内置操作旁运行。

可视化步骤或代码Simple 与 Script Filter本地执行脚本
工作流编辑器
步骤已启用
1
匹配文本
包含“user”
2
清理文本
空格与换行
3
转换命名格式
snake_case
4
返回文本
粘贴或仅复制结果
+ 添加步骤
检查器

转换命名格式

格式
snake_case
输入
{{input}}
测试结果通过 · 0.8 ms
hello world
hello_world
选择构建方式

从可视化开始,需要时再进入代码。

Workflow 是保存的处理配方;只有当前剪贴板项目匹配你选择的输入条件时,它的 Action 才会出现在 Pasteon 中。

1
推荐

Steps

用条件、转换、脚本和一个最终输出组成线性流程。在独立检查器中配置每一步,并对比测试前后的值。

适合: 文本清理、模板、格式转换和文件生成
2
高级

Code

使用指定解释器、参数、工作目录和超时运行内联代码或外部脚本。单一结果用 Simple,运行时选择用 Script Filter。

适合: 自定义工具、开发自动化和动态操作列表
分步教程

四步创建一个文本清理工作流。

这个示例会清理复制文本的空白、统一命名格式,并把结果返回到你正在使用的 App。

01 / 创建

创建工作流并选择输入类型

打开“设置 → Workflows”,新增工作流,填写名称和图标,再选择它应该在哪些剪贴板类型下出现。

02 / 构建

按执行顺序添加转换步骤

添加清理文本、转换命名格式等步骤,并拖拽排序。Output 固定在末尾,让流程始终可预测。

03 / 测试

用当前剪贴板作为测试数据

测试不会真正复制、粘贴或打开内容。你可以查看每一步的前后值、耗时和校验状态。

04 / 运行

启用后从 Pasteon Actions 运行

工作流会直接显示在内置 Primary Actions 之后。点击或按 Enter 粘贴结果;按住 Command 则只复制。

可视化步骤库

常见部分直接组合,特殊部分才写脚本。

步骤从上到下执行。条件决定 Action 何时可用,转换更新当前值,一个输出决定 Pasteon 如何处理结果。

条件

匹配文本来源 App目标 App

转换

清理空白替换 / 正则命名格式URL 编码 / 解码JSON 格式化 / 压缩模板OCR

脚本

内联代码外部脚本自定义解释器

输出

返回文本创建文件PNG 文件在 Finder 中显示打开 URL
代码工作流

一个脚本既能返回结果,也能生成可选操作。

Pasteon 通过 stdin 发送版本化 JSON,并从 stdout 读取协议 JSON。日志写入 stderr;超时、取消和输出限制让运行过程保持可控。

Simple Workflow

执行一次,返回一个结果

当一个 Action 只需要生成一份文本、文件或 URL 结果时,使用 Simple 模式。

{
  "version": 1,
  "result": {
    "type": "text",
    "value": "Ready to paste"
  }
}
Script Filter Workflow

先描述选项,选择后再执行

Filter 阶段只返回轻量候选信息。用户选择某一项后,Pasteon 才运行 execute。

{
  "version": 1,
  "actions": [
    {
      "id": "swift",
      "title": "Generate Swift Model",
      "argument": { "language": "swift" }
    }
  ]
}
01

Filter

脚本收到 phase “filter”,最多返回 20 个候选 Action。

02

选择

Pasteon 展示标题、说明、图标和 JSON 参数,不提前计算最终结果。

03

Execute

被选中的 actionId 和 argument 回传脚本,只计算当前这一项。

stdout 只能输出协议 JSON,诊断信息请写入 stderr。内联代码与外部脚本使用同一套输入输出契约。

WorkflowDefinition

Workflow 配置字段

这些字段决定 Workflow 在什么内容下出现,以及 Pasteon 如何启动脚本。

字段类型是否必需作用
idUUIDWorkflow 的稳定标识,用于更新、Filter 会话、导入冲突判断和 workflowID 输入。
defaultIntroducedVersionInteger | null仅内置该默认 Workflow 首次加入的 Catalog 版本,升级时只安装新增项,不恢复用户已删除的旧默认项。
nameString设置页和 Pasteon Action 列表中显示的名称。
nameLocalizationKeyString | null仅内置内置 Workflow 名称的本地化 key;用户编辑名称后会清除。
summaryStringAction 旁的简短说明,不参与脚本执行。
summaryLocalizationKeyString | null仅内置内置 Workflow 摘要的可选本地化 key。
symbolNameSF Symbol 名称Workflow Action 使用的图标;候选项图标无效时也会回退到它。
isEnabledBoolean关闭后配置仍会保存,但不会生成 Action。
requiresTrustConfirmationBoolean | null导入项标记导入代码尚未信任。Pasteon 会将它设为 true 并关闭 Workflow,直到用户确认。
sortOrderNumber决定 Workflow Action 在内置 Primary Actions 后的排序。
modesimple | scriptFilterSimple 直接执行;Script Filter 先执行 filter,用户选择候选项后再 execute。
supportedTypesPasteType[]允许显示 Action 的类型:text、markdown、html、json、url、color、date、timestamp、fileURL、imageURL、videoURL、image 或 appObject。
editorModesteps | code选择线性可视化编辑器或代码编辑器。旧文件没有该字段时按 Code 处理。
script.sourceinline | externalCodeInline 把代码保存在 Workflow 内;External 引用磁盘上的脚本。
script.codeStringInline内联脚本正文,每次运行时会写入临时脚本文件。
script.codeResource资源名称 | null仅内置内置默认 Workflow 的 Bundle 脚本资源;导出用户 Workflow 时会写入解析后的内联代码。
script.scriptPath文件路径External外部脚本路径,支持展开 ~。文件不存在时保留配置,但不显示 Action。
script.interpreterPath可执行文件路径Inline运行脚本的解释器,例如 /bin/zsh 或 which node 的结果。外部脚本本身可执行时可留空。
script.argumentsString[]在脚本路径前传给解释器的参数数组,不会拼接成 Shell 字符串。
script.workingDirectory目录路径进程当前目录。留空时,外部脚本使用脚本所在目录,内联脚本使用临时输入目录。
script.filterTimeoutFilterFilter 最长运行时间,限制为 1–120 秒,默认 5 秒。
script.executeTimeoutExecute 最长运行时间,限制为 1–120 秒,默认 15 秒。
stepsWorkflowStep[] | nullSteps按顺序保存的线性步骤。Steps 模式要求 Simple,并且只能有一个最终输出。OCR 支持图片输入;PNG File 和 Open in Finder 有更严格的输入类型限制。
variablesWorkflowVariableDefinition[] | nullNoReusable Text or Secret values available to Steps templates and Code Workflow stdin. Names must be unique within the Workflow.
WorkflowInvocationInput

通过 stdin 发送的 JSON

只有用户真正执行 Workflow 后,Pasteon 才会构造该对象。二进制剪贴板数据会写成临时文件,不会嵌入 JSON。

字段类型是否必需作用
versionIntegerWorkflow 协议版本,当前唯一支持的值是 1。
workflowIDUUID String当前 Workflow 的稳定标识。
phasefilter | execute告诉同一个脚本当前运行哪个阶段。Simple 只会收到 execute。
paste.idUUID String当前选中 Pasteon 历史项的标识。
paste.typePasteTypePasteon 派生的内容类型,用于可见性判断和脚本逻辑。
paste.textString | null可文本化时提供当前内容。文件和二进制图片可能没有文本。
paste.sourceAppBundleIdentifierString | null该内容最初复制自哪个 App 的 Bundle ID。
paste.representationsRepresentation[]全部可用 Pasteboard representation。文本可内联,二进制数据通过路径提供。
targetApp.bundleIdentifierString | null将接收执行结果的前台 App Bundle ID。
targetApp.nameString | null前台目标 App 的本地化显示名称。
directories.input目录路径包含内联脚本和二进制输入的本次临时目录,运行结束后删除。
directories.output目录路径脚本应在这里创建需要返回的文件;超过 24 小时的输出目录会被清理。
actionIDString | nullFilter 后 Execute用户从 Filter 结果中选中的候选 ID;Filter 阶段和 Simple 模式为 null。
argumentJSON value | nullFilter 后 Execute被选中候选项携带的参数,原样回传,让 execute 只计算该结果。
argumentJSON value | nullExecute after FilterThe selected candidate’s argument, returned unchanged so execute can compute only that choice.
Execute 输入示例
{
  "version": 1,
  "workflowID": "5F604A89-7AC2-45D9-B48C-BB540B60CA67",
  "phase": "execute",
  "paste": {
    "id": "D0A4E45A-61F6-4DAF-BC1E-4E17A23AA5C0",
    "type": "json",
    "text": "{\"name\":\"Pasteon\"}",
    "sourceAppBundleIdentifier": "com.apple.Safari",
    "representations": [
      {
        "type": "public.utf8-plain-text",
        "value": "{\"name\":\"Pasteon\"}",
        "path": null,
        "fileName": null,
        "fileSize": 18,
        "temporary": false
      }
    ]
  },
  "targetApp": {
    "bundleIdentifier": "com.apple.dt.Xcode",
    "name": "Xcode"
  },
  "directories": {
    "input": "/tmp/Pasteon/WorkflowInputs/RUN_ID",
    "output": "~/Library/Application Support/Pasteon/WorkflowOutputs/RUN_ID"
  },
  "variables": {
    "API_BASE_URL": "https://api.example.com",
    "API_TOKEN": "••••••••"
  },
  "actionID": "swift",
  "argument": { "language": "swift" }
}

常用语言读取 Workflow 输入

每个示例都会读取完整 stdin、访问 paste.text 和 PREFIX Workflow 变量,然后只向 stdout 写入一个合法的 Simple Workflow 结果。

JavaScript / Node.js

使用 Node.js 标准库读取文件描述符 0。

/opt/homebrew/bin/node
const fs = require("node:fs");

const payload = JSON.parse(fs.readFileSync(0, "utf8"));
const text = payload.paste?.text ?? "";
const prefix = payload.variables?.PREFIX ?? "";

process.stdout.write(JSON.stringify({
  version: 1,
  result: { type: "text", value: prefix + text }
}));
Python 3

使用 json.load 读取 sys.stdin,并通过 json.dump 写入 sys.stdout。

/opt/homebrew/bin/python3
import json
import sys

payload = json.load(sys.stdin)
text = payload.get("paste", {}).get("text") or ""
prefix = payload.get("variables", {}).get("PREFIX", "")

json.dump({
    "version": 1,
    "result": {"type": "text", "value": prefix + text}
}, sys.stdout)
Ruby

读取 $stdin、使用 JSON 解析,并确保 stdout 只有协议 JSON。

/opt/homebrew/bin/ruby
require "json"

payload = JSON.parse($stdin.read)
text = payload.dig("paste", "text") || ""
prefix = payload.dig("variables", "PREFIX") || ""

$stdout.write(JSON.generate({
  version: 1,
  result: { type: "text", value: prefix + text }
}))
PHP

读取 STDIN 流,并使用 PHP 内置 JSON 函数。

/opt/homebrew/bin/php
<?php
$payload = json_decode(stream_get_contents(STDIN), true);
$text = $payload["paste"]["text"] ?? "";
$prefix = $payload["variables"]["PREFIX"] ?? "";

echo json_encode([
    "version" => 1,
    "result" => ["type" => "text", "value" => $prefix . $text]
]);
Swift

通过 FileHandle.standardInput 读取,并使用 Foundation 解析。

/usr/bin/swift
import Foundation

let data = FileHandle.standardInput.readDataToEndOfFile()
let payload = try JSONSerialization.jsonObject(with: data) as? [String: Any]
let paste = payload?["paste"] as? [String: Any]
let variables = payload?["variables"] as? [String: String]
let text = paste?["text"] as? String ?? ""
let prefix = variables?["PREFIX"] ?? ""

let response: [String: Any] = [
    "version": 1,
    "result": ["type": "text", "value": prefix + text]
]
let output = try JSONSerialization.data(withJSONObject: response)
FileHandle.standardOutput.write(output)
Zsh + jq

Zsh 读取原始内容,JSON 的解析和编码由 jq 完成。

/bin/zsh
#!/bin/zsh
set -euo pipefail

payload="$(cat)"
text="$(printf '%s' "$payload" | jq -r '.paste.text // ""')"
prefix="$(printf '%s' "$payload" | jq -r '.variables.PREFIX // ""')"

jq -n --arg value "$prefix$text" '{
  version: 1,
  result: {type: "text", value: $value}
}'

Pasteon 不内置语言运行时或 jq。请将 interpreterPath 设置为当前 Mac 上真实存在的可执行文件。Apple 芯片和 Intel Mac 的 Homebrew 路径可能不同,可使用 “which node”“which python3” 等命令确认路径。

WorkflowStepDefinition

可视化 Step 字段

每个 Step 都有标识、类型、启用状态和一份共用配置;只有当前 kind 使用的配置字段会参与执行。

字段类型是否必需作用
steps[].idUUID用于选择、拖拽排序、校验和逐步测试结果的稳定标识。
steps[].kindWorkflowStepKind选择条件、转换、脚本或输出操作。
steps[].isEnabledBoolean关闭的非输出步骤会跳过;最终 Output 不能关闭。
configuration.patternString匹配 / 替换用于判断或替换的文本、App 标识片段或正则表达式。
configuration.replacementString替换替换内容;Regex 模式遵循 NSRegularExpression 的 replacement template 规则。
configuration.matchModecontains | equals | startsWith | endsWith | regularExpression匹配 / 替换决定 pattern 的比较方式;Replace 只有选择 regularExpression 时才按正则替换。
configuration.isCaseSensitiveBoolean匹配 / 替换为 false 时,文本比较和正则替换忽略大小写。
configuration.trimModewhitespaceAndNewlines | whitespace | newlinesTrim决定从文本两端移除哪类字符。
configuration.caseStylecamel | pascal | snake | screamingSnake | kebab | train | dotChange Case当前文本要转换成的目标命名格式。
configuration.templateStringTemplate包含 {{input}}、{{date}} 等支持占位符的文本模板。
configuration.fileNameStringOutput File输出文件名,可使用模板变量;为安全起见会丢弃其中的目录部分。
configuration.scriptScriptConfigurationRun Script该步骤的脚本配置;Run Script 必须返回 text,供下一个可视化步骤继续处理。

可用的 WorkflowStepKind

textCondition

只有当前文本匹配 pattern 时才显示并运行。

sourceAppCondition

匹配创建该剪贴板内容的来源 App Bundle ID。

targetAppCondition

匹配当前前台目标 App Bundle ID。

trimText

从文本两端移除指定类型的空白字符。

replaceText

执行普通替换或正则替换。

changeCase

把当前文本转换为配置的命名格式。

urlEncode / urlDecode

对当前文本做 URL 百分号编码或解码。

jsonPretty / jsonMinify

解析 JSON、排序 key,再格式化或压缩输出。

template

替换文本模板中的受支持占位符。

runScript

执行必须返回 text 的 Simple Code Workflow 步骤。

recognizeText

使用 macOS Vision 对 Clipboard Image 或 ImageURL 输入执行 OCR,并把识别文本传给后续步骤。

outputText / outputFile / outputOpenURL

返回文本、创建文本文件或打开受支持 URL。有效的 Steps Workflow 末尾只能保留一个输出。

outputPNGFile

把 Clipboard Image 或 ImageURL 输入转换为 PNG 文件;使用其他输入类型会让 Workflow 无效。

outputRevealInFinder

在 Finder 中显示本地 FileURL、ImageURL 或 VideoURL。测试 Workflow 时只展示路径,不打开 Finder。

WorkflowInputRepresentation

Representation 字段

每一项代表一种 Pasteboard 数据。文本读取 value;文件或物化后的二进制数据读取 path。

字段类型是否必需作用
typeUTI StringPasteboard 类型,例如 public.utf8-plain-text、public.file-url、public.png 或 public.html。
valueString | null文本类型的 UTF-8 内容,或原始文件 URL 字符串。
path文件路径 | null原始本地文件路径,或 Pasteon 为二进制数据生成的临时路径。
fileNameString | null该 representation 的原始文件名或安全生成的文件名。
fileSizeInt64字节长度,优先使用已经存储的元数据。
temporaryBoolean为 true 表示该文件由 Pasteon 为本次运行写入 input 目录,不应长期保存该路径。
WorkflowFilterResponse

Filter 返回字段

Filter 只描述可选项,不应返回最终生成内容,也不应提前执行每个候选项的实际工作。

字段类型是否必需作用
versionInteger必须等于当前协议版本 1。
actionsAction[]不能为空。Pasteon 会校验并最多展示前 20 个候选项。
actions[].idString候选标识,Execute 时作为 actionID 回传;去除空白后长度为 1–120。
actions[].titleString候选 Action 标题;去除空白后长度为 1–120。
actions[].subtitleString | null候选项辅助说明,Pasteon 最多保留前 240 个字符。
actions[].iconSF Symbol | null候选项 SF Symbol 名称;无效时回退到父 Workflow 图标。
actions[].argumentJSON value | nullExecute 时原样回传的不透明 JSON,可为对象、数组、字符串、数字、布尔值或 null。
候选数量
每次 Filter 最多展示 20 个。
Argument
每个候选编码后的 JSON 最大 64 KB。
ID 与标题
去除空白后为 1–120 个字符。
Subtitle
超过 240 个字符会被截断。
WorkflowExecuteResponse

Execute 返回字段

Execute 必须只返回一个 result 对象,并且只填写该 result.type 所需的字段。

字段类型是否必需作用
versionInteger必须等于当前协议版本 1。
resultObjectPasteon 要执行的唯一最终结果。
result.typetext | files | openURL | revealFile决定校验方式及普通模式与 Command 模式的行为。
result.valueStringtext非空文本;普通模式粘贴,Command 模式只复制。
result.pathsString[]files | revealFilefiles 使用非空路径数组,相对路径基于 output 目录且文件必须存在;revealFile 使用第一条路径作为 Finder 中定位的本地项目。
result.urlStringopenURL合法的 http、https 或 mailto URL;普通模式打开,Command 模式复制。
revealFile behavior本地文件操作revealFile从 Action 执行时在 Finder 中显示第一条路径并隐藏 Pasteon;Command 模式不会把它切换为仅复制。
Files 结果示例
{
  "version": 1,
  "result": {
    "type": "files",
    "paths": ["GeneratedModel.swift"]
  }
}
WorkflowRunner

限制、进程行为与清理

Runner 不拼接 Shell 命令字符串,会流式读取两路输出,并在用户离开当前会话时终止任务。

stdout ≤ 2 MB

stdout 只能包含一份协议 JSON,不能混入日志;超过上限会终止进程。

stderr ≤ 256 KB

日志和诊断写入 stderr,测试和错误界面会读取它。

timeout 1–120 s

Filter 与 Execute 分别配置超时;到期后 Pasteon 会终止进程。

退出码必须为 0

非零退出码视为失败,错误中会包含捕获的 stderr。

支持取消

切换 Paste、返回 Filter、编辑或删除 Workflow、关闭窗口都会取消运行。

参数独立传递

参数以数组传入,不会展开管道、通配符、变量或其他 Shell 语法。

输出保留 24 小时

应用清理时会删除超过 24 小时的 Workflow 输出目录。

本地用户权限

脚本以当前 macOS 用户权限在本机运行,启用导入脚本前请先检查代码。

WorkflowVariableDefinition

可复用的 Workflow 变量

在设置中定义一次,即可在可视化 Steps 或 Code Workflow 中复用。Text 值随 Workflow 保存;Secret 值保存在 macOS 钥匙串中,导出文件不会包含密钥内容。

字段类型是否必需作用
variables[].idUUID稳定标识,用于将 Secret 定义关联到钥匙串中的值。复制 Workflow 时会生成新的变量 ID。
variables[].nameString区分大小写的读取名称,必须匹配 [A-Za-z_][A-Za-z0-9_]*,并在同一 Workflow 内保持唯一。
variables[].kindtext | secretText 将值保存在 Workflow 中;Secret 将值保存在 macOS 钥匙串中。
variables[].valueString仅 TextText 值会随 Workflow 保存和导出;Secret 定义导出时该字段始终为空字符串。
Workflow 文件示例
{
  "variables": [
    {
      "id": "C3EEAF0E-0AD8-4A26-924C-CB867088D955",
      "name": "API_BASE_URL",
      "kind": "text",
      "value": "https://api.example.com"
    },
    {
      "id": "7E05B2EE-E745-4558-A267-E63B7D1E2235",
      "name": "API_TOKEN",
      "kind": "secret",
      "value": ""
    }
  ]
}
Steps 语法
在 Template 内容和输出文件名中使用 {{variables.NAME}}。变量为空或不存在时替换为空字符串。
Code 语法
从 stdin JSON 的 payload.variables.NAME 读取;Filter 和 Execute 阶段都能获得变量。
Secret 存储
Secret 值保存在 macOS 钥匙串。删除变量或 Workflow 时,对应钥匙串值也会删除。
导入与导出
Text 值随 Workflow JSON 导出;Secret 的名称和类型会导出,但导入后需要重新填写 Secret 值。

Steps 模板占位符

Template 和文件名步骤会在运行时替换以下内置占位符及任意 {{variables.NAME}}。

{{input}}上一步输出的当前文本。
{{sourceApp}}来源 App Bundle ID;不存在时为空字符串。
{{targetApp}}前台目标 App Bundle ID;不存在时为空字符串。
{{clipboardType}}当前 PasteType 原始值。
{{date}}ISO 8601 格式的当前日期和时间。
{{variables.NAME}}读取名称完全匹配且区分大小写的用户自定义 Text 或 Secret 变量值。

进程环境变量

除 stdin JSON 外,Code Workflow 还可以读取以下环境变量。

PASTEON_WORKFLOW_ID当前 Workflow 的 UUID。
PASTEON_WORKFLOW_PHASEfilter 或 execute。
PASTEON_INPUT_DIR与 directories.input 相同的路径。
PASTEON_OUTPUT_DIR与 directories.output 相同的路径。
.pasteon-workflow

.pasteon-workflow 文件结构

导出文件是可阅读的版本化 JSON,可包含一个 Workflow 或完整 Workflow 列表。

字段类型是否必需作用
versionInteger外层协议版本,当前导入只接受版本 1。
installedDefaultsVersionInteger | null内部默认 Catalog 状态;用户导出时为 null,导入时不会用它启用默认项。
workflowsWorkflowDefinition[]一项或多项完整 Workflow;为兼容旧文件,也支持直接导入单个 WorkflowDefinition。
所有导入项都会强制设为 isEnabled: false 和 requiresTrustConfirmation: true。
UUID 冲突时,用户可以替换现有项,或使用新 UUID 作为副本导入。
内联代码包含在 JSON 中;外部脚本文件不会打包,只导出 scriptPath。
外部路径缺失时仍保留配置,但不会生成 Action。
JavaScript / Node.js

完整 JavaScript Script Filter 示例

同一脚本处理两个阶段:Filter 返回两个轻量选项,Execute 只计算用户选择的结果。

workflow.js解释器: /opt/homebrew/bin/node
async function main() {
  let input = "";
  process.stdin.setEncoding("utf8");
  for await (const chunk of process.stdin) input += chunk;

  const payload = JSON.parse(input);
  const text = payload.paste?.text ?? "";
  let response;

  if (payload.phase === "filter") {
    response = {
      version: 1,
      actions: [
        {
          id: "uppercase",
          title: "Convert to Uppercase",
          subtitle: "Uppercase the copied text",
          icon: "textformat",
          argument: null
        },
        {
          id: "wrap",
          title: "Wrap in Brackets",
          subtitle: "Add [ and ]",
          icon: "curlybraces",
          argument: { prefix: "[", suffix: "]" }
        }
      ]
    };
  } else {
    const argument = payload.argument ?? {};
    const value =
      payload.actionID === "uppercase"
        ? text.toUpperCase()
        : (argument.prefix ?? "") + text + (argument.suffix ?? "");

    response = {
      version: 1,
      result: { type: "text", value }
    };
  }

  process.stdout.write(JSON.stringify(response));
}

main().catch((error) => {
  process.stderr.write(`${error.stack ?? error.message}\n`);
  process.exit(1);
});

请使用 Mac 上 “which node” 返回的路径。不要使用 console.log,它会写入 stdout;诊断信息请使用 console.error。

结果行为

返回下一个 App 真正需要的形态。

普通执行会立即处理结果。Command 点击或 Command + Enter 会把文本、文件和 URL 切换为仅复制;Finder 定位始终直接显示文件。

text

粘贴或复制文本

返回生成文本、清理后的内容、模板、代码或任意字符串。

files

粘贴或复制文件

在提供的输出目录创建文件,并把路径返回给 Pasteon。

openURL

打开或复制 URL

普通模式打开支持的网页或邮件链接,Command 模式复制 URL。

revealFile

在 Finder 中显示文件

在 Finder 中定位返回的本地文件;测试 Workflow 时只展示路径,不打开 Finder。

开箱即用

默认能力也是普通 Workflow。

Pasteon 默认启用这些工作流。你可以像处理其他 Workflow 一样检查、编辑、关闭、复制、导出或删除它们。

转换命名格式Script Filter
粘贴为 JSON 文件.json
粘贴为 TXT 文件.txt
粘贴为 Markdown 文件.md
在浏览器中打开openURL
URL 编码 / 解码Script Filter
粘贴为 Markdown 链接Simple
转换颜色Script Filter
OCROCR → 文本
PNG 文件图片 → .png
在 Finder 中打开revealFile
导入、导出与信任

分享处理配方,也让运行内容保持可审查。

Workflow 文件保持可读和可迁移。导入的 Workflow 默认关闭,检查并信任代码后才能启用。

导入和导出 .pasteon-workflow JSON 文件。
内联代码随 Workflow 导出;外部脚本只保留路径引用。
导入的 Workflow 默认关闭,运行脚本前需要用户确认。
Workflow 脚本以当前 macOS 用户权限在本地运行。
常见问题

自定义 Workflow 常见问题

我需要会编程吗?

不需要。Steps 模式通过线性可视化编辑器提供常用条件、文本转换、模板、脚本和输出;需要自定义行为时再使用 Code。

Simple 和 Script Filter 有什么区别?

Simple 执行一次并返回一个结果。Script Filter 先返回轻量候选项,再在独立的 execute 阶段运行用户选择的那一项。

Workflow 什么时候会出现在 Pasteon 中?

启用的 Workflow 会在当前剪贴板项目匹配输入类型和可视化条件时,显示在内置 Primary Actions 之后。

脚本在哪里运行?

脚本使用你配置的解释器和工作目录在本机运行。导入的 Workflow 在你检查并启用前不会执行。

自定义 Workflow 是 Pro 功能吗?

是。Pasteon Pro 支持创建、测试、导入、导出和运行自定义 Workflow。

创建工作中一直缺少的剪贴板操作。

下载 Pasteon for Mac,从可视化 Workflow 开始,只有流程真正需要时再进入脚本。