Loading...
Loading...
Import a wiki knowledge graph from a graph.json export file into the current vault. Use this skill when the user says "import wiki", "import from export", "load graph.json", "import vault", "/wiki-import", or wants to transfer pages from one vault to another using the output of wiki-export.
npx skill4agent add ar9av/obsidian-wiki wiki-importgraph.jsonwiki-exportllm-wiki/SKILL.md.env~/.obsidian-wiki/configOBSIDIAN_VAULT_PATH$OBSIDIAN_VAULT_PATH/AGENTS.md./wiki-export/graph.jsonnodeslinksgraphImport preview
Source: <path> (exported at <graph.exported_at>)
Nodes: N total (concepts: A, entities: B, skills: C, references: D, ...)
Links: M edges (X typed, Y untyped)
Target: $OBSIDIAN_VAULT_PATHmerge| Mode | Trigger phrases | Behaviour |
|---|---|---|
| (default, no special phrasing) | Existing pages: update frontmatter tags/summary/relationships and add missing wikilinks; new pages: create stub. |
| "skip existing", "don't overwrite", "only new pages" | Leave existing pages completely untouched; only create pages that don't exist yet. |
| "overwrite", "replace existing", "force import" | Replace all matched pages with freshly reconstructed stubs regardless of existing content. |
linksadjacency["concepts/transformers"] = ["entities/vaswani", "concepts/lstm", ...]typed: truetyped_edges["concepts/transformers"] = [
{target: "concepts/lstm", relation: "contradicts"},
...
]created = 0skipped = 0merged = 0nodespage_path = $VAULT/<node.id>.md$VAULT/concepts/mergedcreatedskippedcreatedmergedcreated---
title: <node.label>
category: <node.category>
tags: <node.tags as YAML list>
sources:
- "imported from <graph.json path>"
<if node.summary exists>
summary: "<node.summary>"
</if>
<if typed_edges[node.id] is non-empty>
relationships:
<for each {target, relation} in typed_edges[node.id]>
- target: "[[<target>]]"
type: <relation>
</for>
</if>
lifecycle: draft
lifecycle_changed: <today YYYY-MM-DD>
base_confidence: 0.5
tier: supporting
created: <ISO timestamp>
updated: <ISO timestamp>
---
# <node.label>
<node.summary paragraph if available, else omit>
## Related
<for each neighbour in adjacency[node.id], sorted alphabetically>
<if edge is typed>
- [[<neighbour>]] — <relation>
<else>
- [[<neighbour>]]
</if>
</for>adjacency[node.id]## Relatednode.tagssummarynode.summaryrelationships:typed_edges[node.id](target, type)updated## Relatedadjacency[node.id]## Related.manifest.json"<absolute path to graph.json>": {
"ingested_at": "<ISO timestamp>",
"source_type": "wiki-export",
"pages_created": ["list/of/created/pages.md"],
"pages_updated": ["list/of/merged/pages.md"]
}stats.total_sources_ingestedstats.total_pages.manifest.json{
"stats": {
"total_sources_ingested": 1,
"total_pages": <created count>
},
"<graph.json path>": { ... }
}index.md- [[<id>]] — <summary or title> ( #tag1 #tag2)(description ( #tag)description(#tag)log.md- [<ISO timestamp>] IMPORT source="<graph.json path>" pages_created=<N> pages_skipped=<K> pages_merged=<M>hot.md- [<timestamp>] IMPORT from <graph.json path> — created X, merged Z pagesupdated:Wiki import complete → $OBSIDIAN_VAULT_PATH
Source: <graph.json path>
exported at <graph.exported_at>, <N> nodes, <M> links
Created: <X> pages
Merged: <Z> pages (existing pages updated)
Skipped: <Y> pages (only when --skip mode was used)SkippedskipoverwriteReplacedmergeoverwritelinksnodesgraph.jsongraph.metadatagraph.graphfiltered