# LLM Activity Report Skill

> Open WebUIの全チャネル、全ユーザーチャット、新規ナレッジから日本語の活動レポートを作成する。期間別活動、主要イベント、推奨アクション、潜在的な問題、ユーザー別アクティビティを整理したいときに使用する。

- Skill: `k5-mot/llm-activity-report-skill` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add k5-mot/llm-activity-report-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/k5-mot/llm-activity-report-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: k5-mot (https://skillmd.com/u/k5-mot)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/k5-mot/llm-activity-report-skill

---


# llm-activity-report-skill

## 目的

Open WebUIの指定期間内の全チャネル投稿、全ユーザーチャット、新しく追加されたナレッジをもとに、日本語で活動レポートを作成する。レポートでは、誰が何をしたか、何が変わったか、どのリスクやブロッカーが出たか、次に何を確認すべきかを整理する。

## 実行環境

このSkillは `open-webui-skill` と同じ実行環境で動く。Open WebUIへの接続には `OPEN_WEBUI_BASE_URL` と `OPEN_WEBUI_API_KEY` が必要。レポート内のチャネルURLをブラウザで開けるリンクにする場合は `OPEN_WEBUI_PUBLIC_URL` を設定する。Langfuse補足を含める場合だけ、`LANGFUSE_HOST`、`LANGFUSE_PUBLIC_KEY`、`LANGFUSE_SECRET_KEY` を使う。

## 手順

1. `scripts/report.py` または `open-webui-skill` を使って全チャネル投稿、全ユーザーチャット、新規ナレッジを取得する。
2. `scripts/report.py` を使う場合は、返却JSONの `summary_input.channel_messages[*].content`、`summary_input.chat_messages[*].content`、`summary_input.knowledge` を読み、Skill呼び出し元のAgentがLLMとして総合的に要約する。Python内ではLLMを呼び出さない。
3. チャネル投稿とチャット投稿の本文をどちらも要約対象に含める。ただし、チャットは個人情報を含みやすいため、チャットIDやチャットURLはレポート本文に出さない。
4. URLを張る場合はチャネルURLだけを使う。メッセージ単位のURL、チャットURL、チャットIDは出力しない。
5. チャネルリンクは表示名を `#<チャネル名>`、リンク先を `OPEN_WEBUI_PUBLIC_URL/channels/<channel_id>` 形式にする。例: `[#report](http://webui.example/channels/2b63b27b-fc60-4b84-bb04-e51d2fced360)`
6. 同じ項目の `🔗 URL` には同じリンクを重複して並べない。
7. 人間とAIの投稿を区別せず、どちらも活動内容として扱う。
8. 必要に応じてスレッド返信や添付ファイル内容も確認する。
9. Markdown本文は必ず日本語で作成する。固有名詞、チャンネル名、ユーザー名、コード、ログ断片は原文を保持してよい。

## 補助コマンド

```bash
python3 /opt/inferlab/skills/llm-activity-report-skill/scripts/report.py \
  --since "2026-04-28T00:00:00+09:00" \
  --until "2026-04-28T23:59:59+09:00" \
  --page-size 100 \
  --max-pages 100
```

この補助コマンドは `open-webui-skill` 経由で全チャネル投稿、全ユーザーチャット、新規ナレッジを取得する。返却JSONの `content_markdown` は機械的な下書きであり、最終レポートは呼び出し元Agentが `summary_input` の本文を読んで、下記の出力形式に準拠して作成する。単一チャネルだけを確認する場合は `--single-channel --channel report` を使う。

## 要約ルール

- 主要イベント、推奨アクション、潜在的なリスクの `🧭 概要` は、単なる件数やキーワード数ではなく、取得した投稿本文を総合的に読んで説明する。
- 過去に投稿されたアクティビティレポートや技術ニュースレポートがチャネル投稿に含まれる場合は、そのレポート本文をそのまま再掲せず、そこから分かる活動・論点・リスクだけを抽出する。
- チャット投稿は要約には使うが、`🔗 URL` には出さない。チャットIDも出さない。
- チャネル投稿に関連する項目だけ `🔗 URL` にチャネルリンクを出す。表示名は `#report` のようなチャネル名、リンク先はメッセージIDを含めず、`.../channels/<channel_id>` で止める。
- ひとつの項目内で同じチャネルリンクが複数回出る場合は1回だけ出す。

## 出力形式

ユーザーから別指定がない限り、以下の日本語構成を使う。見出しには適宜絵文字を付けて、一覧性を高める。

```markdown
---

## 📊 アクティビティレポート (YYYY-MM-DD)

- 🔢 集計対象イベント数：N件
- 📅 集計期間：YYYY-MM-DD HH:MM 〜 YYYY-MM-DD HH:MM
- 💬 チャネル投稿：N件 / 🤖 チャットメッセージ：M件 / 📚 新規ナレッジ：K件

<全体的な活動の傾向や重要なポイントを3行程度で日本語で要約する。例：「📝 全体的にチャネル投稿が活発で、特に#generalと#randomで多くの議論があった。ユーザーチャットではユーザーAとユーザーBが頻繁にやり取りしており、新規ナレッジも複数追加された。」>

### 🔥 本日の主要イベント

1. <主要イベントAのタイトル>
   - 🧭 概要：<主要イベントAの内容を日本語で要約する。>
   - 👥 関連ユーザー：<ユーザーの名前>
   - 🔗 URL：<チャネル投稿のURL>
2. <主要イベントBのタイトル>
   - 🧭 概要：<主要イベントBの内容を日本語で要約する。>
   - 👥 関連ユーザー：<ユーザーの名前>
   - 🔗 URL：<チャネル投稿のURL>
3. ...

### ✅ 推奨アクションアイテム

1. <アクションアイテムAのタイトル>
   - 🧭 概要：<アクションアイテムAの内容を日本語で説明する。>
   - 👥 担当者：<ユーザーの名前>
   - ⏰ 期限：<YYYY-MM-DDなど>
2. <アクションアイテムBのタイトル>
   - 🧭 概要：<アクションアイテムBの内容を日本語で説明する。>
   - 👥 担当者：<ユーザーの名前>
   - ⏰ 期限：<YYYY-MM-DDなど>
3. ...

### ⚠️ 潜在的なリスク

1. <潜在的なリスクAのタイトル>
   - 🧭 概要：<潜在的なリスクAの内容を日本語で説明する。>
   - 👥 関連ユーザー：<ユーザーの名前>
   - 🔗 URL：<チャネル投稿のURL>
2. <潜在的なリスクBのタイトル>
   - 🧭 概要：<潜在的なリスクBの内容を日本語で説明する。>
   - 👥 関連ユーザー：<ユーザーの名前>
   - 🔗 URL：<チャネル投稿のURL>
3. ...

### 👥 ユーザー別アクティビティ

1. <ユーザA>：🗨️ N件のチャンネル投稿、🤖 M件のチャット利用
2. <ユーザB>：🗨️ N件のチャンネル投稿、🤖 M件のチャット利用
3. ...

### 📚 新規ナレッジ

- <ナレッジA>：<作成日時>
- <ナレッジB>：<作成日時>
```

## 連携

投稿する場合は、生成したMarkdownを `open-webui-skill` に渡す。

```bash
python3 /opt/inferlab/skills/open-webui-skill/scripts/client.py channels post \
  --channel report \
  --file ./activity_report.md
```

