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 を使う。
手順
scripts/report.pyまたはopen-webui-skillを使って全チャネル投稿、全ユーザーチャット、新規ナレッジを取得する。scripts/report.pyを使う場合は、返却JSONのsummary_input.channel_messages[*].content、summary_input.chat_messages[*].content、summary_input.knowledgeを読み、Skill呼び出し元のAgentがLLMとして総合的に要約する。Python内ではLLMを呼び出さない。- チャネル投稿とチャット投稿の本文をどちらも要約対象に含める。ただし、チャットは個人情報を含みやすいため、チャットIDやチャットURLはレポート本文に出さない。
- URLを張る場合はチャネルURLだけを使う。メッセージ単位のURL、チャットURL、チャットIDは出力しない。
- チャネルリンクは表示名を
#<チャネル名>、リンク先をOPEN_WEBUI_PUBLIC_URL/channels/<channel_id>形式にする。例:[#report](http://webui.example/channels/2b63b27b-fc60-4b84-bb04-e51d2fced360) - 同じ項目の
🔗 URLには同じリンクを重複して並べない。 - 人間とAIの投稿を区別せず、どちらも活動内容として扱う。
- 必要に応じてスレッド返信や添付ファイル内容も確認する。
- Markdown本文は必ず日本語で作成する。固有名詞、チャンネル名、ユーザー名、コード、ログ断片は原文を保持してよい。
補助コマンド
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回だけ出す。
出力形式
ユーザーから別指定がない限り、以下の日本語構成を使う。見出しには適宜絵文字を付けて、一覧性を高める。
---
## 📊 アクティビティレポート (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 に渡す。
python3 /opt/inferlab/skills/open-webui-skill/scripts/client.py channels post \
--channel report \
--file ./activity_report.md