A twitter bot (@TrendingGitlab) to tweet trending repositories from GitLab.
Follow us at @TrendingGitlab.
Important: This is not an official GitLab or Twitter product.
- Tweets trending projects every 30 minutes
- Refreshes the configuration of twitters URL shortener t.co every 24 hours
- Greylisting of repositories for 30 days (to avoid tweeting a project multiple times in a short timeframe)
- Maximum use of 140 chars per tweet to fill up with information
- Debug / development mode
- Multiple storage backends (currently Redis and in memory)
- Download the latest release
- Extract the archive (zip / tar.gz)
- Start the bot via
./TrendingGitlab -debug
For linux this can look like:
curl -L https://github.com/whitef0x0/TrendingGitlab/releases/download/v0.4.0/TrendingGitlab-v0.4.0-linux-amd64.tar.gz -o TrendingGitlab-v0.4.0-linux-amd64.tar.gz
tar xzvf TrendingGitlab-v0.4.0-linux-amd64.tar.gz
cd TrendingGitlab-v0.4.0-linux-amd64
./TrendingGitlab -debug
$ go run main.go
Usage of go run main.go
-debug
Outputs the tweet instead of tweet it (useful for development). Env var: TRENDINGGITHUB_DEBUG
-expvar-port int
Port which will be used for the expvar TCP server. Env var: TRENDINGGITHUB_EXPVAR_PORT (default 8123)
-storage-auth string
Storage Auth (e.g. myPassword or <empty>). Env var: TRENDINGGITHUB_STORAGE_AUTH
-storage-url string
Storage URL (e.g. 1.2.3.4:6379 or :6379). Env var: TRENDINGGITHUB_STORAGE_URL (default ":6379")
-twitter-access-token string
Twitter-API: Access token. Env var: TRENDINGGITHUB_TWITTER_ACCESS_TOKEN
-twitter-access-token-secret string
Twitter-API: Access token secret. Env var: TRENDINGGITHUB_TWITTER_ACCESS_TOKEN_SECRET
-twitter-conf-refresh-time duration
Twitter: Time interval to refresh the configuration of twitter (e.g. char length for short url). Env var: TRENDINGGITHUB_TWITTER_CONF_REFRESH_TIME (default 24h0m0s)
-twitter-consumer-key string
Twitter-API: Consumer key. Env var: TRENDINGGITHUB_TWITTER_CONSUMER_KEY
-twitter-consumer-secret string
Twitter-API: Consumer secret. Env var: TRENDINGGITHUB_TWITTER_CONSUMER_SECRET
-twitter-follow-new-person
Twitter: Follows a friend of one of our followers. Env var: TRENDINGGITHUB_TWITTER_FOLLOW_NEW_PERSON
-twitter-follow-new-person-time duration
Growth hack: Time interval to search for a new person to follow. Env var: TRENDINGGITHUB_TWITTER_FOLLOW_NEW_PERSON_TIME (default 45m0s)
-twitter-tweet-time duration
Twitter: Time interval to search a new project and tweet it. Env var: TRENDINGGITHUB_TWITTER_TWEET_TIME (default 30m0s)
-version
Outputs the version number and exit. Env var: TRENDINGGITHUB_VERSION
Every parameter can be set by environment variable as well.
Twitter-API settings (twitter-access-token
, twitter-access-token-secret
, twitter-consumer-key
and twitter-consumer-secret
) are necessary to use the Twitter API and to set up a tweet by your application.
You can get those settings by Twitter's application management.
If you want to play around or develop this bot, use the debug
setting.
It avoids using the Twitter API for tweet purposes and outputs the tweet on stdout.
The Redis url (storage-url
)is the address of the Redis server in format ip:port (e.g. 192.168.0.12:6379).
If your server is running on localhost you can use :6379 as a shortcut.
storage-auth
is the authentication string necessary for your Redis server if you use the Authentication feature.
Why is a storage backend needed at all?
We are looking for popular projects in a regular interval. To avoid tweeting a project or developer multiple times after another we add those records to a blacklist for a specific time.
At the moment there are two backends implemented:
- Memory (used in development)
- Redis (used in production)
We implemented a small growth hack to get a few followers. This hack was suggested by my colleague @mre. It works like described:
- Get all followers from @TrendingGitlab
- Choose a random one and get the followers of the choosen person
- Check if this person follows us already
- If yes, repeat
- If no, follow this person
This feature can be activated via the twitter-follow-new-person
flag.
I love to discover new tools, new projects, new languages, new coding best practices, new exciting ideas and new people who share the same passion like me. I use twitter a lot and wanted to have a place to check trending repositories on GitLab as there seemed to be no bot or service currently doing this.
This project is released under the terms of the MIT license.