Welcome to Twools- Social Media Unleashed!

WordPress Plugin Released!

Twools for WordPressIt’s ready! To make Twools even easier to install and use, I’ve developed a WordPress version of Twools. This allows you to quickly install on your WordPress site and add all the information via the settings menu.

If you’ve been worried about editing code, then this is your thing. The new version fixes a few bugs, adds an author item to the feed and now caches requests so you don’t have to worry about going over your limit with the Twitter API.

twools Download Twools

Unleash your Social Media- it’s Free!

Please fill in this form and you’ll be sent a link to download Twools. Please make sure you read this article and the Twools documentation.


Fill in this form to download twools.
    Please read the Twitter Rules:
    The Twitter Rules and
    Developer Rules of the Road

What is Twools?

Twools started off as a way to get back RSS feeds from Twitter. Twitter retired version 1 of their API in June 2013 as well as retiring RSS feeds. As well as not having access to RSS feeds, you need to be authenticated to use the API which raises the bar for Twitter users and developers.

It has been my intention to make this as easy as possible for you install, however you do need to install this on your own website (PHP is required). It is just a case of editing a few lines in a file (with your Twitter app details) and uploading to your website.

Twools offers a number of RSS feeds from the Twitter API:

  • Your home timeline
  • User timeline (yours or another user’s)
  • Your mentions
  • Your favorites
  • List timeline (from a list that you own)
  • Direct messages received (disabled by default)
  • Direct messages Sent (disabled by default)
  • Twitter Search
  • New followers
  • New friends

You can filter the results from the Twitter API by only outputting tweets containing certain keywords, hashtags or screen names or even by the app used to send the Tweet. As well as that you can filter based on the user (currently their location and language). Finally, you can modify the data outputted in the RSS feed by removing URLs, screen names, hashtags etc or share your recipe with other folders.

As well as an RSS feed generator, Twools has a basic direct message spam filter (experimental- use at your own risk!) and a simple social media management tool (basically an HTML version of the RSS filters). You can also keep an eye on your API usage on the Status page.

Why would you need this?

Good question! According to Twitter, XML, Atom, and RSS are infrequently used today. Really? Well, instead of arguing the point too much here, I know I am not the only one who has been looking for a way to get their Twitter RSS feeds back. Probably one of the most sought after reason was to replace Twitter triggers in IFTTT which disappeared back in September 2012. There are other advantages too, such as backing up your tweets or cross posting with other apps. Please make sure sure you have a proper read of the Twitter API Rules of the Road and use Twools responsibly.

With Twools, you could produce feeds that allow you to:

  • Cross post to LinkedIn using the #li hashtag
  • Bookmark or cross post your Twitter Faves:
  • Add new followers from the a certain country or location to a Twitter list:
  • Add articles that I tweet using a certain app to evernote.
  • Get emailed when someone mentions your brand negatively.
  • Get emailed when someone links to an article on your website even if they don’t mention you.
  • Add someone mentioning a keyword to a Twitter list

