Class Projects - Spring 2016


Smart, auto-generated timelines based on social media hashtags.

Screencast of a student prototype called Auto-Timeline
Screencast of a student prototype called Auto-Timeline
What it does

Currently social media users use hashtags to categorize and collect content, but the most popular platforms, Twitter and Instagram, don’t offer much functionality beyond being able to put content into a big bucket.

Auto-Timline offers users the ability to smartly curate and organize social media content. With Auto-Timeline a user simply enters a hashtag and the technology generates a beautiful timeline containing the most notable posts. The system filters by detecting the date range most relevant to the user’s search, as well as by assessing the popularity of posts — those posts from verified accounts and have many retweets/likes.

As a result, Auto-Timeline users save time in their search for the most notable content associated with an event or news story.

How it works


On the front-end the Materialize UI framework helps to style the components. Using jQuery, the front-end sends a GET request to our back-end server. The server responds with a JSON representation of the data for the timeline. This data is then used to instantiate the Timeline and append it to the DOM. An example of instantiating a Timeline in this way can be found in theopen-source examples from TimelineJS3’s Github repository.


The primary selection and filtering processes happen on the back-end server, which was built using Node.js and Express. Once a GET request is issued to the /create endpoint by the front-end, the server parses the request for the query information, and issues queries to the Instagram and Twitter APIs using the TwitterandInstagram-node npm modules.

Twitter allows users to send specific queries to their API. Auto-Timeline sends a query that looks for posts that contain the hashtag the user requested. It also sets the result_type parameter to ‘popular’ in order to find tweets Twitter that are trending or relevant. In many cases, the events that might search for are too new or too small to have any results when this parameter is set. In these cases, the server automatically paginates through API results in order to collect all of the tweets from the last seven days (the longest timeframe allowed by the API). Instagram, on the other hand, allows a longer time period, but Auto-Timeline stops the pagination process after it reaches 7 days.

Once the content is retrieved, it is filtered on the server. There are two sequential steps in the filtration process: date filtering and evaluation. The date filtering step bins the content by day, and removes the leading and trailing days that have a small amount of content in comparison to the day within the range that has the highest number of posts. This method allows the system to automatically find the relevant data range for the event without the user needing to enter it in. The evaluation step first removes all content that isn’t in English, and then adds weight to each piece of content based on number of engagements and the popularity and verification status of the user who posted it. Once the content is ranked, the system selects the top pieces of content for each day in the range and structures them in preparation to be displayed in the timeline.

Each timeline that is created is also saved in a MongoDB database that is host on mLab. A npm module called Mongoose is used to create a schema for each object. The timelines can be referenced by a unique ID, which is handled by and Express route that locates the Timeline content based on a slug that is passed through a URL of this format:<timeline-id>.

Using this process, the system is able to select relevant tweets and Instagram posts to create and store personalized, valuable timelines.

Next Steps

We set out to build a tool that would make the news curation and organization process easier for our target users: news reporters, marketers and general news seekers. Currently, these users are able to search for a hashtag on Twitter and Instagram, and view a set of chronological posts linked to that hashtag, but not in an organized and curated fashion.

We have succeeded in generating an easy-to-use, accessible tool for people to view the most relevant parts of an event or news story.

One relatively unexpected hiccup was figuring out how to smartly select the set of posts our platform would return for each hashtag. We wanted there to be a mix of Twitter and Instagram posts, and for the posts to be spread out over multiple days. We didn’t, however, want to sacrifice quality of these posts just to “fill” a timeline. We created a model for our platform to only return posts on the most “relevant” days associated with the event/story, and posts that were either from verified accounts and/or received a large number of retweets/likes (relative to other posts with that hashtag). We spent lots of time developing this model, so we would certainly consider it a big win for our project.

If we had more time, we would continue to refine our Auto-Timeline platform to improve user experience and our filtering performance. Specifically, for popular hashtags, the pagination process can take a while and slow down results, especially on Instagram. We would also look into allowing users of Auto-Timeline to create “accounts” so they can easily access previously searched timelines, or give them a way to easily implement timelines on their websites. We feel those would be the next logical steps in improving our project, now that the back-end is well-built and ready for implementation.

On the Auto-Timeline home screen, users are able to input their desired hashtag. After clicking Create, the page automatically scrolls down to reveal the timeline associated with the hashtag.

An example of a curated timeline. Users are given a selection of popular Twitter and Instagram posts associated with their desired hashtag.

Below the search bar on the Auto-Timeline home screen, users are given a selection of three timeline examples that put them in the mindset for the ideal type of searches (events, multiple day-long stories).


Jingming Guo, Andrew Linder, Bomani McClendon, Weikang Zhang