Automation helper for Superwhisper on macOS.
Macrowhisper watches Superwhisper recordings and runs configured actions based on triggers (voice, app, mode, or browser URL) or a fallback active action.
brew install ognistik/formulae/macrowhisperOr install from script:
curl -L https://raw.githubusercontent.com/ognistik/macrowhisper/main/scripts/install.sh | sudo sh# Create/reveal config in Finder (default: ~/.config/macrowhisper/macrowhisper.json)
macrowhisper --reveal-config
# (Optional) Store config in a custom location
macrowhisper --set-config ~/my-configs/
# Check which config path is active
macrowhisper --get-configmacrowhisper --start-service
macrowhisper --service-statusTo avoid conflicts, in Superwhisper set:
- OFF:
Paste Result Text,Restore Clipboard After Paste,Simulate Key Presses - ON:
Recording Window
If the recording window does not close reliably, you can increase defaults.actionDelay in Macrowhisper config.
macrowhisper --start-service
macrowhisper --stop-service
macrowhisper --restart-service
macrowhisper --uninstall-service
macrowhisper --service-status
macrowhisper --reveal-config
macrowhisper --set-config <path>
macrowhisper --reset-config
macrowhisper --get-config
macrowhisper --validate-config
macrowhisper --update-config
macrowhisper --schema-infomacrowhisper --status
macrowhisper --action <name> # set fallback action
macrowhisper --action # clear fallback action
macrowhisper --get-action [name]
macrowhisper --get-icon
macrowhisper --folder-name [index]
macrowhisper --folder-path [index]
macrowhisper --copy-action <name>
macrowhisper --exec-action <name>
macrowhisper --run-auto
macrowhisper --schedule-action <name> # one-shot next session override
macrowhisper --schedule-action # cancel scheduled action
macrowhisper --auto-return <true/false>
macrowhisper --mute-triggers <true/false/duration>
macrowhisper --check-updates
macrowhisper --list-actions
macrowhisper --list-inserts
macrowhisper --list-urls
macrowhisper --list-shortcuts
macrowhisper --list-shell
macrowhisper --list-as
macrowhisper --add-insert <name>
macrowhisper --add-url <name>
macrowhisper --add-shortcut <name>
macrowhisper --add-shell <name>
macrowhisper --add-as <name>
macrowhisper --remove-action <name>Processing priority is strict:
- One-shot runtime overrides (
--auto-return,--schedule-action) - Trigger-matched actions (
triggerVoice,triggerApps,triggerModes,triggerUrls,triggerLogic) defaults.activeActionfallback
You can also bypass Macrowhisper entirely for specific Superwhisper modes with defaults.bypassModes.
{
"$schema": "file:///opt/homebrew/share/macrowhisper/macrowhisper-schema.json",
"configVersion" : 2,
"defaults": {
"watch": "~/Documents/superwhisper",
"activeAction": "autoPaste",
"actionDelay": 0.02,
"restoreClipboard": true,
"scheduledActionTimeout": 5,
"clipboardBuffer": 5,
"redactedLogs": false
},
"inserts": {
"autoPaste": {
"action": ".autoPaste"
},
"pasteResult": {
"action": "{{swResult}}"
}
},
"urls": {
"Google": {
"action": "https://www.google.com/search?q={{result}}",
"triggerVoice": "ask google"
}
},
"shortcuts": {},
"scriptsShell": {},
"scriptsAS": {}
}Use macrowhisper --validate-config to catch config issues quickly, and macrowhisper --update-config after upgrades to apply new schema fields and formatting while preserving your settings.
{{swResult}}: final transcription result{{result}}: voice-only transcript from meta.json (used for voice triggers){{raw:swResult}}: no escaping (raw value){{json:swResult}}: JSON-escaped value{{selectedText}}: selected text captured at recording start{{clipboardContext}}: clipboard context captured during recording and optional pre-recording buffer{{appContext}}: active app/input context{{appVocabulary}}: likely names, identifiers, and app-specific terms from the front app{{frontApp}},{{frontAppUrl}}: front app name and current URL in supported browsers{{folderName}},{{folderPath}}: current or recent recording folder info{{actionResult}}: output from a prior synchronous script-like step in a chain{{date:short}},{{date:long}},{{date:yyyy-MM-dd}}{{xml:tagname}}: extract XML tag content{{placeholder||pattern||replacement}}: regex replacement pipeline{{placeholder::transform}}: transform placeholders before use
Any compatible meta.json key can also be used as a placeholder, including nested values such as {{promptContext.systemContext.language}} and {{segments}}.
- Config values can be set globally in
defaultsand overridden per action. - Most per-action fields support
nullto inherit global defaults. - URL actions support
openWithandopenBackground. - Actions support chaining via
nextAction. - Action-level
inputConditioncan gate options by input state. - Insert actions can also use
smartCasing,smartPunctuation, andsmartSpacingfor cleaner output around the insertion point. - Shortcut, shell, and AppleScript actions run asynchronously by default; set
scriptAsync: falseandscriptWaitTimeoutwhen you want to wait for completion. --copy-action,--get-action,--exec-action, and--run-autosupport--metaso you can target a specific recording folder or compatiblemeta.json.{{clipboardContext}},{{selectedText}}, and front-app context are captured with stable runtime snapshots so chained actions stay consistent.
Beyond this quick start, Macrowhisper supports advanced patterns and control:
- Trigger exceptions (
!pattern) and raw-regex triggers (==...==) for precise matching. - Browser URL triggers and
{{frontAppUrl}}work in supported browsers. - Placeholder transforms and regex replacement pipelines for post-processing output.
- Special action values:
.autoPaste(insert),.none(skip this step),.run(run Shortcut without input). - Conditional behavior with
inputCondition, plus multi-step flows vianextAction.
This README is intentionally concise. For complete reference, automation examples, and troubleshooting, see:
If Macrowhisper is useful in your workflow, I'd be grateful if you Buy me a coffee
Macrowhisper is an independent project and is not affiliated with Superwhisper.