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.

Informações da origem

Repositório
InternScience/GraphAnything
Última atividade na origem
4 de junho de 2026 às 15:40
Idioma detectado do SKILL.md
inglês
Estrelas
42
Forks
4

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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.
Ver no GitHub