123 lines
4.7 KiB
Bash
123 lines
4.7 KiB
Bash
#!/usr/bin/env bash
|
|
# claude-obsidian vault setup script
|
|
# Run this ONCE before opening Obsidian for the first time.
|
|
# Usage: bash bin/setup-vault.sh [optional: /path/to/vault]
|
|
# Default: uses the directory where this script lives (the vault root)
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
VAULT="${1:-$(dirname "$SCRIPT_DIR")}"
|
|
OBSIDIAN="$VAULT/.obsidian"
|
|
|
|
echo "Setting up claude-obsidian vault at: $VAULT"
|
|
|
|
# ── 1. Create directories ─────────────────────────────────────────────────────
|
|
mkdir -p "$OBSIDIAN/snippets"
|
|
mkdir -p "$VAULT/.raw"
|
|
mkdir -p "$VAULT/wiki/concepts" "$VAULT/wiki/entities" "$VAULT/wiki/sources" "$VAULT/wiki/meta"
|
|
mkdir -p "$VAULT/_templates"
|
|
|
|
# ── 2. Write graph.json ───────────────────────────────────────────────────────
|
|
cat > "$OBSIDIAN/graph.json" << 'EOF'
|
|
{
|
|
"collapse-filter": false,
|
|
"search": "path:wiki",
|
|
"showTags": false,
|
|
"showAttachments": false,
|
|
"hideUnresolved": true,
|
|
"showOrphans": false,
|
|
"collapse-color-groups": false,
|
|
"colorGroups": [
|
|
{ "query": "path:wiki/entities", "color": { "a": 1, "rgb": 12945088 } },
|
|
{ "query": "path:wiki/concepts", "color": { "a": 1, "rgb": 5227007 } },
|
|
{ "query": "path:wiki/sources", "color": { "a": 1, "rgb": 6986069 } },
|
|
{ "query": "path:wiki/meta", "color": { "a": 1, "rgb": 5676246 } },
|
|
{ "query": "path:wiki", "color": { "a": 1, "rgb": 5676246 } }
|
|
],
|
|
"showArrow": true,
|
|
"textFadeMultiplier": -1,
|
|
"nodeSizeMultiplier": 1.8,
|
|
"lineSizeMultiplier": 1.2,
|
|
"centerStrength": 0.5,
|
|
"repelStrength": 30,
|
|
"linkStrength": 1.5,
|
|
"linkDistance": 120,
|
|
"scale": 1.0
|
|
}
|
|
EOF
|
|
|
|
# ── 3. Write app.json (excluded files) ───────────────────────────────────────
|
|
cat > "$OBSIDIAN/app.json" << 'EOF'
|
|
{
|
|
"userIgnoreFilters": [
|
|
"agents/",
|
|
"commands/",
|
|
"hooks/",
|
|
"skills/",
|
|
"_templates/",
|
|
"README.md",
|
|
"CLAUDE.md",
|
|
"WIKI.md",
|
|
"Welcome.md"
|
|
]
|
|
}
|
|
EOF
|
|
|
|
# ── 4. Write appearance.json (enable CSS snippets) ───────────────────────────
|
|
cat > "$OBSIDIAN/appearance.json" << 'EOF'
|
|
{
|
|
"enabledCssSnippets": [
|
|
"vault-colors",
|
|
"ITS-Dataview-Cards",
|
|
"ITS-Image-Adjustments"
|
|
]
|
|
}
|
|
EOF
|
|
|
|
# ── 5. Download Excalidraw main.js (8MB, not in git) ─────────────────────────
|
|
EXCALIDRAW="$OBSIDIAN/plugins/obsidian-excalidraw-plugin"
|
|
if [ -f "$EXCALIDRAW/manifest.json" ] && [ ! -f "$EXCALIDRAW/main.js" ]; then
|
|
echo "Downloading Excalidraw main.js (~8MB)..."
|
|
curl -sS -L \
|
|
"https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/latest/download/main.js" \
|
|
-o "$EXCALIDRAW/main.js"
|
|
echo "✓ Excalidraw main.js downloaded"
|
|
elif [ -f "$EXCALIDRAW/main.js" ]; then
|
|
echo "✓ Excalidraw main.js already present"
|
|
fi
|
|
|
|
echo ""
|
|
echo "✓ Setup complete."
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. Open Obsidian"
|
|
echo " 2. Manage Vaults → Open folder as vault → select: $VAULT"
|
|
echo " 3. Enable community plugins when prompted (Calendar, Thino, Excalidraw, Banners are pre-installed)"
|
|
echo " 4. Install: Dataview, Templater, Obsidian Git (Settings → Community Plugins)"
|
|
echo " 5. Type /wiki in Claude Code to scaffold your knowledge base"
|
|
echo ""
|
|
echo "Pre-installed plugins:"
|
|
echo " - Calendar (sidebar calendar with word count + task dots)"
|
|
echo " - Thino (quick memo capture)"
|
|
echo " - Excalidraw (freehand drawing + image annotation)"
|
|
echo " - Banners (add banner: to any note frontmatter for header images)"
|
|
echo ""
|
|
echo "CSS snippets enabled:"
|
|
echo " - vault-colors: color-codes wiki/ folders in file explorer"
|
|
echo " - ITS-Dataview-Cards: use \`\`\`dataviewjs with .cards for card grids"
|
|
echo " - ITS-Image-Adjustments: append |100 to image embeds for sizing"
|
|
echo ""
|
|
echo "Views available:"
|
|
echo " - Wiki Map canvas (wiki/Wiki Map.canvas) — knowledge graph"
|
|
echo " - Design Ideas canvas (projects/visual-vault/design-ideas.canvas) — visual reference board"
|
|
echo " - Graph view filtered to wiki/ only, color-coded by type"
|
|
echo ""
|
|
echo "To switch to the visual layout (Canvas + Calendar + Thino sidebar):"
|
|
echo " Quit Obsidian, then run:"
|
|
echo " cp $OBSIDIAN/workspace-visual.json $OBSIDIAN/workspace.json"
|
|
echo " Then reopen Obsidian."
|
|
echo ""
|
|
echo "Graph colors: if they reset after closing Obsidian, open Graph settings"
|
|
echo "→ Color groups and re-add them once. They persist permanently after that."
|