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

# CLI

> Converta URLs em Markdown direto do terminal — envie para LLMs via pipe, processe em lote ou salve no Obsidian

## Visão geral

O CLI do Web2MD permite converter qualquer URL em Markdown limpo diretamente do seu terminal. Envie a saída via pipe para LLMs, processe listas de URLs em lote ou importe conteúdo para o seu vault do Obsidian — tudo sem abrir um navegador.

```bash theme={null}
npx web2md https://example.com/article
```

<Note>
  O CLI requer **Node.js 18+**. Rode `node -v` para verificar sua versão.
</Note>

## Instalação

Nenhuma instalação necessária — basta rodar com `npx`:

```bash theme={null}
npx web2md <url> [options]
```

Ou instale globalmente para uma inicialização mais rápida:

```bash theme={null}
npm install -g web2md
web2md <url> [options]
```

## Modos

O CLI do Web2MD opera em três modos, dependendo da sua configuração:

<CardGroup cols={3}>
  <Card title="Local" icon="laptop">
    **Modo padrão.** Não requer API key. Busca páginas e converte localmente. Funciona para a maioria dos sites públicos.
  </Card>

  <Card title="Server" icon="server">
    **Com API key.** Configure `WEB2MD_API_KEY` para desbloquear Reddit, Fandom/Wikia e outros sites restritos que exigem processamento no servidor.
  </Card>

  <Card title="Bridge" icon="bridge">
    **Com a flag `--bridge`.** Usa sua extensão do Chrome para buscar páginas renderizadas via JS ou protegidas por login, que a busca estática não consegue alcançar.
  </Card>
</CardGroup>

## Flags

| Flag                  | Descrição                                                                           |
| --------------------- | ----------------------------------------------------------------------------------- |
| `--no-images`         | Remove referências de imagens da saída                                              |
| `--no-links`          | Remove hyperlinks da saída                                                          |
| `--meta`              | Adiciona frontmatter YAML (title, source, wordCount, tokenCount, readingTime, date) |
| `--json`              | Gera saída como JSON `{ markdown, metadata }`                                       |
| `-o, --output <file>` | Grava a saída em um arquivo                                                         |
| `--output-dir <dir>`  | Grava cada URL em um arquivo `.md` separado                                         |
| `--batch <file>`      | Lê URLs de um arquivo (uma por linha, `#` = comentário)                             |
| `--vault <dir>`       | Modo vault do Obsidian: salva em `<dir>/raw/` e atualiza `<dir>/INDEX.md`           |
| `--concurrency <n>`   | Máximo de buscas paralelas (padrão: 3, máximo: 20)                                  |
| `--bridge`            | Usa a extensão do Chrome para sites renderizados via JS ou protegidos por login     |
| `-q, --quiet`         | Suprime mensagens de progresso                                                      |

## Variáveis de ambiente

| Variável              | Descrição                                                     |
| --------------------- | ------------------------------------------------------------- |
| `WEB2MD_API_KEY`      | API key (`w2m_xxx`) para Reddit e sites restritos             |
| `WEB2MD_API_URL`      | Sobrescreve a URL base da API                                 |
| `WEB2MD_EXTENSION_ID` | Sobrescreve o ID da extensão do Chrome para o modo `--bridge` |

<Tip>
  Adicione essas variáveis ao perfil do seu shell (`~/.zshrc` ou `~/.bashrc`) para que persistam entre sessões:

  ```bash theme={null}
  export WEB2MD_API_KEY="w2m_your_key_here"
  ```
</Tip>

## Exemplos de uso

### Conversão básica

```bash theme={null}
npx web2md https://example.com/article
```

Exibe o Markdown no stdout.

### Enviar via pipe para um LLM

```bash theme={null}
npx web2md https://react.dev/learn/thinking-in-react | llm "Summarize this page"
```

```bash theme={null}
npx web2md https://docs.python.org/3/tutorial/classes.html | claude "Explain the key concepts"
```

### Salvar em arquivo

```bash theme={null}
npx web2md https://example.com/article -o article.md
```

```bash theme={null}
npx web2md https://example.com/article --meta -o article.md
```

