---
seo_title: Lector LlamaIndex para Páginas Web e Indexación de Sitios | EnConvert
meta_desc: Instale llama-index-readers-enconvert para convertir páginas web y sitios completos en LlamaIndex Documents para búsqueda semántica, con puntuaciones de render_quality.
keywords: lector de documentos llamaindex, lector de página web llamaindex, rastreo de sitios llamaindex, perceive url llamaindex, ingest llamaindex, llama-index-readers-enconvert, índice vectorial llamaindex, puntuación de calidad de perceive llamaindex
---

# Lector LlamaIndex para Páginas Web e Indexación de Sitios

El lector EnConvert para [LlamaIndex](https://docs.llamaindex.ai) convierte páginas web y sitios completos en LlamaIndex `Document`s. Perciba URLs individuales en markdown o rastree un sitio completo y devuelva un Document por fragmento listo para indexación. Cada renderizado de página lleva una puntuación `render_quality` (0,0–1,0), por lo que una página bloqueada o vacía se marca en lugar de indexarse silenciosamente.

<div class="alert alert-info">
<strong>Paquete:</strong> <code>llama-index-readers-enconvert</code> · <strong>Fuente:</strong> <a href="https://github.com/enconvert/llama-index-readers-enconvert">enconvert/llama-index-readers-enconvert</a> · <strong>Requiere:</strong> <code>llama-index-core>=0.12,<0.15</code> · <strong>Licencia:</strong> MIT
</div>

---

## Instalación

```bash
pip install llama-index-readers-enconvert
```

---

## Agregue su clave API

El lector requiere una credencial: **EnConvert API Key**.

```python
from llama_index.readers.enconvert import EnConvertReader

reader = EnConvertReader(api_key="sk_...")
# O establezca $ENCONVERT_API_KEY y omita el parámetro
reader = EnConvertReader()
```

Genere una clave API **privada** en el [panel](/dashboard/api-keys). Las claves privadas comienzan con `sk_`. Las claves públicas `pk_` son rechazadas.

<div class="alert alert-warning">
<strong>Las claves públicas no funcionarán.</strong> Las claves que comienzan con <code>pk_</code> están destinadas a widgets del navegador y son rechazadas por el lector. Obtenga más información en <a href="/docs/authentication#private-keys">Private Keys</a>.
</div>

---

## Usar EnConvertReader

El lector admite dos modos.

### Percibir algunas URLs

Convertir URLs individuales en `Document`s de markdown:

```python
from llama_index.readers.enconvert import EnConvertReader

reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com", "https://example.com/pricing"])
```

Los metadatos de cada Document llevan:
- `url`: la URL de origen
- `render_quality`: un número de 0,0 (bloqueado/vacío) a 1,0 (renderizado limpio)

### Rastrear un sitio en fragmentos

Rastree un sitio completo y devuelva un Document por fragmento de contenido, listo para búsqueda semántica:

```python
from llama_index.readers.enconvert import EnConvertReader

reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(
    ingest_url="https://docs.example.com",
    mode="sitemap",  # o "crawl" o "hybrid"
    max_pages=100
)
```

Los metadatos de cada Document llevan la URL `url` propia del fragmento, título y contexto de sección. El lector sondea el trabajo de ingestión hasta completarse, así que `load_data()` es síncrono.

---

## Construir un Índice Vectorial

Encadene el lector en un almacén vectorial y una consulta:

```python
from llama_index.readers.enconvert import EnConvertReader
from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.core.storage.docstore import SimpleDocumentStore
from llama_index.core.vector_stores import SimpleVectorStore

# Cargar documentos
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap")

# Construir índice
index = VectorStoreIndex.from_documents(docs)

# Consultar
query_engine = index.as_query_engine()
response = query_engine.query("¿Cómo instalo esto?")
print(response)
```

---

## Solución de problemas

**`raise ValueError("Provide either urls or ingest_url, but not both")`**
Pasó tanto `urls=` como `ingest_url=` a `load_data()`. Elija uno: perciba URLs individuales o rastree un sitio. Pasar ninguno también genera un error.

**`AuthenticationError: 401 Unauthorized`**
La clave API es incorrecta o falta. Verifique que haya configurado `api_key="sk_..."` o la variable de entorno `$ENCONVERT_API_KEY` en una clave **privada** (comienza con `sk_`). Las claves públicas son rechazadas inmediatamente.

**`El tiempo de carga parece muy largo.`**
Los rastreos de sitios son asíncronos. El lector sondea hasta que se complete el trabajo, lo que puede tomar varios minutos en un sitio grande. Sondee el estado del trabajo directamente a través de `/v2/ingest/{job_id}` o use la variante async (si está disponible).

**`render_quality es muy bajo para páginas que esperaba leer limpiamente.`**
Una puntuación baja (< 0,5) significa la página está bloqueada, vacía o tiene JavaScript pesado que no se renderizó a tiempo. Verifique la URL `url` de origen en un navegador para ver qué entrega realmente la página. Si es una aplicación de una sola página, un segundo renderizado podría tener éxito; si está bloqueada, no hay reintentos.

---

## Fuente y enlaces

- **Fuente**: [enconvert/llama-index-readers-enconvert](https://github.com/enconvert/llama-index-readers-enconvert)
- **Paquete**: [PyPI](https://pypi.org/project/llama-index-readers-enconvert)
- **Licencia**: MIT
- **Documentación de LlamaIndex**: [docs.llamaindex.ai](https://docs.llamaindex.ai)
- **API subyacente**: [Introduction](/docs/introduction.md)

---

## Preguntas frecuentes

### ¿Cómo cargo una sola URL en un Document?

```python
from llama_index.readers.enconvert import EnConvertReader
reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(urls=["https://example.com"])
```

El contenido de cada Document es el markdown de la página, y los metadatos llevan la URL `url` y puntuación `render_quality`.

### ¿Cómo rastro e indexo un sitio completo?

```python
from llama_index.readers.enconvert import EnConvertReader
from llama_index.core import VectorStoreIndex

reader = EnConvertReader(api_key="sk_...")
docs = reader.load_data(ingest_url="https://docs.example.com", mode="sitemap", max_pages=100)
index = VectorStoreIndex.from_documents(docs)

# Consultar
engine = index.as_query_engine()
response = engine.query("¿Qué es esto?")
```

### ¿Cómo verifico la render_quality de una página antes de indexar?

Los metadatos de cada Document incluyen `render_quality`, puntuación de 0,0 a 1,0. Filtre documentos de alta calidad antes de indexar:

```python
high_quality = [doc for doc in docs if doc.metadata.get('render_quality', 1.0) > 0.5]
index = VectorStoreIndex.from_documents(high_quality)
```

### ¿Puedo rastrear múltiples sitios?

Sí. Cree un lector por sitio y llame a `load_data()` secuencialmente o paralelice las llamadas en su propio código async.

### ¿Puedo usar esto con otros componentes de LlamaIndex?

Sí. EnConvertReader devuelve LlamaIndex Documents estándar, así que funciona con cualquier índice o componente posterior.
