副業の勤怠を自動記録するスキル。Slack MCP でチェックイン・アウト投稿を取得し、Chrome閲覧履歴で時刻と作業内容を補完する。Slack MCPが未接続の場合はChrome履歴のみで動作する。
Slack MCPとChrome閲覧履歴を組み合わせて、副業の勤怠を自動記録する。
/timecard today 今日の勤怠を取得・表示・保存
/timecard yesterday 昨日分
/timecard week 今週の集計
/timecard month 今月の集計(請求書作成用)
.fukugyo/config.json を読み込む。slack セクションを確認する。
{
"slack": {
"my_user_id": "UXXXXXXXX",
"channels": {
"CXXXXXXXX": "株式会社A",
"CYYYYYYYY": "株式会社B"
}
},
"checkin_keywords": ["おはよう", "おはようございます", "出勤", "始めます"],
"checkout_keywords": ["おつかれ", "おつかれさまでした", "退勤", "終わります", "上がります"]
}
Slack MCPが利用可能な場合、以下を行う:
config.json の slack.channels に登録されているチャンネルIDを確認するslack_get_channel_history ツールで取得するslack.my_user_id と一致するメッセージだけ絞り込むcheckin_keywords に一致する最初の投稿 → チェックイン時刻checkout_keywords に一致する最後の投稿 → チェックアウト時刻slack.channels でクライアント名を解決する結果を以下の JSON 形式にまとめ、FUKUGYO_SLACK_DATA 環境変数にセットして timecard.py を呼び出す:
{
"株式会社A": { "checkin": "2026-03-04T09:12:00", "checkout": "2026-03-04T18:30:00" },
"株式会社B": { "checkin": "2026-03-04T10:00:00", "checkout": null }
}
呼び出し例:
FUKUGYO_SLACK_DATA='{"株式会社A":{"checkin":"2026-03-04T09:12:00","checkout":"2026-03-04T18:30:00"}}' \
python3 scripts/timecard.py today
Slack MCPが利用できる場合であってもエラー( invalid_authなど)になる場合は、curlで直接Slack APIを叩いて取得する。SLACK_BOT_TOKENは .mcp.json などから取得する。SLACK_BOT_TOKENは正しいことを前提とする。
curlの例:
curl -s "https://slack.com/api/auth.test" -H "Authorization: Bearer <SLACK_BOT_TOKEN>"
Slack MCPが利用できない場合は環境変数をセットせずに python3 scripts/timecard.py today を実行する。
timecard.py 側で「Slack MCP 未接続」と表示し、Chrome履歴のみで処理を続ける。
上記の環境変数をセットした状態で実行すると、timecard.py が以下を行う:
| 状況 | 対応 |
|---|---|
| Slack MCPが未接続 | 環境変数なしで実行。Chrome履歴のみで処理する |
| チャンネルにBotが招待されていない | Slack MCPがエラーを返す。手動でBotをチャンネルに招待するよう案内する |
| Chromeが起動中 | 「Chromeを閉じてから再実行してください」と表示 |
| 当日のデータが見つからない | 「該当日の記録が見つかりません」と表示 |