I have been using Signal a lot and, besides the privacy features, I have come to really enjoy custom sticker packs. Naturally, this led me to upload and maintain a lot of them. To keep things under control I wrote
packpath, a small command line utility to easily upload and update Signal sticker packs from a simple config file.
Although the Signal stickers API is only kinda public, some developers have written libraries to interact with it. Concretely, signalstickers.com maintainer Romain Ricard, has written signalstickers-client, a Python library to interact with the sticker API.
signalstickers-client doing all of the heavy lifting, I was able to write
packpath, a simple command line utility to create and publish sticker packs based on a simple YAML configuration file. It’s already available as packpath in PyPI:
$ pip3 install packpath
packpath, you need to create a directory with your sticker images and a
config.yaml file. The YAML format is available in
packpath --help, but it’s actually very simple:
pack: title: Ketnipz author: Harry Hambley cover: ketnipz_001.webp stickers: ketnipz_001.webp: 💓️ ketnipz_002.webp: 💃️ ketnipz_003.webp: 💕️ ketnipz_004.webp: 😐️ ketnipz_005.webp: 🙃️
You’ll need your Signal “user and password”, which are available on the desktop app through the web developer tools (
window.reduxStore.getState().items.password). See details on signalstickers-client README.
You can then call
packpath on the directory:
$ packpath --user UUID --password PASS path/to/sticker/pack
You will get a progress report, and the “secret” URL to share your sticker pack:
$ packpath --user UUID --password PASS path/to/sticker/pack [packpath] Configuring sticker pack Ketnipz by Harry Hambley [packpath] Adding: 💓️ for ketnipz_001.webp [packpath] Adding: 💃️ for ketnipz_002.webp [packpath] Adding: 💕️ for ketnipz_003.webp [packpath] Adding: 😐️ for ketnipz_004.webp [packpath] Adding: 🙃️ for ketnipz_005.webp Pack uploaded! Pack uploaded. You can install it by visiting: https://signal.art/addstickers/#pack_id=NNNNN&pack_key=MMMMM You can also preview your pack at signalstickers.com: https://signalstickers.com/pack/NNNNN?key=MMMMM Note that visiting the above URL will (technically) make the pack ID and key visible to signalstickers.com server logs. This will NOT add your pack to signalstickers.com, see https://signalstickers.com/contribute for that.
The code is licensed as AGPL-3.0-only, and you can check it out in the packpath repo in GitHub.
Many thanks to Romain for writing
signalstickers-client, which actually made this tool possible.