Samuraizer — サイバーセキュリティナレッジベースエンジン
💡 Samuraizer の理由
セキュリティ研究者なら誰でも経験があります — 興味深い GitHub リポジトリ、新しい CVE の writeup、新しいエクスプロイト手法に関するブログ記事を見つける。それを WhatsApp で自分に転送する。すぐにチャットの海に埋もれる。数週間後、実際にその記事が必要になる — しかし見つからない。
もう二度と見つけられないリンクを送るのはやめましょう — Samuraizer に一度送れば、要約され、タグ付けされ、永続的に検索可能になります。
| Before 😵 |
After 🗡️ |
 チャット履歴に埋もれる散らばったリンク |
 分析・タグ付け・発見可能に |
🔐 ローカルファーストのプライバシー(ローカル専用機能)
🎯 追加のプライバシーモード(ローカル専用) — ollama で実行すれば、すべてのデータは自分のマシンに留まります。
- 🗄️ ローカルベクトルストレージ(
samuraizer.db)+ Ollama によるローカル AI 埋め込み
- ⚡ モデルをプル後は完全オフラインで動作(
ollama pull qwen3:4b、ollama pull qwen3-embedding:8b)
- ✅ エアギャップ/隔離環境が必要なセキュリティチームや研究者に最適。
🧩 概要
🔍 分析 — URL を貼り付けて結果をリアルタイム表示
- 📝 1つ以上の URL(GitHub リポジトリ、CVE writeup、ブログ記事、YouTube 動画)を貼り付けると、結果がリアルタイムでストリーミング表示されます
- 📄 ファイルをアップロード(ブラウザまたは Telegram から直接)— テキスト全体を抽出し、分析、保存、UI で表示可能
- 対応形式:
.pdf、.docx、.pptx、.txt、.md
- 🗞️ ブログスキャナー:ブログのホームページを貼り付けて、すべての記事リンクを一度に抽出し、一括分析
- ✨ おすすめ記事: 未読の関連エントリが各セッションで Analyze タブに表示され、キューを進めやすくします
🗂️ ナレッジベース
- ✏️ インラインタグ編集(エントリ、フィード、リストアイテムにタグを追加/削除)
- 🔎 セマンティック検索(Gemini 埋め込みによるベクトル検索)+ 従来の全文検索
- 🧩 タグクラウド + 複数フィルタリング(タグ、カテゴリ、ソース、リスト、既読/有用)
- 📚 リスト管理 — エントリを手動リスト、RSS リスト、チャンネルリストにグループ化
- 👁️🗨️ ホバープレビュー(サマリーカード)とクイックコピーボタン
🗺️ ナレッジグラフ
- ナレッジベース全体をインタラクティブな力指向グラフで可視化
- エントリとタグがノード — エッジはどのタグがどの記事にリンクしているかを示す
- クリックでエントリをプレビュー、ダブルクリックで元の URL を開く
- カテゴリ別に色分け(CVE、記事、ツール、動画、ブログなど)
- タグを検索して、グラフ上の関連クラスタをハイライト
- RSS/Atom フィードを追加 — サーバーが1時間ごとにポーリングし、新しい投稿を自動取り込み・分析
- 新しい投稿は自動的にナレッジベースに追加
- 各フィードは独自のリストになり、一括レビューが容易
- フィードアイテムにはソースメタデータが表示され、他のエントリと同様にタグ付け・フィルタリング可能
🎥 YouTube チャンネル登録
🤖 Telegram ボット(オプション)
- 任意の URL をボットに送信 — 同じバックエンドで分析し、整形されたカードを返す
- PDF ファイルを送信 — ダウンロード、分析、結果カード(ファイルの表示/ダウンロードリンク付き)を返す
- 分析中のライブ進捗状況をストリーミング
- おすすめ記事の通知を受信 — 未読エントリを能動的に表示
 URL 分析 |
 日次おすすめ記事 |
💬 チャット(RAG + ストリーミング + ピン留めコンテキスト)
- ナレッジベースに対して質問 — 最も一致するエントリを引用して回答
- ⚡ ストリーミング応答(ライブタイピング + ソースごとの関連性スコア)
- 🗂️ 複数のチャットセッション(履歴保存、モデル選択可能)
- 📌 特定の記事をコンテキストとしてピン留め —
@ でオートコンプリートまたは @ 参照ボタンを使用
- エントリをピン留めすると、それらの記事のみから Gemini が回答 — RAG ノイズなし
- ピン留めされたエントリは入力欄の上にチップとして表示;ソースにはスコアの代わりに 📌 バッジ
- 特定の PDF、writeup、CVE を深掘りするのに最適
 ソーススコア付き RAG チャット |
 ピン留めコンテキストチャット |
[!IMPORTANT]
Samuraizer の未来を形作りましょう! 現在、ローカル LLM や Obsidian エクスポートなどの新機能について投票を受け付けています。
こちらから投票してください!
🏗 アーキテクチャ(高レベル)
flowchart LR
Browser[Browser UI] -->|HTTP| Frontend[React Frontend]
Frontend -->|REST/NDJSON| Backend[Flask API]
Backend -->|SQL| SQLite[(samuraizer.db)]
Backend -->|API| Gemini[Gemini 2.5 Flash]
Backend -->|local API| Ollama[Ollama - Local LLM]
Backend -->|GitHub API| GitHub[GitHub]
Backend -->|RSS| RSS[RSS feeds]
Telegram[Telegram Bot] -->|HTTP| Backend
🧠 仕組み(エンドツーエンド)
- Web UI(または Telegram ボット)経由で URL または PDF を送信
- バックエンドがタイプ(GitHub リポジトリ、ブログ記事、RSS フィード、PDF など)を判別し、コンテンツを取得/抽出
- コンテンツを Gemini 2.5 Flash に送信して生成:
- 簡潔な要約
- カテゴリとタグ
- (オプション)セマンティック検索に使用する埋め込み
- 結果を
samuraizer.db に保存し、フロントエンドに表示
- フロントエンドで可能な操作:
- タグ、カテゴリ、ソース、リスト、既読/有用フラグでフィルタリング
- タグのインライン編集(変更は
PATCH /entries/<id> で永続化)
- セマンティック検索(Gemini 埋め込みによるベクトル検索)
- RSS フィードは定期的にポーリングされ、新しい投稿は自動取り込み
🧰 技術スタック
| 層 | 技術 / ライブラリ |
|---|
| バックエンド | Python, Flask, SQLite, feedparser, PyMuPDF |
| LLM | Gemini 2.5 Flash(Gemini API)、Ollama(ローカル、オプション) |
| フロントエンド | React 18, Vite, Tailwind CSS |
| ボット | python-telegram-bot v20 |
| トランスクリプト | transcriptapi.com |
🚀 セットアップ
お好みのセットアップ方法を選択してください:
⚙️ ローカルセットアップ(手動インストール)
0) リポジトリをクローン 📥
git clone https://github.com/zomry1/Samuraizer.git
cd Samuraizer
1) 設定 🔐
.env.example を .env にコピーし、値を入力してください。
また、Web UI の Settings タブを開いて、プロバイダー、API キー、Ollama モデル名、埋め込みモデル名などを保存前に調整することもできます。
cp .env.example .env