A flag `--meta` adiciona um frontmatter YAML com título, URL de origem, contagem de palavras, contagem de tokens, tempo de leitura e data.

### Lote a partir de um arquivo

Crie um arquivo `urls.txt`:

```text theme={null}
# Research papers
https://arxiv.org/abs/2301.00001
https://arxiv.org/abs/2301.00002

# Blog posts
https://example.com/blog/post-1
https://example.com/blog/post-2
```

Depois rode:

```bash theme={null}
npx web2md --batch urls.txt --output-dir ./research --concurrency 5
```

Cada URL é salva como um arquivo `.md` separado no diretório `./research`.

### Importação para o vault do Obsidian

```bash theme={null}
npx web2md --batch urls.txt --vault ~/Documents/MyVault
```

Isso salva cada página em `~/Documents/MyVault/raw/` e atualiza `~/Documents/MyVault/INDEX.md` com links para todas as páginas convertidas.

### Reddit com API key

```bash theme={null}
export WEB2MD_API_KEY="w2m_your_key_here"
npx web2md https://www.reddit.com/r/LocalLLaMA/comments/example
```

<Warning>
  O Reddit exige uma API key válida. Sem ela, URLs do Reddit falharão devido às restrições anti-bot do Reddit.
</Warning>

### Modo Bridge

Use a extensão do Chrome para lidar com páginas renderizadas via JS ou protegidas por login:

```bash theme={null}
npx web2md --bridge https://app.example.com/dashboard
```

<Note>
  O modo Bridge requer que a extensão Web2MD para Chrome esteja instalada e o Chrome esteja em execução. O CLI se comunica com a extensão via protocolo de mensagens nativas do Chrome.
</Note>

### Saída em JSON

```bash theme={null}
npx web2md --json https://example.com/article
```

Retorna uma saída estruturada:

```json theme={null}
{
  "markdown": "# Article Title\n\nContent here...",
  "metadata": {
    "title": "Article Title",
    "source": "https://example.com/article",
    "wordCount": 1250,
    "tokenCount": 1680,
    "readingTime": 5,
    "date": "2026-04-11T10:30:00.000Z"
  }
}
```

Útil para consumo programático ou envio via pipe para o `jq`:

```bash theme={null}
npx web2md --json https://example.com/article | jq '.metadata.tokenCount'
```

## Sites otimizados

O Web2MD inclui adaptadores nativos para estes sites, produzindo uma saída mais limpa do que a conversão genérica:

<AccordionGroup>
  <Accordion title="Sites com suporte otimizado">
    * **Wikipedia** — extração limpa de artigos, tratamento de infobox
    * **arXiv** — resumos e metadados de papers
    * **Hacker News** — threads com comentários
    * **GitHub** — Issues e Pull Requests
    * **Stack Overflow** — perguntas e respostas
    * **dev.to** — posts de blog
    * **Medium** — artigos (contorna o preview do paywall)
    * **Substack** — posts de newsletter
    * **OpenAI Docs** — páginas de documentação
    * **Documentações baseadas em Mintlify** — sites de documentação construídos com Mintlify
    * **Reddit** — posts e comentários (requer API key)
  </Accordion>
</AccordionGroup>

## Fluxos de trabalho comuns

<AccordionGroup>
  <Accordion title="Alimentar um agente de IA com documentação">
    ```bash theme={null}
    npx web2md --batch docs-urls.txt --output-dir ./context --quiet
    ```

    Aponte o diretório de contexto do seu agente de IA para `./context` para obter respostas fundamentadas.
  </Accordion>

  <Accordion title="Construir um corpus de pesquisa">
    ```bash theme={null}
    npx web2md --batch papers.txt --vault ~/Obsidian/Research --meta --concurrency 10
    ```

    Cria um vault de pesquisa indexado e pesquisável no Obsidian.
  </Accordion>

  <Accordion title="Remover formatação para entrada em LLM">
    ```bash theme={null}
    npx web2md --no-images --no-links https://example.com/article | llm "Analyze this"
    ```

    Remove imagens e links para reduzir o uso de tokens ao enviar via pipe para LLMs.
  </Accordion>
</AccordionGroup>
