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

轉換

清理空白取代 / Regex命名格式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 如何啟動腳本。

欄位類型是否必需用途
idUUIDYesStable Workflow identifier used for updates, Filter sessions, import conflict detection, and workflowID input.
defaultIntroducedVersionInteger | nullBundled onlyCatalog version that introduced a bundled default. It lets upgrades install only newly added defaults without restoring ones a user deleted.
nameStringYesThe Workflow and Action name shown in Settings and the Pasteon action list.
nameLocalizationKeyString | nullBundled onlyOptional String Catalog key used to localize the name of a bundled Workflow. User edits clear this key.
summaryStringNoA short explanation displayed beside the Action. It does not affect execution.
summaryLocalizationKeyString | nullBundled onlyOptional localization key for the bundled Workflow summary.
symbolNameSF Symbol nameYesThe icon used by the Workflow Action. Invalid candidate icons fall back to this symbol.
isEnabledBooleanYesDisabled Workflows remain saved but do not generate Actions.
requiresTrustConfirmationBoolean | nullImportedMarks imported code as untrusted. Pasteon sets this to true and disables the Workflow until the user confirms it.
sortOrderNumberYesControls the order of Custom Workflow Actions after built-in Primary Actions.
modesimple | scriptFilterYesSimple executes immediately. Script Filter runs filter first, then execute after a candidate is chosen.
supportedTypesPasteType[]YesClipboard types where the Action may appear: text, markdown, html, json, url, color, date, timestamp, fileURL, imageURL, videoURL, image, or appObject.
editorModesteps | codeNoSelects the visual linear editor or script editor. Older Workflow files without this field use Code.
script.sourceinline | externalCodeInline stores code inside the Workflow. External references a script on disk.
script.codeStringInlineThe inline script body. Pasteon writes it to a temporary file for each run.
script.codeResourceResource name | nullBundled onlyBundle resource containing code for a default Workflow. Exported user Workflows carry resolved inline code instead.
script.scriptPathFile pathExternalPath to the external script. Tilde paths are expanded. Missing files keep the configuration but prevent an Action from appearing.
script.interpreterPathExecutable pathInlineExecutable used to run the script, such as /bin/zsh or the result of which node. External executable scripts may leave it empty.
script.argumentsString[]NoArguments passed as an array before the generated or external script path. Pasteon does not join them into a shell command.
script.workingDirectoryDirectory pathNoCurrent directory for the process. When empty, external scripts use their folder and inline scripts use the temporary input folder.
script.filterTimeoutSecondsFilterMaximum Filter duration. Values are clamped to 1–120 seconds; the default is 5.
script.executeTimeoutSecondsYesMaximum Execute duration. Values are clamped to 1–120 seconds; the default is 15.
stepsWorkflowStep[] | nullStepsOrdered linear step definitions. Steps mode requires Simple mode and exactly one final output. OCR enables image input; PNG File and Open in Finder apply stricter input-type rules.
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 後才會建立輸入;二進位資料會寫成暫存檔,不會嵌入 JSON。

欄位類型是否必需用途
versionIntegerYesWorkflow protocol version. The current and only supported value is 1.
workflowIDUUID StringYesStable identifier of the Workflow being run.
phasefilter | executeYesTells a shared script which stage to run. Simple Workflows receive execute only.
paste.idUUID StringYesIdentifier of the selected Pasteon history item.
paste.typePasteTypeYesThe derived clipboard content type used for Workflow visibility and script logic.
paste.textString | nullNoText form of the selected content when available. Files and binary images may not have text.
paste.sourceAppBundleIdentifierString | nullNoBundle identifier of the app where the clipboard item was originally copied.
paste.representationsRepresentation[]YesAll available pasteboard representations. Text may be inline; binary data is exposed by file path.
targetApp.bundleIdentifierString | nullNoBundle identifier of the frontmost app that will receive the result.
targetApp.nameString | nullNoLocalized display name of the frontmost target app.
directories.inputDirectory pathYesTemporary run directory containing the inline script and materialized binary inputs. Removed after the run.
directories.outputDirectory pathYesDirectory where the script should create returned files. Unused output directories are cleaned after 24 hours.
variablesRecord<String, String>YesResolved variables keyed by name. Text and Secret values are available during both Filter and Execute.
actionIDString | nullExecute after FilterID of the candidate chosen from Filter output. Null during filter and for Simple Workflows.
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" }
}

Read Workflow input in common languages

Each example reads the complete stdin payload, accesses paste.text and a PREFIX Workflow variable, then writes one valid Simple Workflow result to stdout.

JavaScript / Node.js

Use file descriptor 0 with the Node.js standard library.

/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

Use json.load with sys.stdin and json.dump with 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

Read $stdin, parse with JSON, and write only protocol 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

Read the STDIN stream and use PHP’s built-in JSON functions.

/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

Read FileHandle.standardInput and decode with 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 reads the raw payload; jq performs JSON parsing and encoding.

/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 does not bundle language runtimes or jq. Set interpreterPath to an executable that exists on the current Mac. Homebrew paths differ between Apple silicon and Intel Macs; use “which node”, “which python3”, or the equivalent to find the correct path.

