Discourse Yearly Review Plugin

Summary: creates a topic that summarizes the previous year’s activity on a forum. Have a look at 2018: The Year in Review to see the topic it created for activity on meta.

:link: GitHub: https://github.com/discourse/discourse-yearly-review
:arrow_right: Install: Follow the plugin installation guide.


The topic displays data in two sections - users and topics. The users section includes:

  • Most Time Reading
  • Most Topics Created
  • Most Replies Created
  • Most Replied to
  • Most Likes Given
  • Most Likes Received
  • Most Visits
  • Users who have been granted a featured badge (the badge is set by the yearly review featured badge Site Setting

The topics section includes:

  • Most Read
  • Most Liked
  • Most Replied to
  • Most Popular
  • Most Bookmarked

The plugin sets thresholds for deciding which topics to display. There need to be a minimum of 10 likes or replies, 5 bookmarks, a score of 10, or one hour’s read time before a topic will be displayed. Categories used in this section are taken from the 5 best public categories that have been set in the yearly review categories Site Setting. If this setting is not configured, the 5 best public categories from the forum will be chosen. “Best” is determined by the category topics_year count. Topics created in read restricted categories are not included in the topics section.

The plugin has a yearly review exclude staff setting. It is enabled by default. When enabled, staff members are excluded from the users section and topics created by staff are excluded from the topics section.

The featured badge is set by the yearly review featured badge setting. A maximum of 15 badge users are displayed. If more than 15 users have been granted the badge, a link to the badge’s page is displayed. If the yearly review featured badge is not configured, this section will not be displayed.

The topic is published automatically through a background job. The job checks that the plugin is enabled and that it is within the first ‘n’ days of the first month of the year (the ‘n’ number of days is currently set to 8, this may need to be bumped up.) It then checks to see if a topic with the title yearly_review.topic_title has already been published by the system user. If all checks pass, the topic is published to the category set in the yearly review publish category setting. If this is not configured, the topic will be published to the Uncategorized category.

If you wish to view the topic before making it public, set the yearly review publish category to a private category.

If you don’t want to wait for the background job to be run, you can publish the topic from the rails console with:

Jobs::YearlyReview.new.execute(force: true)


  • The data is displayed in HTML tables. Tables are wrapped in div tags that have data-review-topic-users="true' and data-review-featured-topics="true" attributes. This allows the tables to be styled when they are displayed on Discourse. The styles are not copied when emails for the topics are created. Emails sent out for the topic don’t look great.

  • emojis in titles are not rendered in the featured topic links


  • 2020-11-20T06:00:00Z Added setting to include stats from private categories
  • 2020-11-20T06:00:00Z Added ability to turn off individual user stats