This Week's Sponsor:


Ensure that if a device isn’t secure it can’t access your apps.  It’s Device Trust for Okta.

Convert URLs to Tweetbot Links

I communicate with my team through iMessage. We’ve tried many “communication services” over the years, yet, since last Fall, we’ve always come back to Apple’s solution. It’s not perfect for us, its reliability is far from 100%, but it works.

As we keep using iMessage every day, there’s one category of “media” we’re constantly sharing: Twitter URLs. We find some cool piece of information or news on Twitter, we share it with the team. Linking back to tweets has, in a way, become our favorite type of commentary for fun, news-hunting, and everything in between. URLs, though, aren’t the best way to jump back to a tweet, especially when you’re on a mobile device. When you’re on a Mac, clicking on a Twitter link will open a new browser tab, which doesn’t really bother us as we’re used to opening background tabs on our computers. But on the iPhone and iPad, it can become annoying: there’s a limit of 8 Safari tabs on the iPhone, you get yanked out of Messages, and, most of the time, URLs just don’t work. In our team chat, we’ve speculated the “Not Found” errors we’ve seen may be related to how Tweetbot generates Twitter URLs when you hit “Copy Link to Tweet”: instead of using status in the URL slug, it uses statuses, which seems to be the reason behind erroneous redirecting on mobile devices.

We’ve come to the conclusion that we want to be able to easily copy URLs and turn them into links based on Tweetbot’s URL scheme. Using a simple tweetbot:// URL, you can use Twitter’s status ID – the same you receive when you copy a link – to open a single tweet directly in Tweetbot. And the best part is, the same URL scheme works consistently across Tweetbot for iOS and Tweetbot for Mac. As everyone on the MacStories team is already using Tweetbot, the solution seemed obvious – plus: no more browser tabs.

The problem was finding a way to convert URLs easily, without having to remember complex combinations of keystrokes and commands. Furthermore, as I promised my team I’d come up with a way, I had to figure out a solution to do text conversion directly on iOS.

As a result, I’ve come up with an AppleScript, a Keyboard Maestro macro, and a simple Python script to transform Twitter URLs into their Tweetbot counterparts.


In AppleScript, I had to use text item delimiters to identify Twitter-specific strings to replace in the text.

Remember, we want to turn into tweetbot://, and statuses into status, because that’s how Twitter’s website likes links. Then, we want to be able to easily paste back the modified text so we can share it with someone, or just open the new URL.

Unfortunately, to make the process as automatic as possible, I had to settle on GUI scripting. Writing AppleScript commands that rely on visible user interface elements is never advised because a) menu and button names often change with app updates and b) there may be problems with localized apps (menus have different names). However, Tweetbot doesn’t offer an AppleScript dictionary yet, and the “Copy Link to Tweet” action we’re using doesn’t have an associated keyboard shortcut. Which means we have to simulate clicking an item of a submenu of a menubar dropdown. Not the best solution, but it works. I look forward to improving this if Tweetbot ever gets AppleScript support.

tell application "System Events"

	set AppleScript's text item delimiters to ""


	tell application "Tweetbot"


		tell application "System Events"

			tell process "Tweetbot"

				click menu item "Copy Link to Tweet" of menu 1 of menu item "Share" of menu 1 of menu bar item "Tweet" of menu bar 1

			end tell

		end tell

	end tell


	delay 1

	set my_URL to the clipboard


	set the clipboard to my replaceText("", "tweetbot://", "statuses", "status", my_URL)

end tell





on replaceText(searchStr, replaceStr, searchStr2, replaceStr2, my_URL)


	set oldDelim to AppleScript's text item delimiters


	set AppleScript's text item delimiters to searchStr

	set this_text to (text items of my_URL)

	set AppleScript's text item delimiters to replaceStr

	set bot_URL to (this_text as string)


	set AppleScript's text item delimiters to searchStr2

	set this_text2 to (text items of bot_URL)

	set AppleScript's text item delimiters to replaceStr2

	set fixed_URL to (this_text2 as string)


	set AppleScript's text item delimiters to oldDelim

	return fixed_URL

