開発者アクティビティを表示する
Takuhon は開発者アクティビティ — GitHub の言語と contribution・WakaTime のコーディング
時間・派生した rank — を、プロフィール上のダッシュボードとして、また埋め込み可能な
アクティビティバッジ(SVG)として要約できます。これは opt-in です:settings.activity
で有効化し、シークレットを out of band で渡し、スナップショットを取得する sync ステップ
を実行します。
1. takuhon.json で有効化する
Section titled “1. takuhon.json で有効化する”{ "settings": { "activity": { "enabled": true, "github": { "username": "octocat" }, "wakatime": { "username": "octocat" }, "showRank": true } }}enabledがマスタースイッチ(既定false)で、trueになるまで何も表示されません。github.usernameとwakatime.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_KEY | WakaTime のコーディング時間を読むために必須。 |
3. スナップショットを sync する
Section titled “3. スナップショットを sync する”sync された metrics は takuhon.json の 外 に保存されるため、正本のプロフィールは
揮発的なデータを持ちません。
ローカル では sync コマンドを実行します — プロフィールと並ぶ activity.json を
書き出します:
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 に保存します。
4. バッジを埋め込む
Section titled “4. バッジを埋め込む”スナップショットが存在すると、Takuhon はアクティビティカードを light / dark の 2 種類の SVG バッジとしてレンダリングできます:
- CLI:
settings.activity.enabledがtrueでプロフィールの隣にactivity.jsonが あるとき、takuhon buildがdist/activity.svgとdist/activity-dark.svgを書き 出します。 - Cloudflare:
GET /activity.svg?theme=light|darkがバッジを直接配信します(公開・ キャッシュ付き)。activity が有効でスナップショットが存在するまでは404を返します。
GitHub プロフィール README には画像と同じように埋め込めます:
takuhon activity show でスナップショットが保存されたことを確認し、プロフィール
ページにアクティビティカードが表示されることを確認します。Cloudflare では
GET /activity.svg(バッジ)または GET /api/activity(JSON のスナップショット)を
リクエストします。
| 環境 | sync | バッジ |
|---|---|---|
| CLI | ✅ takuhon activity sync | ✅ takuhon build → SVG ファイル |
| Cloudflare | ✅ cron トリガ → KV | ✅ GET /activity.svg |
| 静的エクスポート | ❌ スケジュール sync なし | — |
settings.activity の全フィールドと制約は
スキーマリファレンス を参照してください。