Skip to main content

graphanything

Turn anything into a navigable knowledge graph. 10 schema presets, 8 extractors (markdown / json-yaml / openapi / fstree / chatlog / LLM-entity / VLM-stub / noop), human-in-the-loop review.

Quellinformationen

Repository
InternScience/GraphAnything
Letzte Quellaktivität
4. Juni 2026 um 15:40
Erkannte Sprache von SKILL.md
Englisch
Sterne
44
Forks
5

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
graphanything
description
Turn anything into a navigable knowledge graph. 10 schema presets, 8 extractors (markdown / json-yaml / openapi / fstree / chatlog / LLM-entity / VLM-stub / noop), human-in-the-loop review.
trigger
/graphanything
# /graphanything Build a knowledge graph from arbitrary inputs — markdown vaults, OpenAPI specs, contracts, meeting notes, chat logs, filesystem trees — by picking a schema preset, sampling, reviewing, and running. The graph comes out with full provenance: every node and edge knows who extracted it, when, from which file, and (for LLM extractions) what evidence span justified it. LLM-driven extraction goes through GraphAnything's built-in OpenAI-compatible client, which talks to any `chat.completions`-shaped endpoint (vLLM serve, llama.cpp, Ollama, LM Studio, OpenAI, …). Configure via `GA_API_BASE` / `GA_MODEL` / `GA_API_KEY` (legacy `OPENAI_*` / `API_KEY`/`API_BASE`/`SUMMARY_MODEL_NAME` are also accepted). ## When to invoke Trigger on any of: - "graph this vault / spec / folder" - "build a knowledge graph of …" - "turn these files into a graph" - "extract entities and relations from …" - The user types `/graphanything …` ## What graphanything is for The Skill exposes 17 MCP tools that map onto the same Session state machine the CLI uses. The basic loop is: ``` open_session → propose_schema → sample → review (or pick preset) ↓ ↓ refine_schema run → graph.json ↓ update / versions / diff ``` Tools (17 total): - **graphanything_open_session(inputs, preset?, extractor?)** — start. Returns `session_id`. - **graphanything_list_presets()** — 10 built-in presets to choose from. - **graphanything_list_extractors()** — 8 extractors (rule + LLM + VLM stub). - **graphanything_propose_schema(session_id, n=3, llm=False)** — fill in an empty schema. - **graphanything_refine_schema(session_id, instruction, llm=False)** — `add Foo entity`, `rename A to B`, … - **graphanything_sample(session_id, n=5)** — extract from N inputs into pending. Returns preview. - **graphanything_review(session_id, actions[])** — accept_all / accept / reject / merge / rule. - **graphanything_run(session_id, out_dir?)** — full extraction → `graph.json` + version snapshot. - **graphanything_status(session_id)** — counts + schema + running cost. - **graphanything_ask(session_id, question, llm=False)** — natural-language query over the graph. - **graphanything_explain(session_id, target)** — full provenance for one node / edge. - **graphanything_update(session_id, out_dir?)** — re-extract only inputs whose `source_hash` changed. - **graphanything_versions(out_root?)** — list snapshots written by run / update. - **graphanything_diff(v_old, v_new)** — diff two snapshots (added / removed / modified). - **graphanything_federate(graphs, out, fuzzy?, llm?)** — merge multiple graphs into one universe. - **graphanything_eval(session_id, llm=False, judge_n=20)** — coverage / dedup / per-extractor / sampled LLM-judge. - **graphanything_render(session_id, fmt="mermaid")** — 9 formats: mermaid / html / svg / cypher / graphml / ascii / json / canvas / timeline. ## What you must do when invoked 1. Ask the user ONE question to disambiguate scope, only if it's ambiguous: "Should I graph as `<preset_a>` or `<preset_b>`?" — pick from `graphanything_list_presets`. Skip if the user already named a preset or it's obvious from the inputs (`*.md` vault → `obsidian-vault`, `openapi.yaml` → `openapi`, `*.jsonl` chat → `chat-log`). 2. Call `graphanything_open_session(inputs=…, preset=…)`. 3. If the schema is empty AND no preset matched: call `graphanything_propose_schema(session_id, llm=True)`. Otherwise skip — the preset already filled the schema. 4. Call `graphanything_sample(session_id, n=5)` to see a preview. 5. Show the preview to the user (use `graphanything_render` with `fmt="mermaid"` for ≤60 nodes; otherwise just summarise types/counts). Ask if anything in the schema needs refining. 6. If yes → `graphanything_refine_schema(...)`, then re-sample. If no → `graphanything_review(session_id, actions=[{"op":"accept_all"}])`, then `graphanything_run(session_id, out_dir=...)`. 7. After `run`, paste the resulting `out_path` and a mermaid render of the final graph back to the user. ## Available schema presets Use `graphanything_list_presets` to see live state. The built-ins as of 0.1.0: | Preset | Use when | |---|---| | `obsidian-vault` | A folder of `.md` notes (Obsidian / Notion exports) | | `openapi` | An OpenAPI / Swagger spec | | `papers` | Generic LLM-driven paper extraction | | `codebase` | Source-code repo (LLM-driven) | | `contracts` | Legal contracts (parties / clauses / amounts / governing law) | | `pr-review` | A PR review thread (files / functions / reviewers / concerns) | | `meeting` | Meeting notes / transcripts | | `chat-log` | Slack / Claude Code `.jsonl` / Discord transcripts | | `db-schema` | SQL DDL / migrations / ORM models | | `fstree` | Plain filesystem tree exploration | ## Notes for Claude - **Provenance**: every node/edge in `graph.json` is stamped with `extractor_id`, `extractor_version`, `extraction_time`, `source_hash`. LLM-extracted edges additionally carry `rationale` and `evidence_span`. Use `graphanything_explain` to show this when the user asks "where did this come from?". - **LLM endpoint**: LLM-gated calls go through any OpenAI-compatible chat-completions endpoint (`GA_API_BASE` / `GA_MODEL` / `GA_API_KEY`). If the env vars aren't set, LLM ops error out cleanly — fall back to rule-based presets / extractors. - **Cost control**: `open_session` accepts `budget={max_tokens, max_dollars, max_api_calls}`. Honour it when the user mentions a cap. - **Big inputs**: don't render >60 nodes as mermaid — call `render` with `fmt="ascii"` or `fmt="html"` (returns a file path) instead. Pass `budget_tokens=N` to PageRank-prune large graphs to a target size. - **Multiple sessions**: each call to `open_session` creates a new one. The session_id is the only handle you need — pass it to every other tool. - **Updating**: when source files change, `graphanything_update` re-extracts only the changed ones and writes a new version snapshot; `graphanything_diff <v_old> <v_new>` shows what's different.
Auf GitHub ansehen