К основному содержанию
скилл CX Codex

wiki-research — скилл для Claude Code: многораундовый веб-ресёрч

Гоняет несколько раундов поиска по теме, сводит найденное и раскладывает результат по страницам Obsidian-вики.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Ar9av/obsidian-wiki --skill wiki-research -a claude-code
Открыть на GitHub

Что делает wiki-research

Скилл запускает автономный цикл ресёрча. Сначала он разбивает тему на 3–5 углов и по каждому гоняет 2–3 запроса через WebSearch, потом вытягивает содержимое топовых страниц через WebFetch. Из каждой страницы достаются ключевые утверждения, понятия, сущности и места, где источники противоречат друг другу.

Второй раунд закрывает дыры первого: вопросы без ответа, противоречия, слабо покрытые углы. До 5 точечных запросов, приоритет — первоисточники и официальная документация, а не подборки ссылок.

Перед стартом скилл читает $OBSIDIAN_VAULT_PATH/index.md, чтобы не искать заново то, что в вики уже есть, и заглядывает в hot.md. Путь к хранилищу и формат ссылок берутся из переменных OBSIDIAN_VAULT_PATH и OBSIDIAN_LINK_FORMAT. Если в хранилище лежит references/research-backends.md, скилл подхватит описанные там CLI-бэкенды — например, yt-dlp для транскриптов видео или платный perplexity с ключом PERPLEXITY_API_KEY. Без этого файла он работает на WebSearch и WebFetch.

Какие задачи решает

  • собрать материал по незнакомой теме из нескольких источников
  • найти, где источники противоречат друг другу
  • закрыть пробелы после первого прохода поиска
  • вытащить транскрипт видео вместо ручного просмотра
  • оформить найденное как постоянные заметки в Obsidian

Примеры запросов агенту

  • исследуй тему векторных баз: что это, когда нужны, какие есть реализации
  • прогони ресёрч по конкурентам и сохрани результат в вики
  • добери то, что не покрыл первый раунд поиска

Как установить wiki-research

1Через Skills CLI (Vercel)

npx skills add Ar9av/obsidian-wiki --skill wiki-research -a claude-code

2Вручную: положить файлы

~/.claude/skills/wiki-research/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/wiki-research/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора34

wiki-rebuild Скилл делает полные снимки базы Obsidian, восстанавливает прошлые версии и очищает хранилище для повторного сбора заметок из источников. CX Codex +1 3 200установок claude-history-ingest Переносит историю сессий Claude Code в базу знаний Obsidian в виде готовых заметок. Пригодится, чтобы сохранять контекст проектов и наработки из чатов. CX Codex +1 3 000установок graph-colorize Настраивает цвета графа Obsidian по тегам, папкам или уровню видимости через правку .obsidian/graph.json. Пригодится для наглядной раскраски заметок в хранилище. CX Codex +1 2 800установок wiki-dashboard Скилл собирает живые таблицы и карточки по заметкам Obsidian: фильтры по папкам и тегам, группировка, вычисляемые колонки. Пригодится, когда нужен обновляемый индекс хранилища. CX Codex +1 2 800установок wiki-capture Превращает текущий диалог и результаты отладки в структурированные заметки Obsidian. Поддерживает быстрый сброс черновиков в папку _raw/ и точечные исправления. CX Codex +1 2 800установок wiki-synthesize Сканирует вики в Obsidian, ищет концепции, которые часто соседствуют на страницах, но своей страницы синтеза не имеют, и создаёт связующие страницы. CX Codex +1 2 700установок codex-history-ingest Разбирает логи сессий Codex CLI и складывает из них страницы Obsidian. Пригодится, если накопились сотни rollout-файлов, а знаний из них не достать. CX Codex +1 2 600установок memory-bridge Скилл показывает, какой ИИ-инструмент что записал в вашу Obsidian-вики, и сравнивает наборы знаний между агентами. Полезно, когда сессии Claude, Codex и Copilot копятся в разных углах. CX Codex +1 2 400установок

Похожие

