Skip to content
A Twitter content curation queue based on GitHub projects.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
lib
scripts
templates
test
.dockerignore
.editorconfig
.eslintrc.json
.gitignore
.travis.yml
CODEOWNERS
CODE_OF_CONDUCT.md
Dockerfile
LICENSE
README.md
config.default.json
index.js
package-lock.json
package.json

README.md

gh-projects-content-queue

Greenkeeper badge Build Status codecov docker hub

A content curation queue based on GitHub projects. Originally built for tweeting. Crowd sources content creation, improves collaboration and gives better control over content quality.

Features

  • Represent tweets as GitHub issues
    • Supports replying and retweets
    • Auto add unhandled mentions as new issues
  • Auto add issues to a column in a dedicated project board
  • Auto post issues from a column in the dedicated board
  • Validate issue content to be valid for posting
  • Scheduling of posts to an exact time
  • Reaction squad system to ping people to react to a mention
  • Auto posting from a column in certain spacing (à la buffer)
  • Reminder system for posts that are due but not ready
  • Auto create posts for events from an ical feed
  • Auto create posts for new discourse threads
  • Auto create posts for posts in an Atom or RSS feed
  • Mastodon support
    • Supports replying, reposts and spoilers

Planned

  • Tweet pinning management (will probably happen for Mastodon first, since there's actually an API for that there)
  • See all the issues with the enhancement tag...

Set up a repo for use with this tool

Requirements

  • GitHub user auth token (will use that to create issues and comment on them etc.)
    • Log in with your GitHub user
    • Go to your settings
    • Go to "Personal access token" and go click on the "Generate new token" button
    • Select the "public_repo" scope and if you are using it with an organization "read:org" and click save
    • Add the resulting token to the config.json file (accounts.github.token property)
  • Twitter API credentials incl. OAuth tokens and secret (will tweet to this account)
    • Create a new App through developer.twitter.com/apps
    • Apply for a developer account if you don't have one yet
    • There is no need to define a redirect URL, just leave the field blank
    • Copy the consumer key and secret to the fields in the config.json file
    • Click on "Create access token"
    • Copy the access token key and secret to the fields in the config.json file
  • Mastodon OAuth access token (will toot to this account)
    • In the following, replace https://mastodoninstance.example.com with the URL of your instance
    • Create a new application at https://mastodoninstance.example.com/settings/applications/new
    • Grant all read and write scopes. In theory the read:accounts, read:statuses and write:statuses should be enough at the moment, but this is untested
    • Go to the application and copy the access token under "Your access token"
    • The instance URL is probably https://mastodoninstance.example.com/api/v1
    • Add both the access token and the instance URL to the fields in the config.json file
  • Node >= 8.0.0

Issue template

Issue templates are generated in the repository. See the documentation for GitHub issue templates.

Configuration

configuration.md

Run

The tool

The tool can be executed with npm start. Note that you should first run npm ci --production or equivalent.

The docker container

Official Docker container: mozillach/content-queue

The latest tag corresponds to the master branch in this repository. Note that the docker container can only be configured via environment.

The tests

The test suite can be ran with the default npm test. It includes linting of the code using eslint and unit tests with ava. Tests require no prior configuration other than running npm ci and that all files from this repository be present.

You can’t perform that action at this time.