WorkflowStepDefinition

Visual Step fields

Every step has identity, behavior, enabled state, and one shared configuration object. Only fields used by the selected kind affect execution.

欄位類型是否必需用途
steps[].idUUIDYesStable identity used by selection, drag ordering, validation, and per-step test results.
steps[].kindWorkflowStepKindYesSelects the condition, transform, script, or output operation.
steps[].isEnabledBooleanYesDisabled non-output steps are skipped. The final Output cannot be disabled.
configuration.patternStringMatch / ReplaceText, app identifier fragment, or regular expression to test or replace.
configuration.replacementStringReplaceReplacement text. In Regex mode it follows NSRegularExpression replacement template rules.
configuration.matchModecontains | equals | startsWith | endsWith | regularExpressionMatch / ReplaceControls how pattern is compared. Replace uses plain replacement unless regularExpression is selected.
configuration.isCaseSensitiveBooleanMatch / ReplaceWhen false, text comparison and Regex replacement are case-insensitive.
configuration.trimModewhitespaceAndNewlines | whitespace | newlinesTrimSelects which characters are removed from both ends.
configuration.caseStylecamel | pascal | snake | screamingSnake | kebab | train | dotChange CaseTarget naming convention for the current text.
configuration.templateStringTemplateText template containing supported placeholders such as {{input}} and {{date}}.
configuration.fileNameStringOutput FileOutput file name, with template variables allowed. Directory components are discarded for safety.
configuration.scriptScriptConfigurationRun ScriptScript settings for this step. A Run Script step must return a text result for the next visual step.

Available WorkflowStepKind values

textCondition

Show and run only when the current text matches pattern.

sourceAppCondition

Match the bundle identifier of the app that created the clip.

targetAppCondition

Match the bundle identifier of the frontmost destination app.

trimText

Remove selected whitespace characters from both ends.

replaceText

Perform plain or regular-expression replacement.

changeCase

Convert the current text to the configured naming style.

urlEncode / urlDecode

Percent-encode or decode the current text.

jsonPretty / jsonMinify

Parse JSON, sort keys, then pretty-print or compact it.

template

Replace supported placeholders in a text template.

runScript

Run a Simple Code Workflow step that must return text.

recognizeText

Use macOS Vision OCR on Clipboard Image or ImageURL input and pass the recognized text to the following steps.

outputText / outputFile / outputOpenURL

Return text, create a text file, or open a supported URL. Exactly one output is kept at the end of a valid Steps Workflow.

outputPNGFile

Convert Clipboard Image or ImageURL input to a PNG file. Other input types make the Workflow invalid.

outputRevealInFinder

Reveal a local FileURL, ImageURL, or VideoURL in Finder. Workflow testing reports the path without opening Finder.

WorkflowInputRepresentation

Representation 欄位

每個 representation 代表一種 Pasteboard 資料;文字使用 value,檔案或二進位資料使用 path。

欄位類型是否必需用途
typeUTI StringYesPasteboard type identifier, such as public.utf8-plain-text, public.file-url, public.png, or public.html.
valueString | nullNoInline UTF-8 value for text-like representations or the original file URL string.
pathFile path | nullNoOriginal local file path or temporary path created for binary representation data.
fileNameString | nullNoOriginal or generated safe file name associated with the representation.
fileSizeInt64YesRepresentation size in bytes, using stored metadata when available.
temporaryBooleanYesTrue when Pasteon wrote binary data into directories.input for this run. Do not retain that path.
WorkflowFilterResponse

Filter 回傳欄位

Filter 只描述候選項,不應提前產生所有最終結果。

欄位類型是否必需用途
versionIntegerYesMust equal the supported protocol version: 1.
actionsAction[]YesNon-empty candidate list. Pasteon validates and displays at most the first 20 items.
actions[].idStringYesCandidate identifier returned as actionID during execute. After trimming, length must be 1–120 characters.
actions[].titleStringYesVisible candidate title. After trimming, length must be 1–120 characters.
actions[].subtitleString | nullNoSecondary explanation shown beside the candidate. Pasteon keeps the first 240 characters.
actions[].iconSF Symbol | nullNoSF Symbol name for the candidate. Invalid symbols fall back to the parent Workflow icon.
actions[].argumentJSON value | nullNoOpaque JSON value sent back unchanged during execute. It may be an object, array, string, number, boolean, or null.
Candidates
Maximum 20 displayed per Filter run.
Argument
Maximum 64 KB encoded JSON per candidate.
ID and title
1–120 characters after trimming.
Subtitle
Truncated to 240 characters.
WorkflowExecuteResponse

Execute 回傳欄位

Execute 必須只回傳一個 result,並只填寫該 type 需要的欄位。