end replaceText

As usual with quick script I’ve put together, I haven’t added a check for assistive devices. Make sure the option is enabled in System Preferences > Accessibility.

Once I automated the part to copy the Twitter link, I needed to convert that link to the tweetbot:// format with minimal effort. Using text item delimiters and a handler, the script can identify the portions of the URL we don’t want, and replace them. The “fixed” URL is then placed on the clipboard.

The provided AppleScript works well with Alfred. Create an extension (or download this one), and assign a hotkey to it. Then, in Tweetbot, select a tweet, press the hotkey, and a tweetbot:// link to the tweet will be on your clipboard after a second. Thanks Justin for input and feedback.

Keyboard Maestro

Keyboard Maestro comes with a “Search and Replace Clipboard” action that fits our needs for this workflow. Once again using GUI scripting, I created a macro (and later, our Gabe Glick improved on it) to copy a tweet’s link and turn it into tweetbot:// format.

The macro is smart in that, if Tweetbot is at the front, it’ll interpret the hotkey as a command to copy a selected tweet and convert the URL; if Tweetbot isn’t the frontmost app, you can use the same hotkey to paste. I personally use this over AppleScript, as I can quickly generate a link, then switch back to Messages and hit the same hotkey to paste.

Download the macro here.


I’m new to Python, but I’ve been learning the basics in the past few weeks and I’ve been playing around with the fantastic Pythonista app on my iPhone and iPad. I’ve therefore created a simple Python script to replace occurrences of (and its mobile and https variations), `print the result, and launch the new URL directly in Tweetbot.

import clipboard

import console

import webbrowser

mytext = clipboard.get()

mytext = mytext.replace('', 'tweetbot://')

mytext = mytext.replace('statuses', 'status')

mytext = mytext.replace('', 'tweetbot://')

mytext = mytext.replace('', 'tweetbot://')

mytext = mytext.replace('', 'tweetbot://')


print mytext

Once configured, it takes a few seconds to launch Pythonista, hit Run, and have the new URL ready in the output. Python users will have no problems modifying the script to, say, set the result to the clipboard.


I like to find automated solutions for common problems that no one is fixing. Having to deal with tabs as a Tweetbot user was one of those problems, and I’m glad I’ve set up a system that improves my link-sharing workflow.

It’s easy to modify the scripts and macro to work with other URL schemes, such as Twitterrific’s. As usual, ping me if you’re inspired by this to build something new.

Unlock More with Club MacStories

Founded in 2015, Club MacStories has delivered exclusive content every week for over six years.

In that time, members have enjoyed nearly 400 weekly and monthly newsletters packed with more of your favorite MacStories writing as well as Club-only podcasts, eBooks, discounts on apps, icons, and services. Join today, and you’ll get everything new that we publish every week, plus access to our entire archive of back issues and downloadable perks.

The Club expanded in 2021 with Club MacStories+ and Club Premier. Club MacStories+ members enjoy even more exclusive stories, a vibrant Discord community, a rotating roster of app discounts, and more. And, with Club Premier, you get everything we offer at every Club level plus an extended, ad-free version of our podcast AppStories that is delivered early each week in high-bitrate audio.

Choose the Club plan that’s right for you:

  • Club MacStories: Weekly and monthly newsletters via email and the web that are brimming with app collections, tips, automation workflows, longform writing, a Club-only podcast, periodic giveaways, and more;
  • Club MacStories+: Everything that Club MacStories offers, plus exclusive content like Federico’s Automation Academy and John’s Macintosh Desktop Experience, a powerful web app for searching and exploring over 6 years of content and creating custom RSS feeds of Club content, an active Discord community, and a rotating collection of discounts, and more;
  • Club Premier: Everything in from our other plans and AppStories+, an extended version of our flagship podcast that’s delivered early, ad-free, and in high-bitrate audio.