> ## Documentation Index
> Fetch the complete documentation index at: https://docs.graphify.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> The PyPI package is graphifyy, with two y's. The command is graphify.
> /graphify . is typed in an assistant chat, not in a shell.
> Use only commands, flags, and endpoints shown on these pages. Do not invent one.
> Choose the surface before you open a page. Local (Graphify Local) is the graphifyy package on the machine: the skill, the CLI, and the ten-tool MCP. Its pages are the Open Source tab (/open-source/) and the Graphify Local tab on each Integrations page. Graphify is the hosted workspace and https://api.graphify.com/mcp (Streamable HTTP, OAuth, no API key). Its pages are the Graphify tab (/platform/, /concepts/) and the Graphify (hosted) tab on each Integrations page. Prefer Graphify unless the user asks for a local or offline setup. Cookbooks (/cookbooks/) and /mcp/docs-search apply to both. Each page's source frontmatter records this as surface: local, cloud, or both. Buildkite is the CI integration.
> In llms.txt, tell the surface from the page path. Graphify: /platform/ and /concepts/. Local: /open-source/. Most /integrations/ pages cover both, with a Graphify (hosted) tab and a Graphify Local tab. Everything else applies to both.
> graphifyy release notes are published at https://github.com/Graphify-Labs/graphify/releases and https://graphify.com/changelog. The current package version is on PyPI (https://pypi.org/project/graphifyy/).
> The official site is https://graphify.com. These docs are https://docs.graphify.com.
> The local MCP server is the ten tools in the MCP tool reference and reads a graph on the machine. The hosted server is https://api.graphify.com/mcp (Streamable HTTP, OAuth, no API key). The JetBrains, ChatGPT, Codex, and Dots, and Vercel pages use the hosted server, not the ten-tool list. On pages with tabs, the Graphify (hosted) tab uses the hosted server and the Graphify Local tab uses the local skill or the ten-tool server.
> Read https://docs.graphify.com/llms.txt, then open one page's .md link. Use https://docs.graphify.com/llms-full.txt only when one page is not enough.

# Documents, papers, and media

> Add Markdown, PDFs, Office files, images, video, audio, web pages, and Google Workspace files to your Graphify Local graph with semantic extraction.

Code explains what a system does. Design docs, papers, meeting recordings, and specs explain why. Graphify Local puts both in one graph, so your agent can go from a function to the ADR that justified it. Code is parsed locally with no model. Everything else goes through **semantic extraction**: a model you choose reads each chunk and returns the concepts and relationships in it.

> [!NOTE]
>
> **Use this when** your repository has a `docs/` folder, research PDFs, or recorded walkthroughs that your agent should know about. For a code-only graph with no API key, use `graphify extract . --code-only`.

## What Graphify reads

| Kind | Extensions | Needs |
| - | - | - |
| Docs | `.md` `.mdx` `.qmd` `.txt` `.rst` `.html` `.skill` `.j2` `.jinja` `.jinja2` | A model backend |
| Papers | `.pdf` | `graphifyy[pdf]` |
| Office | `.docx` `.xlsx` | `graphifyy[office]` |
| Images | `.png` `.jpg` `.jpeg` `.gif` `.webp` `.svg` | A model backend |
| Video and audio | `.mp4` `.mov` `.webm` `.mkv` `.avi` `.m4v` `.mp3` `.wav` `.m4a` `.ogg` | `graphifyy[video]` |
| Google Workspace | `.gdoc` `.gsheet` `.gslides` shortcuts | The `gws` CLI and `--google-workspace` |

Install every optional reader at once with `pip install "graphifyy[all]"`.

## How it works

**1. Detect**

Files are sorted by kind. Video and audio are transcribed locally with Whisper, then treated as text. Google Workspace shortcuts are exported to Markdown with `gws`.

**2. Chunk**

Text is split into chunks of up to 60,000 tokens (`--token-budget`).

**3. Extract**

Your model returns nodes and edges for each chunk. Up to 4 chunks run at once (`--max-concurrency`).

**4. Merge**

Concepts are deduplicated and joined to the code graph, then clustered with everything else.

Results are cached by file content, so unchanged documents are never sent to the model twice.

## See it in action

```bash Whole folder theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
graphify extract . --backend claude
```

```bash Code only, no key theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
graphify extract . --code-only
```

```bash Add a URL theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
graphify add https://arxiv.org/abs/1706.03762 --author "Vaswani et al."
```

`graphify add` saves the page to `./raw` and updates the graph. It recognises arXiv, GitHub, YouTube, X posts, PDFs, and images by URL, and treats anything else as a web page. `--author` and `--contributor` tag who wrote and who added the source.

## Configure

**Extraction depth**

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
graphify extract . --mode deep
```

`--mode deep` asks the model for more `INFERRED` relationships. It costs more tokens.

**Local models**

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
graphify extract . --backend ollama --max-concurrency 1
```

Use one chunk at a time for local models.

**Transcription**

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
export GRAPHIFY_WHISPER_MODEL=small
export GRAPHIFY_WHISPER_PROMPT="Graphify, Leiden, tree-sitter"
```

The default Whisper model is `base`. A prompt with your project's terms improves spelling of names.

**Google Workspace**

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
graphify extract . --google-workspace
```

Or set `GRAPHIFY_GOOGLE_WORKSPACE=1`. Requires the `gws` CLI, signed in.

## Corpus size

Graphify checks the size of your corpus before extraction. Under about 50,000 words, it tells you a graph may not be worth it; over 500,000 words or 500 files, it warns about token cost. Use a `.graphifyignore` file to leave out generated docs and archives.

## Verify and troubleshoot

| Symptom | Fix |
| - | - |
| PDFs or Office files skipped | Install the extra: `pip install "graphifyy[pdf]"` or `"graphifyy[office]"`. |
| No doc nodes at all | No backend was found. Set an API key or pass `--backend`. |
| Video skipped | Install `graphifyy[video]` (Python 3.11 or later). |
| `.gdoc` files appear empty | Pass `--google-workspace` and sign in to `gws`. |
| Local model times out | Lower `--token-budget` and use `--max-concurrency 1`. |

> **Is my content sent anywhere?**
>
> Code never is. Docs, images, and transcripts go only to the model backend you configured. With Ollama, nothing leaves your machine.

> **Can I re-run extraction without paying again?**
>
> Yes. Cached chunks are reused. `--force` (or `GRAPHIFY_FORCE=1`) ignores the cache.

## See what a code-only run skips

These examples come from a code-only graph of the open-source [httpx](https://github.com/encode/httpx) repository, built with Graphify Local 0.9.97. Your counts will differ.

```text theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
[graphify extract] --code-only: skipping 41 non-code file(s) (31 docs, 0 papers, 10 images) — no LLM extraction
```

Leave out `--code-only` and set a backend key to include those documents and images.

## Extras by input

| Input | Extensions | Extra |
| - | - | - |
| PDF | `.pdf` | `pdf` (`pypdf`, `markdownify`) |
| Word and Excel | `.docx` `.xlsx` | `office` (`python-docx`, `openpyxl`) |
| Google Workspace | `.gdoc` `.gsheet` `.gslides` | `google` (`openpyxl`), plus the `gws` CLI and `--google-workspace` |
| Video and audio | `.mp4` `.mov` `.mkv` `.webm` `.avi` `.m4v` `.mp3` `.wav` `.m4a` `.ogg` | `video` (`faster-whisper`, `yt-dlp`) |
| Images | `.png` `.jpg` `.jpeg` `.gif` `.webp` `.svg` | A backend that supports images |

## FAQ

**Can I add a web page?** Yes. `graphify add <url>` saves it to `./raw` and updates the graph. Pass `--author` and `--contributor` to tag it.

## What's next

> **[Databases](https://docs.graphify.com/open-source/features/databases.md)**
>
> Add a PostgreSQL schema.

> **[Headless extraction](https://docs.graphify.com/open-source/features/headless-extraction.md)**
>
> Run extraction in CI.

> **[Try it in Graphify](https://docs.graphify.com/platform/quickstart.md)**
>
> We build and host the graph for you. Start with a 14-day Pro trial, then keep up to 3 repositories on Free. No card required.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.