欄位類型是否必需用途
versionIntegerYesMust equal the supported protocol version: 1.
resultObjectYesThe one final result Pasteon should apply.
result.typetext | files | openURL | revealFileYesSelects validation and the normal versus Command-mode behavior.
result.valueStringtextNon-empty text to paste normally or copy when Command mode is active.
result.pathsString[]files | revealFileFor files, a non-empty list whose relative paths resolve inside directories.output and must exist. For revealFile, the first path is the local item to reveal.
result.urlStringopenURLValid http, https, or mailto URL. Normal mode opens it; Command mode copies it.
revealFile behaviorLocal file actionrevealFileNormal Action execution reveals the first path in Finder and hides Pasteon. Command mode does not change this result into copy-only behavior.
Files 結果範例
{
  "version": 1,
  "result": {
    "type": "files",
    "paths": ["GeneratedModel.swift"]
  }
}
WorkflowRunner

限制、程序行為與清理

Runner 不會拼接 Shell 指令,會持續讀取 stdout 與 stderr,並在離開工作階段時終止工作。

stdout ≤ 2 MB

stdout must contain one protocol JSON document and no log lines. Exceeding the limit terminates the process.

stderr ≤ 256 KB

Write logs and diagnostics to stderr. It is captured for testing and errors.

timeout 1–120 s

Filter and Execute have separate configurable timeouts. Pasteon terminates an overdue process.

exit status 0

A non-zero process exit is treated as failure, with captured stderr included in the error.

cancellable

Switching Paste items, returning from Filter results, editing or deleting the Workflow, or closing the window cancels the run.

arguments stay separate

Arguments are passed as an array. Pasteon does not expand pipes, wildcards, variables, or other shell syntax.

outputs expire after 24 h

Workflow output directories older than 24 hours are removed during application cleanup.

local user permissions

Scripts execute locally with the current macOS user’s access. Review imported code before enabling it.

WorkflowVariableDefinition

Reusable Workflow variables

Define values once in Settings and reuse them in visual Steps or Code Workflows. Text values are stored with the Workflow. Secret values are stored in the macOS Keychain and removed from exported files.

欄位類型是否必需用途
variables[].idUUIDYesStable identity used to associate a Secret with its Keychain value. Copying a Workflow creates new variable IDs.
variables[].nameStringYesCase-sensitive lookup name. It must match [A-Za-z_][A-Za-z0-9_]* and be unique within the Workflow.
variables[].kindtext | secretYesText stores its value in the Workflow. Secret stores its value in the macOS Keychain.
variables[].valueStringText onlyText value saved and exported with the Workflow. Secret definitions always export this field as an empty string.
Workflow file example
{
  "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 syntax
Use {{variables.NAME}} in Template content and output file names. An empty or missing value resolves to an empty string.
Code syntax
Read payload.variables.NAME from stdin JSON. Variables are available in Filter and Execute phases.
Secret storage
Secret values stay in the macOS Keychain. Removing the variable or Workflow deletes its Keychain value.
Import and export
Text values travel with exported JSON. Secret names and kinds are exported, but Secret values must be entered again after import.

Steps 範本變數

Template 與檔名步驟會替換這些完整預留位置。

{{input}}Current text from the previous step.
{{sourceApp}}Source app bundle identifier, or an empty string.
{{targetApp}}Frontmost target app bundle identifier, or an empty string.
{{clipboardType}}Current PasteType raw value.
{{date}}Current date and time in ISO 8601 format.
{{variables.NAME}}Value of the user-defined Text or Secret variable with the matching case-sensitive name.

程序環境變數

除了 stdin JSON,Code Workflow 也能讀取這些環境變數。

PASTEON_WORKFLOW_IDUUID of the current Workflow.
PASTEON_WORKFLOW_PHASEfilter or execute.
PASTEON_INPUT_DIRPath matching directories.input.
PASTEON_OUTPUT_DIRPath matching directories.output.
.pasteon-workflow

.pasteon-workflow file structure

Exports are readable versioned JSON. A file may contain one Workflow or the full Workflow list.

欄位類型是否必需用途
versionIntegerYesEnvelope protocol version. Import currently accepts version 1.
installedDefaultsVersionInteger | nullNoInternal default-catalog state. User exports write null and imports do not use it to enable defaults.
workflowsWorkflowDefinition[]YesOne or more complete Workflow definitions. A bare single WorkflowDefinition is also accepted for compatibility.
Every imported Workflow is forced to isEnabled: false and requiresTrustConfirmation: true.
When a UUID already exists, the user can replace it or import a copy with a new UUID.
Inline code is included in the JSON. External script files are not bundled; only scriptPath is exported.
A missing external path keeps the imported configuration visible but prevents its Action from appearing.
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.error,不要用會寫入 stdout 的 console.log。

結果行為

回傳下一個 App 真正需要的形式。

一般執行會立即處理結果。Command 點按或 Command + Enter 會將文字、檔案和 URL 切換為只複製。

text

貼上或複製文字

回傳產生的文字、清理後內容、範本、程式碼或任何字串。

files

貼上或複製檔案

在提供的輸出目錄建立檔案,並將路徑回傳給 Pasteon。

openURL

開啟或複製 URL

一般模式開啟支援的網頁或郵件連結,Command 模式複製 URL。

revealFile

在 Finder 中顯示檔案

在 Finder 中定位回傳的本機檔案;測試 Workflow 時只顯示路徑。

開箱即用

預設能力也是一般 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 開始,只有流程真正需要時才進入腳本。