Ingest Claude Code conversation/session history into Obsidian as distilled knowledge. Use for importing or mining past Claude sessions, .claude data, project/session history, or audit logs.
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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.
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.
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).$OBSIDIAN_VAULT_PATH/index.md to understand what's already in the wiki — don't re-research things the wiki covers well$OBSIDIAN_VAULT_PATH/hot.md if it exists — it surfaces recent context$OBSIDIAN_VAULT_PATH/references/research-config.md if it exists — it may define source preferences, domains to skip, or confidence rules for this vault$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.
If references/research-config.md exists in the vault, read it and apply any rules it defines:
If the file doesn't exist, proceed with defaults.
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:
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):
command -v <binary> 2>/dev/null — if not found, mark unavailable and note it in the run summarypaid backends: also check that $env_key is non-empty — if unset, mark unavailable and note itInvocation rules (per angle/URL during research):
{url} or {query} in the invoke template with the current URL or search queryWebSearch/WebFetchFree-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.
If the user asks for an example registry, offer this file at $VAULT/references/research-backends.md:
# 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
Goal: Get a wide map of the topic.
WebSearch queries using varied phrasingWebFetch (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.Track what's covered and what's missing as you go.
Goal: Close the holes left by Round 1.
Review what Round 1 produced:
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.
Goal: Resolve contradictions; confirm depth is sufficient.
If major contradictions remain unresolved:
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.
Organize all findings into wiki pages across four output areas:
For each significant source (typically 4-8 pages total):
---
title: >-
<Source title>
category: references
tags: [<2-4 domain tags>]
sources:
- "<URL>"
source_url: "<URL>"
created: <ISO-8601 timestamp>
updated: <ISO-8601 timestamp>
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: <ISO date today>
---
Body: title, URL, what it covers, key claims (with provenance markers), limitations.
For each significant concept surfaced across sources:
Standard concept frontmatter + body. Link concepts to each other and to source pages.
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.
The primary output: a structured synthesis of everything found.
---
title: >-
Research: <Topic>
category: synthesis
tags: [<3-5 domain tags>, research]
sources: [<list of source URLs or page paths>]
created: <ISO-8601 timestamp>
updated: <ISO-8601 timestamp>
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: <ISO date today>
---
# 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>
After filing all pages:
Check index.md for existing pages on the same topics — merge into existing pages rather than creating duplicates.
.manifest.json — Add a research entry:
{
"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:
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.
synthesis/Research: [Topic].mdindex.md, log.md, hot.md, .manifest.json updatedQMD 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.
${QMD_CLI:-qmd} update
If the output says vectors are needed or embeddings may be stale, run:
${QMD_CLI:-qmd} embed
Verify the collection with either:
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"
or, when a specific page path is known:
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5
Record one of:
QMD refreshed: update + embed + verifiedQMD refreshed: update only + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: qmd CLI unavailableQMD failed: <short error summary>まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Ingest Claude Code conversation/session history into Obsidian as distilled knowledge. Use for importing or mining past Claude sessions, .claude data, project/session history, or audit logs.
日本語の概要は準備中です。原文の説明を表示しています。
Map the load-bearing files, symbols, callers, and dependencies of an unfamiliar codebase before making changes. Use for architecture orientation, impact analysis, what-would-break questions, or finding callers. Uses CodeGraph when available and a dependency-free builtin fallback.
日本語の概要は準備中です。原文の説明を表示しています。
Ingest Codex CLI conversation/session history into Obsidian as distilled knowledge. Use for importing or mining ~/.codex sessions, rollout files, indexes, or transcript logs; use wiki-agent for targeted topic-only recall.
日本語の概要は準備中です。原文の説明を表示しています。
Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge. Use for importing or mining Copilot history; not for general Copilot help, simple session search, or backup.
日本語の概要は準備中です。原文の説明を表示しています。
Find and add missing cross-references between wiki pages. Use when pages are disconnected or after large ingestion. This modifies pages to add links; use wiki-lint for report-oriented structural auditing.
日本語の概要は準備中です。原文の説明を表示しています。
Run or configure the daily wiki maintenance cycle: check source freshness, refresh the index and hot.md, and manage its scheduled 9 AM launchd/systemd/cron reminder. Use for daily or morning wiki refresh or scheduler setup and verification.
日本語の概要は準備中です。原文の説明を表示しています。