A flat-file social activity aggregator
PHP ApacheConf
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



A flat-file social activity aggregator. not actively maintained, but I still love the idea


Social Grinder takes your social media streams and grinds it down in to a simple JSON array.


  • Simple JSON response
  • Per-account caching
  • Supports multiple streams
  • Easy to add new services
  • JSON based config
  • File based, no database needed
  • Pwetty URLs
  • Excessively commented

Setting it up

You can have a look at the demo config or:

Accounts, Services and Streams


A service is a site such as Twitter, or Github. Services are found in /services and are just classes that extend Service. They're pretty easy to write, and there's a few helper functions to make it easier. Check out the GitHub service to see how it's done.


You have an account on a service, or multiple such as a personal and company Twitter account. To add account add object to the account object. See below for an example. Each service has different settings, consult the respective class for available properties. The comments are for explanation, and is not valid JSON.

"account-name": { // Name of the account
    "service": "twitter", // Service of the account
    "cache": 160, // Time to cache the response, in minutes
    "settings": { // Settings for the service
        "username": "sharmech",
        "include-retweets": true



Streams hold and grind multiple accounts. You might want a stream that contains Bob's Twitter feed, Flickr feed, and company Twitter feed, and another stream that contains Sally's Twitter feed, Flickr feed, and company Twitter feed. Streams are added in the streams object. Again, below is an commented example but only to explain, don't keep any comment in your config because it won't work.

"personal": { //Name of this stream
    "accounts":[ //Array of accounts to be ground
    "cors": true, //Wildcard allow-origin
    "count": 15, //Items of activity to be returned
    "client-cache": 1 //Send headers asking for the response to be cached client-side. In minuets, 0 for no caching