過去7日間の活動をWakaTimeから取得して自動でTwitterにツイートしよう

ツイート

該当のツイート (opens new window)

上のような画像のツイートを一週間に一回ツイートするワークフローをGitHub Actionsで作ります。

ツイートする内容は

  • 一週間のコーディング時間
  • 1日のコーディング平均時間
  • コーディングやブラウジング、デバッキングを一週間で何時間していたか
  • VS Code などのエディタを何時間使用していたか
  • コ-ディングしている時に使用した言語を一週間で何時間使用していたか

になります。

# WakaTime とは

公式サイト (opens new window)

VS CodeとかJetBrains IDEなどのコードエディタやIDE、ブラウザにWakaTimeが公開しているプラグインを導入して、コーディングしている時間やコーディングに使用した言語、ブラウジングしている時間を記録してくれるサービス

下のような画像も生成できるよ

WakaTime - Languages over All Time

# 必要なもの

  • WakaTimeのAPIトークン
  • TwitterのAPIキーシークレットキー
  • Twitterのアクセストークンシークレットトークン
  • GitHub Actionsを使うので、GitHubのアカウント

これらと、適当にリポジトリを作成しといてください。

# リポジトリにワークフローで使うシークレット登録する

アクセストークンなどの公開してはいけない情報をワークフローで使用しても大丈夫なように、Secretsに登録します。

リポジトリのSettingsからSecretsをクリックすると、下の画像と同じようなものが出てくると思います。

GitHub - Repository Secrets

New secretをクリックして、取得したTwitterのアクセストークンなどを下記の名前で登録してください。

  • WAKATIME_API_KEY
    • WakaTimeのAPIキーをValueに入れて追加してください
  • TWITTER_CONSUMER_KEY
    • TwitterのAPIキーをValueに入れて追加してください
  • TWITTER_CONSUMER_KEY_SECRET
    • TwitterのAPIシークレットキーをValueに入れて追加してください
  • TWITTER_ACCESS_TOKEN
    • TwitterのアクセストークンをValueに入れて追加してください
  • TWITTER_ACCESS_TOKEN_SECRET
    • TwitterのアクセスシークレットトークンをValueに入れて追加してください

# ツイートするワークフローを作成する

リポジトリのActionsからset up a workflow yourselfNew workflowをクリックして下記のYAMLに置き換えてコミットしてください。

name: Tweet Schedule

on:
  schedule:
    - cron: "0 0 * * 0"

jobs:
  tweet:
    runs-on: ubuntu-latest
    steps:
    - uses: docker://ghcr.io/inkohx/wakatime-tweet-activity:1.0.0
      env:
        TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
        TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
        TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
        TWITTER_CONSUMER_KEY_SECRET: ${{ secrets.TWITTER_CONSUMER_KEY_SECRET }}
        WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}

これで、UTC 00:00 Sundayに一回だけこのワークフローが稼働し、ツイートするようになります。

# どんなプログラム書いてるの

このリポジトリ (opens new window)にプログラムを公開しています。

Rustを前々から扱ってみたかったので、Rustを使用しています。

GitHub Container RegistryにDockerイメージ (opens new window)も公開しています。