Slack doesn't provide an easy way to extract custom emoji from a team. (Especially teams with thousands of custom emoji) This Gist walks you through a relatively simple approach to get your emoji out.
If you're an admin of your own team, you can get the list of emoji directly using this API: https://api.slack.com/methods/emoji.list. Once you have it, skip to Step 3
HOWEVER! This gist is intended for people who don't have admin access, nor access tokens for using that list.
Follow along...
Open your Slack team on your browser (I used FireFox in this example)
Next, Open your developer tools, and go to the network tab. Look for a POST request on /emoji.list
Right Click on the request, and choose to open it in a new tab.
This will cause the browser to replay the request, yielding a JSON file with all your emoji information.
Save this file somewhere as emoji.json
Run download.sh on the file. (Make sure you chmod +x
it to make it executable. Details on the download.sh
file.
./download.sh emoji.json
Sit back and wait. This will create a folder called output
and will save all your emoji to it.
To bulk upload your emoji into a new team, use this chrome extension: https://chrome.google.com/webstore/detail/neutral-face-emoji-tools/anchoacphlfbdomdlomnbbfhcmcdmjej
1- This downloads files sequentially, one at a time. I didn't want to incurr Slack's rage by hammering their edge server with concurrent downloads. 2- This will duplicate aliased emoji
If you need more metadata for preprocessing (more than the emoji name, e.g., author or created date), you can access
emoji.adminList
and then simply edit thePOST
request to obtain all emojis at once.This is needed because by default,
adminList
contains more metadata but only loads the first 100 emojis; whereas the defaultemoji.list
contains all emojis but without any metadata.Steps to obtain all emojis with metadata (in Firefox):
https://<your_workspace>.slack.com/customize/emoji
.emoji.adminList?...
(ideally, by typingadminList
into the search/Filter URLs
box).paging
where you can see thetotal
, which is the number of all custom emojis in that workspace. Note this number so that you can then query for all emojis at once. Close this tab.emoji.adminList
again and this time, chooseEdit and Resend
.Request Body
, modify theContent-Disposition: form-data; name="count"
from (the default, I assume)100
to a number higher than what you've seen in step3
.Send
.emoji.adminList?...
appears below the first one, right click and open in new tab again and download and preprocess the resulting JSON according to your needs.