Skip to main content

Python library to create and parse Siri Shortcuts

Project description

# WIP: python-shortcuts

[![Build Status](](

🍏 + 🐍 = ❤️

**python-shortcuts** is a library to create [Siri Shortcuts]( on your laptop with your favourite text editor.
It uses [toml]( to represent shortcuts.

The library is in a very early development state (PR welcome!), so it does not support all actions from Shortcuts app.

* [Toml tutorial](docs/
* [Python tutorial](docs/
* [How to add a new action](docs/
* [Supported actions](docs/
* [Examples](examples/)
* [Changelog](
* [Documentation](docs/)

Supported Python version: **>=3.6**.

## Why

I wanted to convert my shortcut to a file in human-readable format. :)

From the code below this library can create a working shortcut:

type = "ask"
question = "What is your name?"

type = "set_variable"
name = "name"

type = "show_result"
text = "Hello, {{name}}!"

Or the same with Python:

from shortcuts import Shortcut, actions

sc = Shortcut()

sc.actions = [
actions.AskAction(data={'question': 'What is your name?'}),
actions.SetVariableAction(data={'name': 'name'}),
actions.ShowResultAction(data={'text': 'Hello, {{name}}!'})

## How to use

### Installation

pip install shortcuts

### Usage

### shortcut → toml

If you need to convert existing shortcut to a toml file, at first you need to export it.
Go into Shortcuts app, open the shortcut and share it. Choose "Share as file" and use this file with this library.

Convert shortcut file to `toml`:

shortcuts what_is_your_name.shortcut what_is_your_name.toml

### toml → shortcut

Convert a `toml` file to a shortcut file.
After you will need to open the file with iOS Shortcuts app.

shortcuts examples/what_is_your_name.toml what_is_your_name.shortcut

More examples of `toml` files you can find [here](examples/).
And [read the tutorial](docs/! :)

### URL → [toml|shortcut]

Also, you can download shortcut directly from iCloud.
If somebody shared shortcut link with you, just run:

shortcuts my_shortcut.toml # or my_shortcut.shortcut

And it will download this shortcut and save it in `toml` or `shortcut` format.

### Docker

It's possible to use [pre-built Docker container]( with python-shortcuts inside:

# convert s.toml from the current directory into s.shortcut

docker run -v $(pwd):/files akhmetov/shortcuts-cli /files/s.toml /files/s.shortcut

docker run -v $(pwd):/files akhmetov/shortcuts-cli --help

usage: shortcuts [-h] [--version] [file] [output]

Shortcuts: Siri shortcuts creator

positional arguments:
file Input file: *.(toml|shortcut|itunes url)
output Output file: *.(toml|shortcut)

optional arguments:
-h, --help show this help message and exit
--version Version information

## Development

### Tests

Run tests:


### How to add a new action

See [documentation](/docs/

### TODO

* ☑ ~~Conditionals with auto-group_id: if-else, menu~~
* ☐ Nested fields: dict/array/etc
* ☐ Support variables in every field which support them in Shortcuts app
* ☐ Workflow types: widget, etc.
* ☐ Import questions
* ☐ Document all actions
* ☐ Support magic variables
* ☐ Support all current actions from Shortcuts app

### Similar projects

* [Shortcuts JS](

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for shortcuts, version 0.11.0
Filename, size File type Python version Upload date Hashes
Filename, size shortcuts-0.11.0.tar.gz (24.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page