claude-obsidian: summarize Claude conversations into Obsidian notes
One note per Claude Code session (incremental, hourly user timer) and a claude.ai data-export importer, written through the Obsidian Local REST API plugin -- whose built-in /mcp/ server is also how Claude reads them back. Transcripts are condensed (tool output dropped, one line per tool call, ~60x smaller), redacted, then summarized by headless `claude -p` on the user's own plan. Three things learned the hard way are encoded here: - --no-session-persistence, or every summary becomes a transcript that the next run summarizes. - A LiteLLM gateway passing through the caller's Claude subscription has no key of its own, so a background job cannot use its claude-* models. - Summaries share the plan's usage limits. A parallel ~100-session backfill exhausted a session limit in minutes. So one job, a per-run cap, and the run stops at the first usage-limit error (exit 75) instead of failing the whole queue; a stop flag, because Future.cancel() cannot stop work a thread already picked up. Covered by an offline test of stop / resume / idempotent rerun. Nothing environment-specific is committed: hosts, keys and paths live in ~/.config/claude-obsidian/ (this repo is public). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KF322NzozeaFjpgWvh4F4g
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# ~/.config/claude-obsidian/config.env (chmod 600; never commit the real one)
|
||||
# Every key can also be set as an environment variable, which wins.
|
||||
|
||||
# Obsidian Local REST API plugin -- the plain-HTTP server (Settings -> Local REST API ->
|
||||
# Enable HTTP server). Point this at wherever that port is reachable from this machine.
|
||||
OBSIDIAN_API_URL=http://obsidian.example.internal:27123
|
||||
OBSIDIAN_API_KEY_FILE=~/.config/claude-obsidian/api-key
|
||||
|
||||
# Summarizer. claude-cli = headless `claude -p` on your own Claude plan (no API key needed).
|
||||
LLM_BACKEND=claude-cli
|
||||
LLM_MODEL=haiku
|
||||
# CLAUDE_BIN=claude
|
||||
|
||||
# Or any OpenAI-compatible endpoint (LiteLLM, a local model):
|
||||
# LLM_BACKEND=openai
|
||||
# LLM_BASE_URL=https://litellm.example/v1
|
||||
# LLM_MODEL=some-model
|
||||
# LLM_API_KEY_FILE=~/.config/claude-obsidian/llm-key # or LLM_API_KEY_ENV=LITELLM_KEY
|
||||
|
||||
VAULT_FOLDER=Claude
|
||||
SETTLE_MINUTES=30 # leave sessions alone until they have been idle this long
|
||||
JOBS=1
|
||||
MAX_PER_RUN=10 # summaries share your plan's usage limits; the timer drips a backlog
|
||||
Reference in New Issue
Block a user