autoresearch AgriciDaniel Запускает ограниченный цикл поиска с доступом в Сеть, собирает цитируемый отчёт и предлагает слить результаты в хранилище. Нужен, когда требуется глубокое исследование с проверкой фактов. CX Codex +1 525установок obsidian-project-kb-core Galaxy-Dawn Скилл ведёт проектную исследовательскую базу в Obsidian: создаёт структуру, распределяет заметки и поддерживает индексы, реестр и проверки. CX Codex +1 323установок wiki AgriciDaniel Инициализирует и подключает отдельное хранилище Obsidian, а также маршрутизирует задачи между специализированными вики-скиллами. Пригодится для ведения базы знаний прямо из агента. CX Codex +1 539установок deeppapernote 917Dhj Скилл превращает научную статью в структурированную Markdown-заметку для Obsidian. Пригодится, когда нужен глубокий технический разбор вместо краткого пересказа. CX Codex +1 1 500установок wiki-ingest sanyuan0704 Собирает статьи, документы и заметки в связанную базу знаний с отдельными страницами сущностей. Пригодится для пополнения проектной вики из текста, файлов или каталогов. CX Codex +1 2 700установок results-report Galaxy-Dawn Собирает итоговый отчёт по завершённому эксперименту: что проверили, что подтвердилось, что делать дальше. Работает после скилла results-analysis. CX Codex +1 490установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Всё по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о wiki-research

Как установить wiki-research в Claude?

Выполните npx skills add Ar9av/obsidian-wiki --skill wiki-research -a claude-code. Скилл встанет в ~/.claude/skills/wiki-research/SKILL.md.

Что делает wiki-research?

Проводит многораундовый веб-ресёрч по теме, сводит находки и записывает структурированный результат в Obsidian-вики.

Какие бэкенды поддерживает скилл?

Любые CLI-инструменты, описанные в references/research-backends.md внутри хранилища: бесплатные вроде yt-dlp и платные вроде perplexity, для которых нужен ключ в переменной окружения.

Исходный текст

SKILL.md · MIT
---
name: wiki-research
description: >
  Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki. Use for comprehensive web-sourced research intended to become wiki knowledge.
---

# Wiki Research — Autonomous Multi-Round Research

You are running an autonomous research loop on a topic, synthesizing what you find, and filing the results into the Obsidian wiki as permanent knowledge.

## Before You Start

**Writing profile:** Before drafting or rewriting natural-language Markdown, read and apply the `Writing Profile Resolution` section in `llm-wiki/SKILL.md`. Framework schema, provenance, safety, and operation-specific requirements take precedence.
`WRITING.md` preferences apply only to newly drafted or rewritten natural-language Markdown; preserve source content and structured records.

