コンテンツにスキップ

開発者アクティビティを表示する

Takuhon は開発者アクティビティ — GitHub の言語と contribution・WakaTime のコーディング 時間・派生した rank — を、プロフィール上のダッシュボードとして、また埋め込み可能な アクティビティバッジ(SVG)として要約できます。これは opt-in です:settings.activity で有効化し、シークレットを out of band で渡し、スナップショットを取得する sync ステップ を実行します。

{
"settings": {
"activity": {
"enabled": true,
"github": { "username": "octocat" },
"wakatime": { "username": "octocat" },
"showRank": true
}
}
}
  • enabled がマスタースイッチ(既定 false)で、true になるまで何も表示されません。
  • github.usernamewakatime.username で誰の統計を要約するか選びます。GitHub のみ・ WakaTime のみ・両方のいずれも可能です。
  • github.showLanguages / github.showContributions / wakatime.showCodingTime (すべて既定 true)と showRank で表示内容を絞れます。
  • refreshHintHours(1–168)は推奨の更新頻度です。実際の頻度は下記の sync ステップを どれだけ頻繁に実行するかで決まります。

2. シークレットを out of band で渡す

Section titled “2. シークレットを out of band で渡す”

シークレットは環境変数から読み取られます — takuhon.json やフラグからは決して 読みません:

変数用途
TAKUHON_GITHUB_TOKEN任意。GitHub のレート制限を緩和し、contribution カレンダー(token 専用)を有効化。言語はこれが無くても動作。
TAKUHON_WAKATIME_KEYWakaTime のコーディング時間を読むために必須。

3. スナップショットを sync する

Section titled “3. スナップショットを sync する”

sync された metrics は takuhon.json に保存されるため、正本のプロフィールは 揮発的なデータを持ちません。

ローカル では sync コマンドを実行します — プロフィールと並ぶ activity.json を 書き出します:

Terminal window
TAKUHON_WAKATIME_KEY= TAKUHON_GITHUB_TOKEN= takuhon activity sync ./takuhon.json

データを 1 件も取得できなかった sync は last-known スナップショットを保持します — 良い activity.json が空のもので上書きされることはありません。保存内容は takuhon activity show で確認できます。

Cloudflare では cron トリガ が同じ sync をスケジュール 実行し(シークレットは Workers secrets として設定)、スナップショットをプロフィールと 並べて KV に保存します。

スナップショットが存在すると、Takuhon はアクティビティカードを light / dark の 2 種類の SVG バッジとしてレンダリングできます:

  • CLI: settings.activity.enabledtrue でプロフィールの隣に activity.json が あるとき、takuhon builddist/activity.svgdist/activity-dark.svg を書き 出します。
  • Cloudflare: GET /activity.svg?theme=light|dark がバッジを直接配信します(公開・ キャッシュ付き)。activity が有効でスナップショットが存在するまでは 404 を返します。

GitHub プロフィール README には画像と同じように埋め込めます:

![My activity](https://your-domain/activity.svg?theme=dark)

takuhon activity show でスナップショットが保存されたことを確認し、プロフィール ページにアクティビティカードが表示されることを確認します。Cloudflare では GET /activity.svg(バッジ)または GET /api/activity(JSON のスナップショット)を リクエストします。

環境syncバッジ
CLItakuhon activity synctakuhon build → SVG ファイル
Cloudflare✅ cron トリガ → KVGET /activity.svg
静的エクスポート❌ スケジュール sync なし

settings.activity の全フィールドと制約は スキーマリファレンス を参照してください。