Twools also does some powerful things with the output such as removing hashtags, screen names and urls. You can also remove hashtags from the end whilst keeping them in the main body of the tweet (but removing the #symbol. You can unshorten URLs too to get rid of those pesky short URLs and get the RSS feed item to link to the article instead of the tweet (good for posting to social networks such as LinkedIn and Twitter)

As well as an RSS feed generator, Twools has a basic direct message spam filter (experimental- use at your own risk!) and a simple social media management tool (basically an HTML version of the RSS filters). You can also keep an eye on your API usage on the Status page.

What do I need to Run Twools? The Requirements

Firstly, you need to decide which version of Twools you want to run. There is a WordPress plugin version and a standalone version. I would highly recommend running the WordPress version as it is much easier to use.

For both versions you need a website with PHP. As Twools is written in PHP, you will need to check that your website has PHP installed. If your website uses WordPress then this will definitely be the case. I have tested it using PHP 5.2 an above.

If you want to use the standalone version of Twools then you will need to edit a few lines in the config file and uploading it to your website.

Twools Settings

If you are using the standalone version of Twools, you need to edit the config.php file to add your Twools settings. Everything is a whole lot easier if you are using the WordPress version where you can add the settings in the WordPress dashboard menu for Twools. For further information, see installation.

Twools for WordPress

Twools Home

Once you are logged into Twools, you will be presented with the Home screen. This gives a brief intro, the version number and links to all the tools. You can also log out of Twools by clicking the button at the bottom.

Twools for WP - Home

Twools Streams

Twools Streams is a basic social media management tool for Twitter using the same filters as the RSS tool. Think about it like a super basic version of Tweetdeck or Hootsuite. It is simple in that it only gives you one stream at a time (at least in the current version of Twools) and it doesn’t auto-refresh. However, it is powerful in that it has the same powerful filters has Twools Feeds.
Twools Streams

I won’t go through all the options in the screenshot above fully because most of these options are the same in the next tool, Twools Feeds.

First of all you need to choose what Input Feed you want to retrieve from Twitter. This could be your timeline, mentions or even a Twitter search. Some feeds require more information (such as Twitter search or lists). Once you’ve chosen the feed, you then need to choose how many results you want to work with. Remember, once you run filters on these results, you may be left with less than this number, so it is best to choose a higher number. You can then run filters on these results. For example you could choose to only return tweets containing the hashtag #socialmedia or tweets from @iagdotme posted using Buffer. Click on the Update button and you will see your results. If you want to see multiple streams, then you can always open another instance in another tab.

Twools Streams Output

Twools Feeds

Twools feeds gives you RSS feeds from the Twitter API and was the main reason I built Twools. It is similar to Twools Streams in that you choose an input and various filters, but it is more powerful and outputs as an RSS feed instead of HTML

Please note- the RSS feed output is NOT password protected and potentially public. Do keep your RSS feeds private, especially as they will use up your API limits. In future versions of Twools I hope to introduce caching which will reduce this. Twools does offer RSS feeds of your direct messages, but this is disabled by default. Offering public RSS feeds of your direct messages is probably something you would want to think twice about.

1. Input

First of all you will need to choose which input feed you want to retrieve from Twitter. You have the following choices:

  • Your home timeline
  • User timeline (yours or another user’s)
  • Your mentions
  • Your favorites
  • List timeline (from a list that you own)
  • Direct messages received (disabled by default)
  • Direct messages Sent (disabled by default)
  • Twitter Search
  • New followers
  • New friends

For user timeline you have the option to give the screen name of another user so that you can retrieve the tweets of another use. For list timelines you must select which list you want to retrieve the tweets for. The list of your Twitter lists is now cached in Twools. For Twitter Search, you must enter the search query. For more information see the examples on the Using Search page in the Twitter API documentation.

You can then choose how many results you want to retrieve. You can select between 10 and 200 results. Please note that if you filter these results using the Twools filters, you will end up with less than this number. This is just the number of results that Twools is going to work with. Currently you can only select up to 100 results when you output screen names (for example to view your new followers or friends).

twools feeds

2. Filters

Once we’ve retrieved the results from the Twitter API, you can then run several filters on them so that you can only return certain results. The filters are either on the tweets themselves or the user that sent them.

Filters on Tweets
  • Containing any keyword, #hashtag or @screen_name:
    You can filter by a single keyword, hashtag or screen name in this field. For example if you wanted to return only tweets containing the hashtag #socialmedia, you would enter that here. Or you could put a screen name (for example @iagdotme) to only return tweets that mention that user.
  • Containing all keywords, #hashtags or @screen_names:
    You can filter by multiple keywords, hashtags or screen names in this field. This is similar to the previous field except that you can add multiple keywords, hashtags or screen names by separating them by a comma. For example you could enter “#socialmedia, @iagdotme” to only return tweets containing the hashtag #socialmedia and mentioning @iagdotme
  • Containing none keywords, #hashtags or @screen_names:
    You can filter by multiple keywords, hashtags or screen names in this field. This is similar to the previous field except only tweets that DO NOT contain any of these keywords, hashtags or screen names will be displayed.
  • Containing single #hashtag:
    Identical to the first field except that this specific hashtag can be removed from the feed output if selected in the final option.
  • From:
    Only tweets from these users will be returned
  • Not From:
    Only tweets not from these users will be returned
  • Using Apps:
    You can filter by the app used to send the tweet. You can select multiple app names by separating by a comma. For example, to return tweets posted with either Hootsuite or Buffer you could enter “Hootsuite, Buffer” here.
  • Not Using Apps:
    Similar to the previous field but here you can return tweets that were posted not using these apps. You can select multiple app names by separating by a comma. For example, to return tweets that were NOT posted using either Hootsuite or Buffer you could enter “Hootsuite, Buffer” here.
  • Exclude Scheduling Apps:
    By checking this box you can exclude a variety of scheduling apps (such as Buffer, IFTTT, Social Oomph and Triberr) from the results. You can edit the list by editing the config file (see later).
  • Exclude RTs:
    By checking this box you can exclude RTs from the results. This uses Twitters own API to only return non retweets, but also searches for RT in the tweets.
  • Been Favorited:
    Only return tweets that have been favorited.
  • Been Retweeted:
    Only return tweets that have been retweeted.
Filters on Tweets
  • In Location:
    You can filter by the location of the person who tweeted the tweet. This filter looks at the location string the users’ profile.
  • In Bio:
    You can filter a keyword from the user’s profile.
  • Writes in Language:
    You can filter by the language that person who tweeted the tweet writes in.

3. Output

Now that we’ve returned the results from Twitter and filtered out the ones we don’t want, we can output the RSS feed. However, there are still quite a few things we can do to make the feed the way we want it to be.

  • Remove specified Hashtag:
    If you entered a hashtag in the ‘Containing single #hashtag’ field above, you can remove this from the output. This is particularly useful if you want to use for cross posting. For example if you want to retrieve tweets with the #li hashtag to cross post to LinkedIn, you won’t want the #li hashtag to appear in the feed.
  • Remove all Hashtags:
    This is fairly brutal- it removes all hashtags including inline ones.
  • Remove all hashtags from end, but only remove ‘#’ elsewhere:
    This is probably more useful than the previous hashtag filter. It removes all hashtags from the end of the tweet. However it keeps hashtags in the main body of the tweet but removes the “#” symbol. This is useful when people use hashtags inline where removing would lose the sense of the tweet. For example “Great #twitter app gives you back your #rss feeds #socialmedia #twittertools” would become “Great twitter app gives you back your rss feeds”.
  • Remove all screen names (including ‘via @screenname’):
    This removes all screen names from the tweet. Useful for cross posting and cleaning up tweets.
  • Link to 1st URL contained in tweet (if available):
    The RSS feed usually links to each tweet, but if you check this option, Twools will link to the first URL contained in each tweet. This is very useful if you want to bookmark articles from tweets, or cross post to LinkedIn or Facebook linking to the article contained in the tweet.
  • Unshorten URL (if “Linked to 1st URL contained in tweet” is selected) – SLOW:
    Twools attempts to unshorten the URL contained in the tweet by finding out where it redirects to. This can be very slow as Twools has to go through each URL individually. This can be useful when you want to link to clean URLs. It is hoped to cache these URLs in future versions of Twools.
  • Remove all URLs:
    Removes all URLs from the tweet. This is particularly useful if you have selected “link to 1st URL contained in Tweet”.
  • Show screen name of sender instead of tweet.:
    If you want to return the screen name of the person who sent the tweet, select this option. This is useful if you want to find out info on your followers or people who mentioned you. You could use this information to follow, unfollow or add them to a list.

If you would like to share your recipe with other Twools users, then select “Output recipe string instead of RSS feed”. Twools is very powerful, but a lot of people will find it helpful to see practical examples of its use. I’d love it if you could share your examples in the comments below by adding the recipe string.

Output Feed

Once you’ve entered all your filters and selected your output requirements, it is time to generate your feed. Click the big blue button to do that. You can the copy the URL to use later.

Please note that each time you view a different feed you will be requesting data from the Twitter API and using up part of your limit. Each feed is cached for 1 hour (although you can change this default in Twools settings). Keep an eye on your API limit using the built in Limits page. Keep your RSS feeds private. Twools appends a special secret string to each RSS feed URL which is unique.

Spam Filter

This is very experimental, so only use if you know what you are doing. Like the rest of Twools (but this feature in particular) I cannot be held responsible for any loss of data! The warning out the way, this tool allows you to quickly clear your direct messages of spam. To use, you will need to allow Twools to access your direct messages as well as allow your Twitter app to do so. You can add your own key phrases but currently this has to be done by editing the config.php or config-wp.php file.The spam filter then scans your direct messages and if it finds a match it will delete it.

I got so fed up with my direct messages being spammed with useless messages that I built this into Twools. You could set this up on a schedule (say once every hour) to purge your inbox of spam.

As well as editing the config.php file (for the standalone version of Twools) or the config-wp.php file (for the WordPress plugin version of Twools) with your keywords you will also have to change $allowDMs to TRUE and give your Twitter app full permissions to access your direct messages

Sharing and Using Recipes

Twools Sharing

As I said above, you can share your feed recipe with others by selecting “Output recipe string instead of RSS feed” in Twools Feeds. Once you do this, you will be given a recipe string that you can share with others (share yours in the comments). As well as that you can use a recipe that someone else has shared. By entering it in the box, you can then have a check to see if you want to go ahead and then generate the feed based on that recipe.

Example Recipes

You can share feed recipes from other Twools users as well as saving and sharing some of your own. These recipes allow you to generate RSS feeds which you can then use in other apps. Basically you’re just sharing the query string for the feed generator, but the idea is to make it as easy as possible to share and have fun. However you must make sure you have a proper read of the Twitter API Rules of the Road. Here are some examples:

Articles I post on Twitter using Triberr

You could use this to add articles that you tweet from Triberr (or another app) to Evernote. This retrieves your tweets posted via Triberr. It removed URLs & screen names from the tweets. As well as this, it removes hashtags from end (and removing ‘#’ from the rest). It extracts the URL and unshortens it and puts in link field.

Return anyone who uses the hashtag #socialmedia

You could use this feed with IFTTT to automatically add someone who uses this hashtag to a list.

Tweets from your timeline that use the #li hashtag

Could be used to cross post to LinkedIn when using the #li hashtag

Your Twitter favorites

All URLs, screen names and hashtags have been removed. URL extracted and de-shortified. Could be used for Bookmarking or cross post your Twitter Faves

Recent followers from the UK

Retrieves the screen names of all your recent followers with the keyword “UK” in their location. You could use this to automatically add your latest followers from the UK to a Twitter list using IFTTT.

Twitter API Current Limits

twools limits

Twools connects to the Twitter API via the Twitter app you registered. Depending on the type of call you make, you have a certain number of calls allowed every 15 minutes. If you use these up, you will have to wait until the next 15 minute window starts. You will receive an error message in Twools if this happens. RSS feeds will send a “temporary unavailable” header so that feed readers will try again when the limits are reset.

You can monitor your API usage within Twools by going to the Limits section. This shows your limit and remaining calls for every API stream. Twools doesn’t make use of every stream type listed, but it can be a helpful way of monitoring your usage.

How To Install

Installation for Twools for WordPress

  • Download the ZIP file (if you haven’t already got the ZIP file, sign up for Twools above)
  • Go to the WordPress dashboard for the website you wish to install Twools on
  • Go to plugins->add new and click on “upload” at the above.
  • browse to the ZIP file you downloaded and click install now
  • Activate Plugin
  • You should now be taken to the Twools menu page.
  • You will need to create a Twitter app at I’ve written in depth instructions on how to do this in an article on my website- How to Create a Twitter App in 8 Easy Steps.
  • Enter the access tokens from your Twitter app on to the Twools menu page.
  • Click generate string to generate random secret string.
  • If you want to use your own list of excluded apps, you can enter them. These need to be comma separated. For example IFTTT,Buffer,Social Oomph
  • Click update and then click on the “Launch Twools” button to begin!

Installation for Twools (Standalone Version)

If you don’t have a WordPress based website to install Twools on, you will have to use the standalone version. This does require a little more work and you will need to edit some code. But fear not, I have tried to make it as easy as possible!

  • Download the ZIP file
  • Go to and register your Twitter app (instructions below).
  • Edit the config file in /incs/config.php and fill in the keys from your new Twitter app as well as your Twitter username and the username and password you want to protect Twools.
  • Upload Twools to your website and visit it on your site
  • That should be it!

You will need to create a Twitter app at I’ve written in depth instructions on how to do this in an article on my website- How to Create a Twitter App in 8 Easy Steps.

To use Twools, you will have to edit a PHP file. If that scares you, don’t worry- I have tried to make it as easy as possible. You do not have to know PHP, be a developer or a coder- I promise!.

Open up the config.php file in the “incs” folder and edit the bits as follows.

Firstly, you will need to set the username and password you want to secure Twools (replace “demo” and “demo” with your new username and password):

// Set username and password to protect access to Twools (RSS feeds will still not be password protected).
// Put some jibberish on the padding string for extra protection
$config['username'] = "demo";
$config['password'] = "demo";
$padding = "g`0*Y;6VOx`AIb+WBE>uKU1w;_cV-`&Y[ZgUDeZ3~jmdx]u7DGKUVN1W9~~W;kbk";

Once you’ve done that, enter those access tokens here:

/** Set access tokens here - see: **/
$settings = array(
'oauth_access_token' => "",
'oauth_access_token_secret' => "",
'consumer_key' => "",
'consumer_secret' => ""

As well as this, you should enter your Twitter username by entering it within the quotes for each item:

// Replace by setting the default Twitter username (exclude the @ symbol)
$defaultUser = "iagdotme";

If you want to expand on the app filters, then please add more in the config.php file. I’ve added some myself, such as SocialOomph, Buffer, JustRetweet and more. These apps are great, but it’s just that sometimes you want to declutter your feed:

// If you want to exclude apps in the app filter, add some more here....
$excludeApps = array("IFTTT","Buffer","","Triberr","SocialOomph","TweetAdder","JustRetweet","","WPTweetily","Twuffer","twitterfeed","Tweet Old Post");

If you really want Twools to access your direct messages, then you will need to set $allowDMs to TRUE. As well as this, you will need to give your Twitter app full access permissions:

// Allow RSS feeds of Direct Messages? Allowing this will effectively make your direct messages publicly viewable via the RSS feed. Use at your own risk. To switch on change "FALSE" to "TRUE"
$allowDMs = TRUE;

You can also edit the $spamFilter array if you plan on using the experimental spam filter. Just edit the phrases to the way you want. Only use this at your own risk!

Once you’ve done this, you need to upload everything and run from your website. That’s it!



A huge thanks to James Mallison for explaining how to build a simple Twitter app using v1.1 of the API and for building a fantastic PHP Twitter wrapper. This little app wouldn’t work without it!

This app also uses the Twitter Bootstrap framework for its HTML, CSS and Javascript. It means it is fully responsive and uses the latest in HTML5 and CSS3

Terms of Use

Please use Twools responsibly and make sure sure you have a proper read of the Twitter API Rules of the RoadYou may use it for personal and commercial use. However you must not sell Twools.

Change Log

  • Fixed error in getLists
  • Fixed error in RSS feed generator
  • Fixed Caching problems
  • You can now set caching time in the Twools Menu in WP Settings. If there is a cached file of the API Request within this time, Twools will use it instead of making a request from the Twitter API.
  • Introduced Quiet Time Mode to force caching at certain times (for example over night)
v0.11.0 & v0.11.1
  • Various bugs fixes
  • Twools is now a WordPress plugin, but can also be used as a standalone PHP app
  • WordPress version uses a different config file- config-wp.php
  • WordPress version uses WordPress login (you need to be logged into WP to use Twools)
  • API request for lists is cached. The default is 1 hour, but can be changed in the WP settings menu or the config.php file (if using the standalone app)
  • All API requests for the RSS feed generator are now cached. The default is 1 hour, but this can be changed in the WP settings menu or the config.php file (if using the standalone app)
  • Added screen names to author tag in RSS feeds
  • Secret string can be automatically generated in WP Settings menu
  • The secret string that is appended to feed URLs is a an encrypted version of the recipe appended to the secret string. This means every RSS feed will have a different secret string and so much more secure
  • The excluded apps can be added in the WP settings menu. If this isn’t set, the default list is used.
  • Example recipes can now be used in the share recipe section
  • Fixed Notice Errors for unset variables
  • Moved functions from config.php file to a new functions.php to keep config.php only for editable data
  • Sanitised query string for safety and fixed recipe bug in feeds.php by using htmlspecialchars($_SERVER['QUERY_STRING'])
  • Updated TwitterAPIExchange.php to latest version (fixed disable SSL peer verification)
v0.09 — 2013-07-05
  • Added Not From filter to show tweets not from one or more users
  • From filter now accepts multiple users
  • Added biography filter to search for tweets from users with a keyword in their user biography
v0.08 — 2013-07-04
  • Added filter to only show tweets that have been favorited
  • Added filter to only show tweets that have been retweeted
v0.07 — 2013-07-04
  • UI enhancementes
  • Updated About/Help Page
  • Update Checker
v0.06 – 2013-07-03
  • Added “containing none” keywords, “NOT using app”, “remove all URLs” etc feeds to streams.
  • Added “from” filter to feeds and streams.
v0.05 – 2013-06-28
  • Added “Containing none” keywords filter
  • Added “NOT using app” filter
  • Added “Remove all URLs” output feature
  • Added Unshorten URL (if “Linked to 1st URL contained in tweet” is selected). This can be SLOW
  • Added Show screen name of sender instead of tweet. Great for producing an RSS feed of Twitter usernames to be able to add them to lists in IFTTT
  • “Share Query” is now “Share Recipe”. Users can share their recipe feeds or use ones from other Twools users.
  • Now uses a simple HTML form with cookies for password protection as HTTP didn’t work in all PHP installations
v0.04 – 2013-06-26
  • Improved UI
  • Bug fixes for spam filter
  • Added “remove all hashtags” filter (useful in cross posting to another network where hash tags are not used)
  • Added “remove all screen names” filter (useful in cross posting to another network where screen names are not used)
  • Added “link to URL in tweet”. Normally the item in the RSS feed links to the URL of the tweet. Checking this will link the link in the tweet (if available) and will fall back to the link of the tweet if there is no link.
  • Keywords and app name fields now accepts multiple keywords (comma separated)
  • Added “all keywords” field so that all keywords (comma separated) have to be contained in the tweet.
  • Added “Remove specified Hashtag” feature
  • Added “Remove all Hashtags” feature
  • Added “Remove all hashtags from end, but only remove ‘#’ elsewhere” feature
  • Added “Remove all screen names” feature
  • Added “Link to 1st URL contained in tweet (if available)” feature
  • Added “share query” feature so that it is easier to share recipes with other Twools users.
v0.03 – 2013-06-24
  • Added language filter (for filtering language set in users’ profile)
  • Changed keyword description to include hashtags and screen names
  • Added home page for intro and easy links to rest of app
  • Added help page for future development
v0.02 – 2013-06-23
  • Fixed HTML issues with Twitter Bootstrap (thanks @DZAMAGE)
  • Improved look and feel
  • Fixed incorrect links in nav bar (now relative- not hard coded)
  • Added Javascript “magic” to hide unneeded fields in form. Form cannot send without required fields.
  • Fetches lists for list timeline. Now appears as a dropdown on the left. This requires an API call for every page load. Probably needds to be cached in future.
  • Added password protection (basic HTTP). RSS fields are exempt and are available without authentication.
  • The option for displaying direct messages as an RSS feed is now disabled by default. This is because many users will not want their private messages displayed in a public RSS feed. Users can switch this on in the config file
  • Added sent direct message feed.
v0.01 – 2013-06-21
  • First Version

Known Bugs

Non known at the moment. Please submit a bug report if you find any.

Future Development

  • WordPress plugin version
  • Caching of API requests
  • Option to return full articles (with titles) of the URLs in tweets
  • Multiple Twitter account support
  • Provide a GUI for the config file- to make it easier for people to use. Possible store the info in an XML file.
  • In Twitter HTML stream- highlight which tweets have been responded to
  • In RSS and HTML streams add filter for tweets that have been responded to
  • Allow returning of more results by doing multiple API requests
  • Pagination for RSS and HTML feeds (including an offset dropdown)
  • Checkboxes to follow/unfollow individual people on page
  • Improve interactivity (retweets/faves/replies) in Streams
  • Save popular streams for re-use.
  • Allow multiple columns in streams (similar to TweetDeck/Hootsuite)

Other possible ideas

  • In RSS and HTML streams add filter for tweets that contain a link or a Twitter card (possibly video or photo)
  • Add user to list app- add a users to a list automatically based on an app, search or mention
  • Automatically block followers who mention a keyword
  • Add an option to spam blocker to block user as well as delete dm
  • Option to follow all people on page.
  • Option to unfollow all people on a page
  • Clone List tool (Add all members to a list from another list, remove all members who aren’t in)
  • Follow from list tool (follow all people in a list)
  • Unfollow from list tool (unfollow all people in a list)
  • Block from list tool (block all people in a list)
  • Add to list tool (add all people to a list)
  • Follow latest friends/followers of another user


This app is provided “as is” and I can’t be held responsible for any loss of data or other issues. Please use at your own risk.

I’m very happy to help or answer questions and would love this to be improved and developed. Please get in touch. I am on Twitter- @iagdotme and my email is ian [at] iag [dot] me.


View on Twools Website | View on edocr | Download pdf

  • Patrick Mackaaij

    Just received this twools-update. It looks really great, as does this page for documentation. Twools already has loads of features, thanks a lot!

    “Twools does offer RSS feeds of your direct messages, but this is disabled by default.” -> it looks like it’s set to TRUE instead of FALSE by default.

    • Ian Anderson Gray

      Thanks, Patrick. Hope you find it helpful. Also, thanks for noticing that $allowDMs was set to TRUE in the code. I’ve changed this back to FALSE in the download. I have it switched it back on for myself but forgot to change that line of code back. However Twools will still not show your DMs as a feed unless you also give your app full permissions.

  • Brian Green

    I have created my Twitter app and have the necessary keys and tokens, but haven’t received my download/zip file link via email. How long should I expect to wait before leaving you a comment like this (whoops!)?

    • Ian Anderson Gray

      Hi Brian. Did you fill in the form at the top of this page? The reason I ask is that it doesn’t seem to have arrived with me. The download link should be sent automatically once you confirm your email address. Could you check?

      • Brian Green

        I definitely did, but never got any email. I’ll do it again, there’s really no hurry I’m just excited ;)

        • Ian Anderson Gray

          Cool. It came through. Should be with you really soon.

    • Ian Anderson Gray

      I wonder whether you didn’t check all the boxes in the form when you submitted. Just realised that the error message isn’t very obvious. Maybe try again? I will make the form a little better.

  • David Payne

    Hi Ian, I’m kind of a novice at all of this just tryin to figure it out a bit, I was wondering do you have any experience with this working on a site hosted by shopify? any help would be greatly appreciated, I looked it up and saw that there were a handful of php adaptors, except most of them are at least a year old and the downloads wouldn’t work for me so I’m not sure if they are even necessary anymore.

    • Ian Anderson Gray

      Hi David. Sorry, seemed to have missed your comment. I don’t know much about Shopify. It could work. Do you have access to a WordPress website? If so, I am close to launching a WordPress plugin version. Would that help?

    • Ian Anderson Gray

      Hi David, just to let you know, I have just released a WordPress plugin version of Twools. This makes it a lot easier to use and install.

  • WildStarOnlineDE

    Hi! Thank you so much for offering this. I am setting this up and run into issues. I get the following message: Warning: Cannot modify header information – headers already sent by (output started at (removedd a bit)/twools/incs/config.php:1) on line 21

    And when I then login it’s this message and also the same ending with line 33 and 34. Any ideas?


    • Ian Anderson Gray

      Hi. No problem. I really hope it will be helpful.

      Although the majority of people haven’t had issues with installing Twools, there have been 2 or 3 people who have had this issue your describing.
      I haven’t been able to properly troubleshoot yet, but something is outputting before the headers from the login script. This is causing the error.
      It could be to do with a blank line at the start of the login.php or config.php files which is outputting to the browser. Could you check if there are any stray blank lines at the start of those files (ie before the opening <?php).

      That didn't seem to be an issue in the few cases that were reported to me. Do you know if you have anything different about your php installation? Is it prepending any other files?

      As a temporary measure you could delete everything in the login.php file. That is a bit drastic because it removes password protection. However at least this will let you use Twools whilst I try and look into this.

      • WildStarOnlineDE

        Sorry for letting you wait for feedback: No, there are no such lines for my files.

        • Ian Anderson Gray

          OK, I’ll have to look into this. It’s a bit tricky, because it works fine for me.

          • John

            I’m getting the same message on v0.09 sadly. Did you find anything out, Ian

          • Ian Anderson Gray

            Sorry for this. I will look into this once I’ve completed version v0.10 for the standalone app and for WordPress. I’ve created a Google+ Community for Twools, so please sign up- perhaps we can all troubleshoot this together?

  • Steve Vrooman

    I’m psyched about this. I’m getting this, though:

    Notice: Undefined index: language in /{webaddress removed for comments}/languageCodes.php on line 147

    Then Notice: Undefined variable: language_code_HTML in {…}/languageCodes.php on line 149

    Then the first notice again a LOT (like 50 times :))

    Then Undefined variable: nonsense in {…}/login.php on line 33

    Then the cannot modify header on 33 and 34 someone else mentioned.

    • Ian Anderson Gray

      Hi Steve,
      Thanks for your comment.
      You’ve got error reporting levels set to the highest level in PHP. This means minor notice errors are being outputted. I am aware of them- and I’ll be fixing them for the next version of Twools. Because I had my reporting level set a little lower I never noticed them, but I do want to fix them just for basic best practice.

      For the time being you can suppress the errors from outputting by adding the following line right at the top of the config.php file (on a line just after the opening php tag):
      error_reporting(E_ALL ^ E_NOTICE);

      This will allow all errors to output except the minor notice ones.

      • Steve Vrooman

        Thanks for the response. It looks like the last lines of your message were cut off, though. :)

        • Ian Anderson Gray

          Weird, thanks for letting me know. I’ve amended the comment. Can you see it now?

          • Steve Vrooman

            Lovely. I am a college prof and installed this on a school server. I can see it now. My IT guy had to install curl on the server and then it all worked. I assign homeworks on twitter. Being able to ifttt them to a spreadsheet automatically was a killer app for me. This gives me back that opportunity, so THANKS!

          • Ian Anderson Gray

            Really glad to hear it works! Brilliant. Let me know how you get on.

  • Matt BK

    Thanks for creating this! I think it will work great for what I need. Is there a way to add the Twitter username into the feed as author?

    • Ian Anderson Gray

      Sorry for not replying earlier, Matt. Can you clarify what you mean here? The author of the RSS feed? Why would you need that. It is definitely possible.

      • Matt BK

        If you’re importing an RSS feed into IFTTT, you get choices of the different parts of the feed when you are building the output. This weekend I used Twools to repost hashtagged tweets to a Facebook page, but was only able to post the content, not the original author of the tweet.

        • Ian Anderson Gray

          The current version of Twools doesn’t output an author field. I’ll be able to fix that in the next release.

  • Pingback: Retrouver les flux RSS de Twitter avec Twools «

  • Pingback: Trefwoorden in Facebook berichten van iedereen volgen via Yahoo Pipes RSS

  • jimdigritz

    Would love to see a WordPress plugin!! Would be grateful enough to Donate!

    • Ian Anderson Gray

      Thanks for that. I have already got Twools working as a WordPress plugin. I need to run a few more tests. I am also looking for a few beta testers who would be happy to install on a test site and have a play.

  • Ian Anderson Gray

    Just to let you know, I have created a Twools Community on Google+. If you would like to join, here is the url –

  • Ian Anderson Gray

    Just to let you know, really close to launching the WordPress plugin version of Twools…

  • Adam

    Hi Ian, what license is this released under?

    • Ian Anderson Gray

      Hi Adam, thanks for your question. It is GNU 1.3. You’re free to use for personal and commercial use.
      I do plan to put the source code on github, but I’m developing it internally first.

  • Pingback: Missing the twitter API? here's something rather useful

  • Pingback: Introducing Twools - Your Twitter RSS Feeds Unleashed | Ultimate Social Blog

  • Sander Overeem

    Hello nice peace of software here, just one question how can i get the stream output on a wordpress page ?

    Thanks Sander

    • Ian Anderson Gray

      Great question, Sander. It doesn’t do this out of the box. The stream is for your eyes only. However I have been thinking for a while that it would be great if Twools had a kind of “widget maker” that would allow you to create and add streams to your WP site. Perhaps it could use shortcodes or something. It’s not going to happen for a while until I get some free time unfortunately, but I will definitely put it on my list.

  • JP

    Hey Ian! This looks like a very useful tool. I’m looking forward to playing around with it. However, I filled out the form above and received confirmation emails for your newsletter subscription, but no correspondence with a download link. Checked my spam folder and no sign of it. What have I missed?

  • stairclimber

    Hi Ian,

    Great idea.

    Thank you very much for creating this.

    I have successfully installed Twools on a traditional free hosting service with cPanel (i.e. ) and gotten to see the Twools control panel home page , or as you called it above , “the Home screen”.

    But it seems I cannot get it to work if my hosting service is a free PaaS like OpenShift.

    I have problems getting to see the Twools control panel home page set up through OpenShift .

    After I followed your instruction “Click update and then click on the “Launch Twools” button to begin!”

    , the result is just a blank page.

    No color no words. Nothing . Blank white page.

    Please enlighten.

    Thanks a million.

    • Ian Anderson Gray

      Hi. Sorry you can’t get this to work. Are you using the standalone version or the WordPress version? Although it requires WordPress to run the WordPress version is actually easier to use and manage (you don’t have to have a site to use it). Having said that, the standalone version should work fine.
      I’m not familiar with PaaS so I can’t really comment. As long as you have PHP it should work.

      When you get the blank page can you view source and see if there are any hidden error messages or is it totally blank?

      If you continue to struggle I could have a look deeper and see if I can find out what is happening. Email me through my contact form if you like.

  • dts

    Can’t install Twools ;(

    Getting blank page with error

    Warning: file_put_contents(/var/www/vhosts/ failed to open stream: Permission denied in /var/www/vhosts/ on line 43
    Sorry, there was a problem. We couldn’t save the cached file of the Get Lists request.

    • Ian Anderson Gray

      Sorry to hear that. I assume you’ve installed it on a web server (i.e. not locally)?

      The cache folder needs write permissions. Can you change the folder to read/write permissions? It’s at /twools/home/incs/cache/

  • Emiliano Sturniolo

    Hi Ian

    Thank for share with us this great tool.

    I’m using it with no problem in a pay hosted website, but I can’t run it into my own VPS (where I must config all)

    I installed PHP (5.3.10) and cURL (7.22). I see the login page, and when I put my credential the system say something like this:

    “Fatal error: Uncaught exception ‘Exception’ with message ‘You need to
    install cURL, see:‘ in
    Stack trace:
    #0 /var/www/incs/getlists.php(40):
    #1 /var/www/index.php(4): include(‘/var/www/incs/g…’)
    #2 {main}
    thrown in /var/www/incs/TwitterAPIExchange.php on line 37″

    Do you have any clue about this?


    • Ian Anderson Gray

      Weird. Has cURL definitely been installed? Unfortunately I haven’t spent much time in server admin- I leave that to our host to do that. The error message is saying that it can’t find cURL so something is going wrong there. Sorry I can’t be much more help.

      • Emiliano Sturniolo

        Thanks anyway.
        The problem is that in the paid web host, the tool works fine, but always has timeouts with IFTTT, so I decided to install in my own VPS.
        I mean, the RSS results has some delays (4 or 5 seconds) so IFTTT returns a Timeout in the query.

        Do you have any idea how to perform the speed when I try to get some RSS info?
        Or another option: some free host that support Twools?


        • Ian Anderson Gray

          Are you using Twools to unshorten URLs? That is quite slow (as it has to go through all the redirects). However I’ve never had an issue with IFTTT returning a timeout in the query. Have you checked the RSS feed itself in your browser? Is that displaying a timeout error message? If so, you may need to extend your PHP timeout.

          Also, just a bit more background on how Twools manages caching. Currently Twools only caches the response from Twitter. Each time you request the RSS feed it filters the cached response. This should be very quick, but like I said it will always be slow for unshortening urls. I may look at caching RSS feeds in future versions of Twools.

          • Emiliano Sturniolo

            No, I’m using the “User Timeline” option.
            And yes, everytime that I created a new RSS, I tested in my browser first. Never had a timeout, but the response is slow (3 o 4 seconds)
            I’m starting to think that the problem is in the webhost and not of Twools or IFTTT.

            Sadly is the only webhost that I have, and I will not pay another just for Twools.

            In the VPS I have the “cURL” problem, so… I don’t know. I should find a free server to host Twools. Suggestions are accepted.

            Anyway thanks for you quick responses. It’s a great tool.

          • Ian Anderson Gray

            That is strange. The script loads quickly for me. Have you had a chat with your web host? Is it a shared web host? I’m running mine on a VPS, but it’s fully managed.

          • Emiliano Sturniolo

            No, I didn’t contacted the help desk yet. And is a shared webhost.
            In your VPS (I’m using Digital Ocean), when you say “fully managed”. Managed by you or by them?

            If you manage the VPS, do you have to do some config with cURL when you installed it?

          • Ian Anderson Gray

            It still should work on a shared host, but you might find it runs slowly. Some web hosts slow down certain processes to keep the whole server running smoothly.

            The VPS is fully managed by our hosting company- they install everything and manage updates. However they still give us root access. The best of both worlds. Didn’t have to do any new configs to run Twools, so it shouldn’t be an issue as far as I can tell.

          • Emiliano Sturniolo

            I wanna cry.

            I’ll restore from a previous backup all the VPS and start from 0.
            I’ll keep you notice

          • Emiliano Sturniolo

            If you allow me, I’ll not give up.

            I started all from scratch, and now I’ve that message in my browser when I try to access to Twools:
            “Warning: file_put_contents(/var/www/incs/cache/lists.json): failed to
            open stream: Permission denied in /var/www/incs/getlists.php on line 44
            Sorry, there was a problem. We couldn’t save the cached file of the Get
            Lists request.”

            The line 44 is:
            “file_put_contents($cache_file_get_lists, $string, LOCK_EX) OR exit(“Sorry, there was a problem. We couldn’t save the cached file of the Get Lists request.”);”

            Any ideas?

          • Emiliano Sturniolo

            Hi. Any ideas for the previous post?


          • Ian Anderson Gray

            Sorry for the delay. The incs/cache folder needs to have read/write permissions in order to save the cache file. Can you change the cache folder so that it has full permissions? If you are familiar with “CHMOD” then set the directory to 755. You can usually do this in your FTP software. Does that make sense?

          • Emiliano Sturniolo

            Don’t worry.

            I assumed it was a permissions problem, but I preffered ask first.

            Works perfect now. The only problems is that with 755 the issue don’t resolv.

            I had to set 777 in /var/www/incs/cache and then starts to work.

            Is that ok? I’m not friend of 777 folders.

          • Ian Anderson Gray

            Hmmm, this might be something to check with your host. I don’t have to have folders set to 777, but my host runs suPHP which stops you needing to do this.

          • Emiliano Sturniolo

            I undestand. So with that only folder with 777 permissions isn’t too risky, I think…

  • Pingback: Introducing Twools- Twitter RSS Feeds Unleashed #SeriouslySocial

  • vexersa


    Twool looks great but after installation and after clicking “Launch Twools” nothing happens, I am just returned to the home page.

    • Ian Anderson Gray

      Oh dear, sorry to hear that. What happens when you the source? Is there any code, or is it totally blank? It could be that there is a PHP error, but you don’t have PHP to output errors. It would be useful to know what the error is. Can you switch displaying errors on? You may need to chat to your host about that. Let me know how you get on.

  • Jonathan Côté


    I have just installed the WordPress version of Twools and let me first say that it’s an amazing tool that does exactly what I had been looking for for a while.

    I just have one little problem with the tweet URLs that it returns. It seems to convert the numbers associated with specific tweets, turning them into dead links.

    As an example, this:
    somehow becomes this:

    So while I can read the tweet’s text fine in the RSS feed, when I click it to see the source, I always get a dead link. Any idea what could be causing this? Some config that I have to change somewhere in WordPress maybe?

    • Ian Anderson Gray

      Hi Jonathan, so sorry for the delay in getting back to you. That’s really weird! Do you know whether the server you use runs Linux or Windows and whether it is 32 or 64 bit? I don’t know whether that makes a difference. However, it seems that the Tweet ID in the URL is being treated as a number and is bigger than your operating system or PHP can cope with. I am confused as to why it’s doing this on your set up, because I haven’t come across it before. If you are comfortable with editing code, then you could try the following…
      Open the following file in Twools: wp_content/plugins/twools/home/incs/generateRSS.php
      Find the following line:
      $_id = $items['id'];
      and change to:
      $_id = strval($items['id']);

      This will force PHP to treat the id as a string instead of a number.
      Let me know how you get on.

      • Jonathan Côté

        Hello Ian,

        Thank you for your reply. I have tried with $_id = strval($items['id']); and it doesn’t seem to work. It gives me the same result.

        Before you replied, I had experimented a little bit and the best result I got was by adding the following line after the first one refering to $_id in the code:

        $_id = number_format($_id, 0, ‘.’, ”);

        When I add this line, it works I would say about 80% of the time. Other times, it seems like it doesn’t return the right status ID and while I see the right tweet text in the RSS feed, when I click it, I get presented with another tweet or a dead link. Somehow, the tweet ID is just slightly different than the right one. In one case, the right tweet ID was:
        But the result I got was:

        I wonder if there is something I could change to the number_format function to avoid this.

        I also suspect that it might have to do with the PHP settings on the server where I have it hosted. I looked at the details on my host’s control panel. Here are a few details:

        OS: Linux
        PHP Version: 5.4.24
        PHP memory_limit: 64M
        PHP safe_mode: on
        PHP register_globals: off
        PHP max_input_time: 60

        Any idea if one of these settings might be wrong?

        Thanks again. :)

        • Ian Anderson Gray

          Hi Jonathan, I am a bit confused as to what the issue could be. I’ve never used safe_mode, but I don’t think this would cause the problem. I’ve tried Twools under PHP 5.2.x, 5.3.x and 5.4.x and it works fine. I wonder whether you could post a question in one of the Stack Exchange forums to see if someone could help? It sounds like a PHP issue. Sorry I couldn’t be of any more help.

  • Pingback: How To Filter Your Tweets To Facebook Using WordPress, Twools & IFTTT | modsuperstar dot ca

  • Marco Pelz

    Hi, I installed the stand alone version on my website. After login the following message appears: Warning: Cannot modify header information – headers already sent by (output started at /home/p/f/pfconsulting/www/twools/home/incs/config.php:1) in /home/p/f/pfconsulting/www/twools/home/incs/login.php on line 42

    Warning: Cannot modify header information – headers already sent by (output started at /home/p/f/pfconsulting/www/twools/home/incs/config.php:1) in /home/p/f/pfconsulting/www/twools/home/incs/login.php on line 43

    • Ian Anderson Gray

      Hi Marco, sorry for the problem you had. Looks like there is an issue with the login page. What version of PHP are you running? Might be best contacting me through my contact form to see if I can troubleshoot.

  • jaime_moscoso

    Installed the standalone version in my server and have generated a search feed that goes to pushbullet through IFTTT. A question: How often the feeds are refreshed or is it realtime?

    A suggestion for ubuntu users: if you get the “you need to install cUrl” error, the easiest solution is just to do apt-get install php5-curl.

    • Ian Anderson Gray

      Hi Jamie, thanks for your suggestion for how to install cURL for Ubuntu.

      IFTTT updates every 15 minutes. As for Twools, it’s all down to how long you set your cache time for in settings. I’ve got mine set to 3600 seconds which is 1hr. This had reminded me that I hadn’t updated the documentation for the standalone version. In the config.php file you’ll find the cache line here:

      // How long should we cache each API request? If there is no default value set, we’ll use 1 hour
      $cached_time = 3600;

      If you want 15 minutes then change the 3600 to 900 which is 15 minutes in seconds.

      You can reduce the cache time, but be aware that you might reach a the API limit within the 15 minute time frame. I hope that makes sense.

  • modsuperstar

    I was wondering if there was any way to make it so feeds will display the original URL and not the Twitter shortened URL. I have my own personal URL shortener and would prefer showing my URL than the Twitter one. I use IFTTT to feed Tweets to Facebook and would prefer the end user seeing my branded URL than Twitter’s urls, since nobody on Twitter even really sees those. If this possible? I know the data is there in the JSON, I just wasn’t sure if you could parse the feed and replace it with the original URL.

  • Paul1098

    This is an amazing tool, thank you for building it. Is there a way to go back and edit the feeds I have already created?

    • Ian Anderson Gray

      Thanks, Paul. All feeds are either saved to the cache or created on the fly. You can’t feeds you’ve created before because this will change the URL. One of the main reasons for this is so that a hacker can’t just create a feed by hacking the URL. A secret code is appended to the URL which is based on the data and your secret string. You are best just creating a new one, but obviously this will have a new URL. Hope that makes sense.

  • Rick Mendes

    Amazing tool, can’t wait to try this out on my own server ! thanks so much for sharing this out there, amazing value for communities ! thanks again!

    • Ian Anderson Gray

      Thanks, Rick. Hope it works well for you. Are you using the standalone or WordPress version?

      • Rick Mendes

        will try both for 2 different things i need to monitor