💼 Qmd
qmdは、個人の知識ベースやメモ
📺 まず動画で見る(YouTube)
▶ 【自動化】AIガチ勢の最新活用術6選がこれ1本で丸分かり!【ClaudeCode・AIエージェント・AI経営・Skills・MCP】 ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Search personal knowledge bases, notes, docs, and meeting transcripts locally using qmd — a hybrid retrieval engine with BM25, vector search, and LLM reranking. Supports CLI and MCP integration.
🇯🇵 日本人クリエイター向け解説
qmdは、個人の知識ベースやメモ
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o qmd.zip https://jpskill.com/download/1160.zip && unzip -o qmd.zip && rm qmd.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/1160.zip -OutFile "$d\qmd.zip"; Expand-Archive "$d\qmd.zip" -DestinationPath $d -Force; ri "$d\qmd.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
qmd.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
qmdフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
💬 こう話しかけるだけ — サンプルプロンプト
- › Qmd で、私のビジネスを分析して改善案を3つ提案して
- › Qmd を使って、来週の会議用の資料を作って
- › Qmd で、現状の課題を整理してアクションプランに落として
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] qmd
QMD — クエリマークアップドキュメント
個人のナレッジベースのための、ローカルでデバイス内完結型の検索エンジンです。Markdown形式のメモ、会議の議事録、ドキュメント、およびあらゆるテキストベースのファイルをインデックス化し、キーワードマッチング、セマンティック理解、LLMによる再ランキングを組み合わせたハイブリッド検索を提供します。これらすべてはクラウドに依存せず、ローカルで実行されます。
Tobi Lütkeによって作成されました。MITライセンスです。
使用する場面
- ユーザーが自分のメモ、ドキュメント、ナレッジベース、または会議の議事録を検索するよう求めた場合
- ユーザーが大量のMarkdown/テキストファイルの中から何かを見つけたい場合
- ユーザーがキーワードgrepだけでなく、セマンティック検索(「Xの概念に関するメモを見つける」)を求めている場合
- ユーザーがすでにqmdコレクションを設定しており、それらをクエリしたい場合
- ユーザーがローカルのナレッジベースまたはドキュメント検索システムをセットアップするよう求めた場合
- キーワード: 「私のメモを検索」、「私のドキュメントで検索」、「ナレッジベース」、「qmd」
前提条件
Node.js >= 22 (必須)
# バージョンを確認
node --version # 22以上である必要があります
# macOS — Homebrew経由でインストールまたはアップグレード
brew install node@22
# Linux — NodeSourceまたはnvmを使用
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
# またはnvmを使用:
nvm install 22 && nvm use 22
拡張機能サポート付きSQLite (macOSのみ)
macOSのシステムSQLiteは拡張機能の読み込みに対応していません。Homebrew経由でインストールしてください:
brew install sqlite
qmdのインストール
npm install -g @tobilu/qmd
# またはBunを使用:
bun install -g @tobilu/qmd
初回実行時に、3つのローカルGGUFモデル(合計約2GB)が自動ダウンロードされます:
| モデル | 目的 | サイズ |
|---|---|---|
| embeddinggemma-300M-Q8_0 | ベクトル埋め込み | 約300MB |
| qwen3-reranker-0.6b-q8_0 | 結果の再ランキング | 約640MB |
| qmd-query-expansion-1.7B | クエリ拡張 | 約1.1GB |
インストールの確認
qmd --version
qmd status
クイックリファレンス
| コマンド | 動作 | 速度 |
|---|---|---|
qmd search "query" |
BM25キーワード検索(モデルなし) | 約0.2秒 |
qmd vsearch "query" |
セマンティックベクトル検索(モデル1つ) | 約3秒 |
qmd query "query" |
ハイブリッド + 再ランキング(全3モデル) | ウォーム時約2-3秒、コールド時約19秒 |
qmd get <docid> |
ドキュメントの全コンテンツを取得 | 即時 |
qmd multi-get "glob" |
複数のファイルを取得 | 即時 |
qmd collection add <path> --name <n> |
ディレクトリをコレクションとして追加 | 即時 |
qmd context add <path> "description" |
検索精度を向上させるためのコンテキストメタデータを追加 | 即時 |
qmd embed |
ベクトル埋め込みを生成/更新 | 可変 |
qmd status |
インデックスの状態とコレクション情報を表示 | 即時 |
qmd mcp |
MCPサーバーを起動 (stdio) | 永続的 |
qmd mcp --http --daemon |
MCPサーバーを起動 (HTTP、モデルをウォームアップ) | 永続的 |
セットアップワークフロー
1. コレクションの追加
ドキュメントを含むディレクトリをqmdに指定します:
# ノートディレクトリを追加
qmd collection add ~/notes --name notes
# プロジェクトドキュメントを追加
qmd collection add ~/projects/myproject/docs --name project-docs
# 会議の議事録を追加
qmd collection add ~/meetings --name meetings
# 全てのコレクションをリスト表示
qmd collection list
2. コンテキスト記述の追加
コンテキストメタデータは、検索エンジンが各コレクションの内容を理解するのに役立ちます。これにより、検索の品質が大幅に向上します:
qmd context add qmd://notes "個人のメモ、アイデア、ジャーナルエントリ"
qmd context add qmd://project-docs "メインプロジェクトの技術ドキュメント"
qmd context add qmd://meetings "チーム同期からの会議の議事録とアクションアイテム"
3. 埋め込みの生成
qmd embed
これにより、すべてのコレクション内のすべてのドキュメントが処理され、ベクトル埋め込みが生成されます。新しいドキュメントやコレクションを追加した後には、再度実行してください。
4. 確認
qmd status # インデックスの状態、コレクション統計、モデル情報を表示します
検索パターン
高速キーワード検索 (BM25)
最適な用途: 正確な用語、コード識別子、名前、既知のフレーズ。 モデルはロードされません — ほぼ瞬時に結果が得られます。
qmd search "authentication middleware"
qmd search "handleError async"
セマンティックベクトル検索
最適な用途: 自然言語の質問、概念的なクエリ。 埋め込みモデルをロードします(最初のクエリで約3秒)。
qmd vsearch "レートリミッターはバーストトラフィックをどのように処理しますか"
qmd vsearch "オンボーディングフローを改善するためのアイデア"
再ランキング付きハイブリッド検索 (最高品質)
最適な用途: 品質が最も重要となる重要なクエリ。 3つのモデルすべてを使用します — クエリ拡張、並列BM25+ベクトル、再ランキング。
qmd query "データベース移行についてどのような決定がなされましたか"
構造化されたマルチモードクエリ
精度を高めるために、異なる検索タイプを単一のクエリで組み合わせます:
# 正確な用語にはBM25 + 概念にはベクトル
qmd query $'lex: rate limiter\nvec: スロットリングは負荷がかかった状態でどのように機能しますか'
# クエリ拡張を使用
qmd query $'expand: データベース移行計画\nlex: "スキーマ変更"'
クエリ構文 (lex/BM25モード)
| 構文 | 効果 | 例 |
|---|---|---|
term |
接頭辞一致 | perf は "performance" に一致 |
"phrase" |
完全一致フレーズ | "rate limiter" |
-term |
用語を除外 | performance -sports |
HyDE (Hypothetical Document Embeddings)
複雑なトピックの場合、回答がどのようなものになるかを記述します:
qmd query $'hyde: 移行計画は3つのフェーズで構成されます。まず、古い列を削除せずに新しい列を追加します。次に、データをバックフィルします。最後に、切り替えを行い、レガシー列を削除します。'
コレクションへのスコープ指定
qmd search "query" --collection notes
qmd query "query" --collection project-docs
出力形式
qmd search "query" --json # JSON出力(解析に最適)
qmd search "query" --limit 5 # 結果を制限
qmd get "#abc123" # ドキュメントIDで取得
qmd get "path/to/file.md" # ファイルパスで取得
qmd get "file.md:50" -l 100 # 特定の行範囲を取得
qmd multi-get "journals/*.md" --json # グロブで一括取得
MCP統合 (推奨)
qmdは、検索ツールを直接提供するMCPサーバーを公開しています。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
QMD — Query Markup Documents
Local, on-device search engine for personal knowledge bases. Indexes markdown notes, meeting transcripts, documentation, and any text-based files, then provides hybrid search combining keyword matching, semantic understanding, and LLM-powered reranking — all running locally with no cloud dependencies.
Created by Tobi Lütke. MIT licensed.
When to Use
- User asks to search their notes, docs, knowledge base, or meeting transcripts
- User wants to find something across a large collection of markdown/text files
- User wants semantic search ("find notes about X concept") not just keyword grep
- User has already set up qmd collections and wants to query them
- User asks to set up a local knowledge base or document search system
- Keywords: "search my notes", "find in my docs", "knowledge base", "qmd"
Prerequisites
Node.js >= 22 (required)
# Check version
node --version # must be >= 22
# macOS — install or upgrade via Homebrew
brew install node@22
# Linux — use NodeSource or nvm
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
# or with nvm:
nvm install 22 && nvm use 22
SQLite with Extension Support (macOS only)
macOS system SQLite lacks extension loading. Install via Homebrew:
brew install sqlite
Install qmd
npm install -g @tobilu/qmd
# or with Bun:
bun install -g @tobilu/qmd
First run auto-downloads 3 local GGUF models (~2GB total):
| Model | Purpose | Size |
|---|---|---|
| embeddinggemma-300M-Q8_0 | Vector embeddings | ~300MB |
| qwen3-reranker-0.6b-q8_0 | Result reranking | ~640MB |
| qmd-query-expansion-1.7B | Query expansion | ~1.1GB |
Verify Installation
qmd --version
qmd status
Quick Reference
| Command | What It Does | Speed |
|---|---|---|
qmd search "query" |
BM25 keyword search (no models) | ~0.2s |
qmd vsearch "query" |
Semantic vector search (1 model) | ~3s |
qmd query "query" |
Hybrid + reranking (all 3 models) | ~2-3s warm, ~19s cold |
qmd get <docid> |
Retrieve full document content | instant |
qmd multi-get "glob" |
Retrieve multiple files | instant |
qmd collection add <path> --name <n> |
Add a directory as a collection | instant |
qmd context add <path> "description" |
Add context metadata to improve retrieval | instant |
qmd embed |
Generate/update vector embeddings | varies |
qmd status |
Show index health and collection info | instant |
qmd mcp |
Start MCP server (stdio) | persistent |
qmd mcp --http --daemon |
Start MCP server (HTTP, warm models) | persistent |
Setup Workflow
1. Add Collections
Point qmd at directories containing your documents:
# Add a notes directory
qmd collection add ~/notes --name notes
# Add project docs
qmd collection add ~/projects/myproject/docs --name project-docs
# Add meeting transcripts
qmd collection add ~/meetings --name meetings
# List all collections
qmd collection list
2. Add Context Descriptions
Context metadata helps the search engine understand what each collection contains. This significantly improves retrieval quality:
qmd context add qmd://notes "Personal notes, ideas, and journal entries"
qmd context add qmd://project-docs "Technical documentation for the main project"
qmd context add qmd://meetings "Meeting transcripts and action items from team syncs"
3. Generate Embeddings
qmd embed
This processes all documents in all collections and generates vector embeddings. Re-run after adding new documents or collections.
4. Verify
qmd status # shows index health, collection stats, model info
Search Patterns
Fast Keyword Search (BM25)
Best for: exact terms, code identifiers, names, known phrases. No models loaded — near-instant results.
qmd search "authentication middleware"
qmd search "handleError async"
Semantic Vector Search
Best for: natural language questions, conceptual queries. Loads embedding model (~3s first query).
qmd vsearch "how does the rate limiter handle burst traffic"
qmd vsearch "ideas for improving onboarding flow"
Hybrid Search with Reranking (Best Quality)
Best for: important queries where quality matters most. Uses all 3 models — query expansion, parallel BM25+vector, reranking.
qmd query "what decisions were made about the database migration"
Structured Multi-Mode Queries
Combine different search types in a single query for precision:
# BM25 for exact term + vector for concept
qmd query $'lex: rate limiter\nvec: how does throttling work under load'
# With query expansion
qmd query $'expand: database migration plan\nlex: "schema change"'
Query Syntax (lex/BM25 mode)
| Syntax | Effect | Example |
|---|---|---|
term |
Prefix match | perf matches "performance" |
"phrase" |
Exact phrase | "rate limiter" |
-term |
Exclude term | performance -sports |
HyDE (Hypothetical Document Embeddings)
For complex topics, write what you expect the answer to look like:
qmd query $'hyde: The migration plan involves three phases. First, we add the new columns without dropping the old ones. Then we backfill data. Finally we cut over and remove legacy columns.'
Scoping to Collections
qmd search "query" --collection notes
qmd query "query" --collection project-docs
Output Formats
qmd search "query" --json # JSON output (best for parsing)
qmd search "query" --limit 5 # Limit results
qmd get "#abc123" # Get by document ID
qmd get "path/to/file.md" # Get by file path
qmd get "file.md:50" -l 100 # Get specific line range
qmd multi-get "journals/*.md" --json # Batch retrieve by glob
MCP Integration (Recommended)
qmd exposes an MCP server that provides search tools directly to Hermes Agent via the native MCP client. This is the preferred integration — once configured, the agent gets qmd tools automatically without needing to load this skill.
Option A: Stdio Mode (Simple)
Add to ~/.hermes/config.yaml:
mcp_servers:
qmd:
command: "qmd"
args: ["mcp"]
timeout: 30
connect_timeout: 45
This registers tools: mcp_qmd_search, mcp_qmd_vsearch,
mcp_qmd_deep_search, mcp_qmd_get, mcp_qmd_status.
Tradeoff: Models load on first search call (~19s cold start), then stay warm for the session. Acceptable for occasional use.
Option B: HTTP Daemon Mode (Fast, Recommended for Heavy Use)
Start the qmd daemon separately — it keeps models warm in memory:
# Start daemon (persists across agent restarts)
qmd mcp --http --daemon
# Runs on http://localhost:8181 by default
Then configure Hermes Agent to connect via HTTP:
mcp_servers:
qmd:
url: "http://localhost:8181/mcp"
timeout: 30
Tradeoff: Uses ~2GB RAM while running, but every query is fast (~2-3s). Best for users who search frequently.
Keeping the Daemon Running
macOS (launchd)
cat > ~/Library/LaunchAgents/com.qmd.daemon.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.qmd.daemon</string>
<key>ProgramArguments</key>
<array>
<string>qmd</string>
<string>mcp</string>
<string>--http</string>
<string>--daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/qmd-daemon.log</string>
<key>StandardErrorPath</key>
<string>/tmp/qmd-daemon.log</string>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.qmd.daemon.plist
Linux (systemd user service)
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/qmd-daemon.service << 'EOF'
[Unit]
Description=QMD MCP Daemon
After=network.target
[Service]
ExecStart=qmd mcp --http --daemon
Restart=on-failure
RestartSec=10
Environment=PATH=/usr/local/bin:/usr/bin:/bin
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now qmd-daemon
systemctl --user status qmd-daemon
MCP Tools Reference
Once connected, these tools are available as mcp_qmd_*:
| MCP Tool | Maps To | Description |
|---|---|---|
mcp_qmd_search |
qmd search |
BM25 keyword search |
mcp_qmd_vsearch |
qmd vsearch |
Semantic vector search |
mcp_qmd_deep_search |
qmd query |
Hybrid search + reranking |
mcp_qmd_get |
qmd get |
Retrieve document by ID or path |
mcp_qmd_status |
qmd status |
Index health and stats |
The MCP tools accept structured JSON queries for multi-mode search:
{
"searches": [
{"type": "lex", "query": "authentication middleware"},
{"type": "vec", "query": "how user login is verified"}
],
"collections": ["project-docs"],
"limit": 10
}
CLI Usage (Without MCP)
When MCP is not configured, use qmd directly via terminal:
terminal(command="qmd query 'what was decided about the API redesign' --json", timeout=30)
For setup and management tasks, always use terminal:
terminal(command="qmd collection add ~/Documents/notes --name notes")
terminal(command="qmd context add qmd://notes 'Personal research notes and ideas'")
terminal(command="qmd embed")
terminal(command="qmd status")
How the Search Pipeline Works
Understanding the internals helps choose the right search mode:
- Query Expansion — A fine-tuned 1.7B model generates 2 alternative queries. The original gets 2x weight in fusion.
- Parallel Retrieval — BM25 (SQLite FTS5) and vector search run simultaneously across all query variants.
- RRF Fusion — Reciprocal Rank Fusion (k=60) merges results. Top-rank bonus: #1 gets +0.05, #2-3 get +0.02.
- LLM Reranking — qwen3-reranker scores top 30 candidates (0.0-1.0).
- Position-Aware Blending — Ranks 1-3: 75% retrieval / 25% reranker. Ranks 4-10: 60/40. Ranks 11+: 40/60 (trusts reranker more for long tail).
Smart Chunking: Documents are split at natural break points (headings, code blocks, blank lines) targeting ~900 tokens with 15% overlap. Code blocks are never split mid-block.
Best Practices
- Always add context descriptions —
qmd context adddramatically improves retrieval accuracy. Describe what each collection contains. - Re-embed after adding documents —
qmd embedmust be re-run when new files are added to collections. - Use
qmd searchfor speed — when you need fast keyword lookup (code identifiers, exact names), BM25 is instant and needs no models. - Use
qmd queryfor quality — when the question is conceptual or the user needs the best possible results, use hybrid search. - Prefer MCP integration — once configured, the agent gets native tools without needing to load this skill each time.
- Daemon mode for frequent users — if the user searches their knowledge base regularly, recommend the HTTP daemon setup.
- First query in structured search gets 2x weight — put the most important/certain query first when combining lex and vec.
Troubleshooting
"Models downloading on first run"
Normal — qmd auto-downloads ~2GB of GGUF models on first use. This is a one-time operation.
Cold start latency (~19s)
This happens when models aren't loaded in memory. Solutions:
- Use HTTP daemon mode (
qmd mcp --http --daemon) to keep warm - Use
qmd search(BM25 only) when models aren't needed - MCP stdio mode loads models on first search, stays warm for session
macOS: "unable to load extension"
Install Homebrew SQLite: brew install sqlite
Then ensure it's on PATH before system SQLite.
"No collections found"
Run qmd collection add <path> --name <name> to add directories,
then qmd embed to index them.
Embedding model override (CJK/multilingual)
Set QMD_EMBED_MODEL environment variable for non-English content:
export QMD_EMBED_MODEL="your-multilingual-model"
Data Storage
- Index & vectors:
~/.cache/qmd/index.sqlite - Models: Auto-downloaded to local cache on first run
- No cloud dependencies — everything runs locally