1. **Resolve config** — follow the Config Resolution Protocol in `llm-wiki/SKILL.md` (inline `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `OBSIDIAN_LINK_FORMAT` (default: `wikilink`).
2. Read `$OBSIDIAN_VAULT_PATH/index.md` to understand what's already in the wiki — don't re-research things the wiki covers well
3. Read `$OBSIDIAN_VAULT_PATH/hot.md` if it exists — it surfaces recent context
4. Check `$OBSIDIAN_VAULT_PATH/references/research-config.md` if it exists — it may define source preferences, domains to skip, or confidence rules for this vault
5. Check `$OBSIDIAN_VAULT_PATH/references/research-backends.md` if it exists — it registers optional CLI retrieval backends (social media, video transcripts, paid APIs, etc.). Load any available backends into your working state for this session.

When writing internal links in generated pages, apply the link format from `llm-wiki/SKILL.md` (Link Format section) using the `OBSIDIAN_LINK_FORMAT` value.

Confirm the research topic with the user if it's ambiguous. Then proceed.

## Research Configuration (optional)

If `references/research-config.md` exists in the vault, read it and apply any rules it defines:
- Source preferences (e.g., prefer academic sources, avoid certain domains)
- Domains to skip
- Confidence scoring adjustments
- Topic-specific constraints

If the file doesn't exist, proceed with defaults.

## Research Backends (optional)

If `references/research-backends.md` exists in the vault, load it before starting research. It defines zero or more CLI retrieval backends as a YAML list:

```yaml
backends:
  - name: yt-dlp-transcript      # friendly label
    binary: yt-dlp                # CLI binary (checked with `command -v`)
    invoke: "yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format json3 -o /tmp/ytvid '{url}'"
    when_to_use: YouTube video URLs, video transcripts
    cost_tier: free               # free | paid
    env_key: ""                   # required env var for paid tiers (empty = always enabled)
    output: text                  # json | text | markdown

  - name: perplexity-sonar
    binary: perplexity
    invoke: "perplexity search '{query}'"
    when_to_use: deep synthesis queries needing multi-source aggregation
    cost_tier: paid
    env_key: PERPLEXITY_API_KEY   # skipped if unset
    output: text
```

**Backend availability check (run once at session start):**
- For each backend: `command -v <binary> 2>/dev/null` — if not found, mark unavailable and note it in the run summary
- For `paid` backends: also check that `$env_key` is non-empty — if unset, mark unavailable and note it
- Build a list of *active backends* (available + key-gated checks pass) to use in Rounds 1–2

**Invocation rules (per angle/URL during research):**
- Substitute `{url}` or `{query}` in the `invoke` template with the current URL or search query
- Capture stdout; on non-zero exit code → skip this backend for this angle, note the short error, continue
- Fold backend output into the same claims/concepts/entities/contradictions extraction, citing the source URL the backend returns (or the query string for query-mode backends)
- A backend failure never aborts the research run — always fall back to `WebSearch`/`WebFetch`

**Free-first ordering:** Evaluate `free` backends before `paid` ones for each angle. If a free backend returns sufficient content, paid backends for the same angle can be skipped.

**No `research-backends.md`** → skip this section entirely; behavior is identical to today.

### Starter registry template

If the user asks for an example registry, offer this file at `$VAULT/references/research-backends.md`:

```yaml
# Optional CLI backends for wiki-research. Delete rows you don't need.
# Skill docs: .skills/wiki-research/SKILL.md — Research Backends section
backends:
  # --- free / local ---
  - name: defuddle-fetch
    binary: defuddle
    invoke: "defuddle '{url}'"
    when_to_use: any URL — cleaner extraction than WebFetch alone
    cost_tier: free
    env_key: ""
    output: markdown

  - name: yt-dlp-transcript
    binary: yt-dlp
    invoke: "yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format json3 -o /tmp/ytvid '{url}'"
    when_to_use: YouTube video URLs for transcript extraction
    cost_tier: free
    env_key: ""
    output: text

  # --- paid / gated (skipped when env key is unset) ---
  - name: perplexity-sonar
    binary: perplexity
    invoke: "perplexity search '{query}'"
    when_to_use: deep synthesis queries needing multi-source aggregation
    cost_tier: paid
    env_key: PERPLEXITY_API_KEY
    output: text
```

## Round 1 — Broad Survey

**Goal:** Get a wide map of the topic.

1. Decompose the topic into **3-5 distinct angles** (e.g., for "vector databases": what they are, when to use them, leading implementations, trade-offs, production gotchas)
2. For each angle, run **2-3 `WebSearch` queries** using varied phrasing
3. For the top 2-3 results per angle, use `WebFetch` (or `defuddle <url>` if available — cleaner extraction) to get content. For each URL, also invoke any *active backends* whose `when_to_use` matches (e.g., a YouTube URL triggers `yt-dlp-transcript`); fold their output into extraction alongside `WebFetch` results, citing the source URL the backend returns.
4. From each fetched page, extract:
   - **Key claims** — what the source explicitly states
   - **Concepts** — ideas, terms, frameworks introduced
   - **Entities** — tools, people, organizations mentioned
   - **Contradictions** — places where sources disagree with each other

Track what's covered and what's missing as you go.

## Round 2 — Gap Fill

**Goal:** Close the holes left by Round 1.

Review what Round 1 produced:
- What questions did sources raise but not answer?
- Where do sources contradict each other?
- Which angles got thin coverage?

Run **up to 5 targeted searches** specifically addressing these gaps. Prefer primary sources, official documentation, and authoritative analyses over link aggregators. For gap-fill queries, also invoke any *active query-mode backends* (e.g., `perplexity-sonar`) by substituting `{query}` in their `invoke` template — fold results into extraction with backend name as citation context.

Add findings to your working set. Update the contradiction list.

## Round 3 — Synthesis Check

**Goal:** Resolve contradictions; confirm depth is sufficient.

If major contradictions remain unresolved:
- Run one final targeted pass (2-3 searches) to find authoritative resolution
- If resolution is impossible, flag the contradiction explicitly in the synthesis page

If contradictions are minor or the topic feels well-covered after Round 2, skip additional searching and proceed to filing.

**Halt condition:** Stop when depth is achieved or 3 rounds are complete — do not loop indefinitely.

## Filing — Write Wiki Pages

Organize all findings into wiki pages across four output areas:

### 1. sources/ — One page per major reference

For each significant source (typically 4-8 pages total):

```yaml
---
title: >-
  <Source title>
category: references
tags: [<2-4 domain tags>]
sources:
  - "<URL>"
source_url: "<URL>"
created: <ISO-8601 timestamp>
updated: <obsidian-wiki memory now>
summary: >-
  <1-2 sentences describing what this source covers, ≤200 chars>
provenance:
  extracted: 0.X
  inferred: 0.X
  ambiguous: 0.X
base_confidence: <0.17 + 0.5 × classify(url) for a single source>
lifecycle: draft
lifecycle_changed: <obsidian-wiki memory now --date>
---
```

Body: title, URL, what it covers, key claims (with provenance markers), limitations.

### 2. concepts/ — One page per substantive concept

For each significant concept surfaced across sources:

Standard concept frontmatter + body. Link concepts to each other and to source pages.

### 3. entities/ — Tools, organizations, people

For each significant entity encountered (tools, libraries, companies, key authors):

Standard entity frontmatter. Link back to concepts that use the entity and sources where it appears.

### 4. synthesis/Research: [Topic].md — Master synthesis

The primary output: a structured synthesis of everything found.

```yaml
---
title: >-
  Research: <Topic>
category: synthesis
tags: [<3-5 domain tags>, research]
sources: [<list of source URLs or page paths>]
created: <ISO-8601 timestamp>
updated: <obsidian-wiki memory now>
summary: >-
  Synthesis of <N>-round research on <topic>. Covers <core findings in ≤200 chars>.
provenance:
  extracted: 0.X
  inferred: 0.X
  ambiguous: 0.X
base_confidence: <min(N_unique_sources/3,1.0)×0.5 + avg_source_quality×0.5>
lifecycle: draft
lifecycle_changed: <obsidian-wiki memory now --date>
---

# Research: <Topic>

## Overview
<2-4 sentence executive summary of what the research found>

## Key Findings
<Bulleted list of the most important claims, each with a [[source page]] citation>

## Core Concepts
<Links to concept pages created, with one-line descriptions>

## Entities & Tools
<Links to entity pages, with one-line descriptions>

## Contradictions & Open Questions
<Where sources disagree or where the research hit limits>

## Sources Consulted
<Linked list of all source pages>
```

## Cross-linking

After filing all pages:
- Every concept page should link to at least 2 source pages
- Every source page should link to the concept pages it informed
- The synthesis page should link to all concept, entity, and source pages produced

Check `index.md` for existing pages on the same topics — merge into existing pages rather than creating duplicates.

## Update Tracking Files

**`.manifest.json`** — Add a `research` entry:
```json
{
  "type": "research",
  "topic": "<topic>",
  "researched_at": "TIMESTAMP",
  "rounds_completed": 3,
  "sources_fetched": N,
  "pages_created": ["..."],
  "pages_updated": ["..."]
}
```

One locked call updates the index, the log, and the hot cache:

```bash
obsidian-wiki memory sync WIKI_RESEARCH \
  topic="<topic>" rounds=<N> sources_fetched=<N> \
  pages_created=<M> backends_used="<name,...|none>" \
  --takeaways "<the research topic and its core finding, in one line>"
```

Do **not** list every page you created in a log field — `memory sync` reconciles the index from disk, and a huge field only crowds the hot cache. If the research is ongoing, record it: `obsidian-wiki memory todo add "<open question>" --origin synthesis/<page>.md`.

Never hand-edit `index.md`, `log.md`, or `hot.md` — the command takes the lock that keeps a parallel writer from dropping your update.

See `.skills/llm-wiki/references/MEMORY.md` for the full procedure.

## Quality Checklist

- [ ] 3 rounds completed (or halted at sufficient depth)
- [ ] Synthesis page exists at `synthesis/Research: [Topic].md`
- [ ] Source pages written for major references
- [ ] Concept and entity pages written for significant items
- [ ] Contradictions flagged in synthesis page
- [ ] All pages cross-linked
- [ ] `index.md`, `log.md`, `hot.md`, `.manifest.json` updated
- [ ] Backend summary reported: which backends were active, which were skipped (unavailable binary / unset key / error), and why

## QMD Refresh After Vault Writes

QMD is a search index, not the source of truth. If `$QMD_WIKI_COLLECTION` is empty or unset, skip this step. Run it only after this skill has written or rewritten vault markdown. If QMD refresh fails, do not roll back the vault changes; report the QMD status separately.

Use `$QMD_CLI` if set; otherwise use `qmd`.

```bash
${QMD_CLI:-qmd} update
```

If the output says vectors are needed or embeddings may be stale, run:

```bash
${QMD_CLI:-qmd} embed
```

Verify the collection with either:

```bash
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"
```

or, when a specific page path is known:

```bash
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5
```

Record one of:
- `QMD refreshed: update + embed + verified`
- `QMD refreshed: update only + verified`
- `QMD skipped: QMD_WIKI_COLLECTION unset`
- `QMD skipped: qmd CLI unavailable`
- `QMD failed: <short error summary>`

© Ar9av · MIT · Ar9av/obsidian-wiki

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой