Graphify multimodal: como docs, PDFs, imagens e vídeo entram no mesmo grafo do código

Graphify multimodal é a skill /graphify indo além do código-fonte: ela transforma uma pasta com código, docs, schemas SQL, configs e PDFs em um grafo de conhecimento consultável, sem vector store e com cada aresta explicada. São três passes: AST local com tree-sitter para código, transcrição local com faster-whisper para vídeo e áudio, e um passe semântico com LLM para docs, papers, imagens e transcrições. Tudo cai no mesmo grafo NetworkX, agrupado por comunidades Leiden, e sai em graph.html, graph.json e GRAPH_REPORT.md. Instala via uv tool install graphifyy e registra com graphify install
Fala aí, beleza? O teu assistente lê o repositório inteiro e mesmo assim não sabe POR QUE aquele módulo existe do jeito que existe
E o motivo é simples: o racional do projeto quase nunca mora no código
Ele mora num PDF que alguém do time leu, num diagrama exportado em PNG, numa gravação de call que ficou parada numa pasta, num ADR em Markdown que ninguém abre desde o ano passado
O Graphify é uma skill que ataca justamente esse buraco: ele pega uma pasta com código, docs, schemas SQL, configs e PDFs e transforma tudo num grafo de conhecimento consultável, sem vector store, com cada aresta explicada
A skill /graphify funciona no Claude Code, Cursor, Codex e Gemini CLI, e o parsing de código roda em AST local e determinístico
Bora entender como esse material que normalmente fica fora do alcance do assistente entra no MESMO grafo do teu código 🙂
De onde veio o Graphify e quem mantém
A história começa num post do Andrej Karpathy em 01/04/2026, falando sobre usar LLMs como "compiladores de conhecimento" pra montar bases estruturadas
Cerca de 48 horas depois o Graphify apareceu no GitHub
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Só que atenção nesse ponto, porque muita gente confunde: o Karpathy NÃO é autor nem mantenedor do projeto
Quem escreveu foi Safi Shamsi, fundador da Graphify Labs, empresa do batch S26 da Y Combinator
O projeto é escrito em Python e distribuído sob licença MIT, open source
O repositório canônico do Graphify hoje fica na organização Graphify-Labs, e não mais na conta pessoal do autor (a URL antiga safishamsi/graphify redireciona pra lá)
A branch de desenvolvimento mais recente é a v8
E tem um detalhe massa pra quem lê em português: o repositório mantém traduções do README, incluindo docs/translations/README.pt-BR.md
Os três passes: o que cada tipo de arquivo recebe
Aqui mora a sacada do projeto
Ele não joga tudo no mesmo moedor: cada tipo de material passa por um caminho diferente, e só depois os resultados se encontram
| Material | Passe | Ferramenta | Precisa de LLM? |
|---|---|---|---|
| Código-fonte | Passe 1 | tree-sitter, AST determinístico, local | Não |
| Vídeo (MP4) e áudio (MP3) | Passe 2 | faster-whisper, transcrição local | Não |
| Docs, papers e PDFs | Passe 3 | subagentes em paralelo | Sim |
| Imagens PNG e JPEG | Passe 3 | extração por visão | Sim |
| Transcrições geradas no passe 2 | Passe 3 | subagentes em paralelo | Sim |
O passe 1 é o mais previsível de todos: tree-sitter monta a árvore sintática, sem LLM no meio, então o mesmo código gera a mesma extração
O passe 2 transcreve vídeo e áudio localmente com faster-whisper, usando um prompt de domínio derivado dos god nodes do corpus
Que god nodes? São os nós mais conectados do teu material, os conceitos que aparecem em todo canto
A transcrição usa esse vocabulário pra não errar os termos técnicos do teu projeto, e ainda guarda cache das transcrições
E aqui vai um aviso de honestidade: a numeração dos passes é um jeito de organizar o que cada material recebe, não uma promessa de fila indiana. A documentação diz que o passe 2 usa esses god nodes, mas não detalha em que momento eles são calculados, então não vou chutar a ordem pra você
O passe 3 é onde entram subagentes em paralelo lendo docs, papers, imagens e as transcrições, extraindo conceitos, relações e racional de design
Os resultados dos três passes são unificados num grafo NetworkX, agrupados por detecção de comunidades Leiden, e exportados em três formatos: graph.html (interativo), graph.json (consultável) e GRAPH_REPORT.md (relatório em linguagem simples)
E a lista de formatos ingeridos é bem mais larga que só código e PDF: schemas SQL com introspecção PostgreSQL, configs de workspace Cargo, HCL do Terraform, Markdown e MDX, reStructuredText, HTML, YAML, .docx, .xlsx, PNG, JPEG, MP4, MP3, além de scripts R e shell
O que sai da sua máquina (e o que não sai)
Essa é a pergunta que aparece na hora que você pensa em jogar PDF interno e gravação de reunião num grafo
E a resposta muda por passe, então vale separar direitinho
Código fica local: tree-sitter roda offline, sem LLM, e nada sai da máquina
Inclusive, um corpus só de código roda sem API key nenhuma
O arquivo de vídeo e o de áudio também não saem: a transcrição com faster-whisper acontece localmente
Só que se liga nesse detalhe, porque é fácil ler errado: o ARQUIVO fica, mas o TEXTO da transcrição vira material do passe 3, junto com docs e imagens
Ou seja, a transcrição pode sim seguir pra um LLM depois de gerada, seja o modelo da sessão do assistente, seja um backend configurado por API key
Agora o outro lado da moeda: docs, PDFs e imagens vão pro modelo da sessão do assistente (via skill /graphify) ou pra uma API key configurada, porque o passe semântico precisa de um LLM lendo aquilo
A parte boa é que esse passe aceita vários backends, cada um com sua variável de ambiente:
ANTHROPIC_API_KEY(Claude)OPENAI_API_KEY(OpenAI)GEMINI_API_KEYouGOOGLE_API_KEY(Gemini)DEEPSEEK_API_KEY(DeepSeek)MOONSHOT_API_KEY(Kimi)- AWS Bedrock
- Ollama rodando na sua máquina
Repara na última linha: com uma instância Ollama rodando, o passe semântico fica totalmente local, e isso vale também pro texto das transcrições que entra nesse passe
Pra quem trabalha com material interno que não pode circular, esse é o caminho
Quando documentação e mídia carregam contexto que o código não tem
Beleza, mas em que situação isso muda a resposta do assistente de verdade?
São os casos em que o "porquê" nunca esteve no arquivo .py
- Paper em PDF que explica a arquitetura. A decisão está implementada em duas funções discretas, e o motivo está numa seção do artigo. Com os dois no mesmo grafo, a aresta liga o conceito à implementação em vez de você explicar tudo de novo no prompt
- ADR e RFC em Markdown. O commit guarda o "o quê", o documento guarda o "por que não fizemos do outro jeito". Esse tipo de leitura de documentação é o mesmo terreno que o NotebookLM cobre pra programadores, com a diferença de que aqui o doc entra colado no grafo do código
- Planilha
.xlsxe schema SQL. A introspecção do PostgreSQL traz a estrutura real das tabelas, e a planilha costuma ser onde alguém mapeou coluna com regra de negócio - Diagrama em PNG ou JPEG. A extração por visão lê a imagem e ela vira nó ligado ao módulo correspondente, em vez de ficar morta numa pasta
assets - Gravação de call ou aula em MP4 e MP3. Vira transcrição local e a transcrição vira contexto ligado ao trecho de código que foi discutido ali
- Terraform em HCL e configs. É o que conecta infraestrutura ao serviço, aquele pedaço que o assistente costuma ignorar porque não é "código de aplicação"
O padrão é sempre o mesmo: o assistente para de responder só pelo que está escrito nas funções e passa a responder pelo que o time realmente decidiu
A onda multimodal, pra quem quer contexto
Pra começar do zero no assunto de multimodalidade, este vídeo do canal mostra o movimento das big techs em imagens, vídeos e 3D:
E se o teu lado da multimodalidade é PRODUZIR mídia em vez de indexar, tem por aqui um passo a passo de como criar vídeos a partir de imagens
Como montar um grafo multimodal na prática
Sequência enxuta, só com o que está documentado no projeto:
- Instale o pacote. Dá pra usar uv, pipx ou pip:
uv tool install graphifyy
# ou
pipx install graphifyy
# ou
pip install graphifyy
O erro comum aqui é o nome: o pacote no PyPI é graphifyy, com dois "y"
Se você digitar graphify na instalação, não é o pacote certo
- Registre a skill no assistente. Depois de instalar o pacote, o comando disponível é
graphify(com um "y" só):
graphify install
Sem argumento, o alvo padrão é o Claude Code
O erro comum deste passo é justamente a troca entre graphifyy (pacote) e graphify (comando). Instala com dois, roda com um 🙂
- Aponte a skill pra pasta. Dentro do assistente:
/graphify .
Isso constrói o grafo da pasta atual
O erro comum: esperar que TUDO rode offline. Só código roda sem API key. No momento que você inclui docs, PDFs e imagens, o passe semântico entra e precisa de um modelo (o da sessão ou um backend configurado)
- Atualize de forma incremental. Não precisa reconstruir tudo a cada mudança:
/graphify ./docs --update
Com --update, apenas os arquivos que mudaram são re-extraídos
O erro comum: rodar do zero por hábito e pagar de novo o passe semântico de um material que continua igual
- Abra as saídas. No fim você tem
graph.htmlpra navegar visualmente,graph.jsonpra consultar de forma programática eGRAPH_REPORT.mdpra ler em linguagem simples
O GRAPH_REPORT.md costuma ser o melhor lugar pra checar se as arestas fazem sentido antes de confiar no grafo
O ganho de tokens é real, mas o número de manchete tem contexto
Aqui é onde eu peço calma com o hype
O número que circula é 71,5x menos tokens por consulta
Só que esse resultado vem de um corpus específico e MISTO: 52 arquivos, sendo os repositórios nanoGPT, minGPT e micrograd + 5 PDFs do arXiv + 4 imagens
Já um benchmark independente sobre uma base Python real registrou 7,3x menos tokens
Os dois números podem ser verdade ao mesmo tempo, e a leitura honesta é essa: o salto grande aparece justamente quando o corpus é multimodal
Faz sentido, né? É exatamente o material que o assistente teria que ler inteiro, em texto bruto, toda vez
Em código puro, a economia continua existindo, mas em outra escala
Então: se o teu contexto é um repositório e mais nada, o ganho é bem menor que a manchete promete
Se o teu contexto tem paper, doc de arquitetura, diagrama e gravação espalhados, é aí que o graphify multimodal compensa de verdade
Conclusão
A ideia central é uma só: material que normalmente fica fora do alcance do assistente (PDF, planilha, diagrama, gravação) entrando no mesmo grafo do código, com cada aresta explicada e sem vector store no meio
O próximo passo concreto é pequeno e barato de testar
Monte um corpus mínimo misturando o teu repositório com a pasta de docs e um PDF de referência
Rode a skill, abra o GRAPH_REPORT.md e confira se as arestas explicam o racional que faltava
Se explicarem, você acabou de dar ao assistente o contexto que o código sozinho nunca teve
Quem quiser ir mais fundo, o repositório na organização Graphify-Labs tem a documentação do funcionamento na branch v8, e o README em português está em docs/translations/README.pt-BR.md
até o próximo post! 😀
Perguntas frequentes
Como instalar o Graphify no Claude Code?
O pacote fica no PyPI com o nome graphifyy (com dois "y"), instalado via uv tool install graphifyy, pipx install graphifyy ou pip install graphifyy. Depois disso, rodar graphify install registra a skill no assistente, e sem nenhum argumento esse comando já mira o Claude Code por padrão.
Dá para usar o Graphify sem configurar nenhuma API key?
Sim, se o corpus for só código: o passe 1 roda com tree-sitter local, sem LLM e sem sair da máquina. Já docs, PDFs e imagens dependem do passe semântico, que usa o modelo da sessão do assistente via skill /graphify ou uma API key configurada num dos backends aceitos.
O arquivo de vídeo e áudio sai da minha máquina no Graphify?
O arquivo em si não sai: a transcrição acontece localmente com faster-whisper. O que muda é o texto gerado, porque as transcrições entram no passe 3 junto com docs, papers e imagens, e esse passe usa o modelo da sessão do assistente ou uma API key configurada. Se você precisa manter tudo dentro de casa, o passe semântico também aceita uma instância Ollama rodando localmente.
O grafo do Graphify atualiza sozinho quando eu mudo um arquivo?
Não automaticamente, mas o comando /graphify ./docs –update re-extrai só os arquivos que mudaram, sem reprocessar o corpus inteiro. Isso poupa tempo em corpus grande com muito PDF e vídeo, já que a transcrição do passe 2 também mantém cache.
O Graphify funciona em outros assistentes além do Claude Code?
Sim, a skill /graphify roda no Claude Code, Cursor, Codex e Gemini CLI. O comando graphify install é que precisa ser direcionado pra cada um, já que sem argumento ele mira o Claude Code por padrão.
Quanto o Graphify realmente economiza de tokens por consulta?
O número de manchete é 71,5x menos tokens por consulta, medido num corpus misto de 52 arquivos com os repositórios nanoGPT, minGPT e micrograd, mais 5 PDFs do arXiv e 4 imagens. Em código puro a economia cai bastante: um benchmark independente sobre uma base Python real registrou 7,3x, então vale calibrar a expectativa conforme o tipo de corpus.
O Graphify usa vector store ou embeddings para buscar no grafo?
Não, o projeto é desenhado justamente sem vector store: o resultado dos três passes vira um grafo NetworkX, agrupado por detecção de comunidades Leiden. A consulta acontece sobre esse grafo exportado em graph.json, com cada aresta explicada em vez de depender de similaridade por embedding.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
O que é o graphify e como ele transforma seu projeto em um grafo de conhecimento?
O graphify transforma seu projeto em um grafo de conhecimento que a IA consulta direto, sem grep. Leitura do código é local, via tree-sitter, sem LLM.
Graphify funciona no Cursor, Codex e Gemini CLI ou só no Claude Code?
O Graphify funciona no Cursor, Codex, Gemini CLI e mais 14 assistentes: veja como a integração muda de ferramenta pra ferramenta antes de instalar.
O que é o Graphify e como ele muda a forma como o Claude Code entende seu projeto?
O Graphify transforma seu projeto em um grafo de conhecimento consultável pelo Claude Code, Cursor, Codex e Gemini CLI. Entenda como funciona.
