From search-research
Ingest websites into QMD wiki collections for semantic search via /search and /explore. Crawls with crawl4ai, dedupes by SHA256, injects [[wikilinks]] to related pages, logs to log.md, and rebuilds the qmd index. Use when adding web docs or articles to the searchable vault.
How this skill is triggered — by the user, by Claude, or both
Slash command
/search-research:crawlThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ingest websites into QMD collections for semantic search via `/search` and `/explore`.
Ingest websites into QMD collections for semantic search via /search and /explore.
Requirements:
crawl4ai Python packageqmd CLI tool~/.config/qmd/index.ymlTwo phases. Related-link discovery runs after the qmd index rebuilds, so every freshly-saved page is searchable — and each page's own record is excluded so it never links to itself.
Phase 1 — during crawl:
github.com/<owner>/<repo> URLs fetch raw README, skipping browser chrome)wiki/sources/{domain}/{slug}.md with frontmatter (no Related section yet)log.md with SHA256 for traceabilityPhase 2 — post-index (only if qmd update succeeded and the index is fresh):
qmd update <collection> to rebuild the search index## Related block of [[Page]]@related links. Frontmatter (incl. dedup hash) and the registry are never touched in this pass.If qmd update fails or any saved file postdates the index, Phase 2 is skipped and a
NOTE: Related-link injection skipped line appears in the summary.
/crawl-ingest https://example.com --max-pages 5 # Crawl up to 5 pages
/crawl-ingest https://example.com --collection wiki # Explicit collection
/crawl-ingest https://example.com --collection docs # Custom collection
---
source:
url: https://example.com/page
crawled_at: 2026-04-29
hash: abc123...
title: Page Title
tags:
- web-ingested
---
Content extracted by Crawl4AI...
## Related
[[Related Page 1]]@related
[[Related Page 2]]@related
Content is deduplicated via SHA256 hash:
hash field)log.md with date, URL, SHA256After ingestion, verify:
# 1. Frontmatter check - has hash field
head -10 wiki/sources/example.com/*.md | grep "hash:"
# 2. Log entry exists
grep "SHA256:" wiki/log.md
# 3. QMD search finds content
qmd search --collection wiki "query from page" --format json
# 4. Wikilinks are valid pages
grep "@related" wiki/sources/example.com/*.md
| Error | Cause | Fix |
|---|---|---|
crawl4ai not installed | Missing Python package | pip install crawl4ai |
qmd CLI not found | Missing QMD | pip install qmd |
qmd CLI failed | Wrong qmd command | Try qmd-py or qmd |
| Collection not found | QMD not configured | Check ~/.config/qmd/index.yml |
| Vault not found | Wrong path in config | Verify vault path exists |
| Timeout | Site slow to respond | Increase wait in crawl config |
| Could not log to log.md | No write permission | Create log.md or check path |
/crawl-ingest https://claudefa.st/blog/tools/hooks/hooks-guide --max-pages 3
/crawl-ingest https://docs.python.org/3/ --max-pages 10
/crawl-ingest https://fastapi.tiangolo.com/ --max-pages 5
Vault location: Read from ~/.config/qmd/index.yml
Log location: {vault_root}/log.md
Max pages: Default 10, adjust based on site size
See references/qmd-config.md for QMD configuration details.
/search — Search all backends including QMD_WIKI/explore — Unified search with semantic filtering/wiki — Full wiki ingest workflow with SHA256 loggingnpx claudepluginhub enduser123/search-researchGuides users through a choose-your-own-adventure writing process that turns raw markdown material into a structured article by grounding concepts before they are used.