llama-index-readers-skim
Give your LlamaIndex pipeline the ability to read any URL — clean Markdown, ~4x smaller than raw HTML. No ads, no nav, no boilerplate.
llama-index-readers-skim is the official LlamaIndex reader for Skim — the clean reader API for AI agents. It exposes one reader, SkimReader, that turns any web page into a LlamaIndex Document of agent-ready Markdown plus structured metadata. Output is ~4x smaller than raw HTML — your pipeline ingests more pages with fewer tokens.
Two ways to pay: card plan with API key (free tier: 1,000 reads/month — skim402.com/pricing) or x402 wallet pay-per-call ($0.002 USDC on Base, no account needed).
See it before you wire it: try Skim free in your browser — 10 free skims a day, no wallet, no signup. Paste a URL, see exactly what your agent gets back.
Install
pip install llama-index-readers-skim
Quickstart (60 seconds)
1. Get a free API key
Go to skim402.com/pricing, sign up for the free plan (1,000 reads/month), and copy your sk402_... key.
2. Set the env var
export SKIM_API_KEY=sk402_your_key_here
3. Use it
from llama_index.readers.skim import SkimReader
reader = SkimReader() # reads SKIM_API_KEY from the environment
documents = reader.load_data(urls=["https://en.wikipedia.org/wiki/HTTP_402"])
print(documents[0].text)
print(documents[0].metadata)
Each Document contains the clean Markdown as text and page metadata in metadata. ~4x smaller than raw HTML.
Alternative: pay per call with a crypto wallet
If you prefer x402 wallet pay-per-call instead of a card plan:
export SKIM_WALLET_PRIVATE_KEY=0xYOUR_BASE_WALLET_PRIVATE_KEY
Fund a dedicated Base wallet with a small USDC balance. Each read costs $0.002 on Base. Full setup guide: https://skim402.com/wallet.
Use a fresh wallet, not your personal one. This wallet's private key signs payment authorizations on your machine — treat it like a hot wallet for paying $0.002 tolls, not a savings account.
Build an index from web pages
SkimReader returns standard LlamaIndex Document objects, so it drops straight into any ingestion pipeline:
from llama_index.core import VectorStoreIndex
from llama_index.readers.skim import SkimReader
reader = SkimReader()
documents = reader.load_data(
urls=[
"https://example.com/article-one",
"https://example.com/article-two",
]
)
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
print(query_engine.query("What do these articles have in common?"))
Output shape
load_data returns a list of Document objects. Each Document has:
text— the cleaned article body in Markdown.metadata— a dict with the source URL plus the page metadata Skim extracted:
{
"source": "https://example.com/article",
"title": "Example article",
"byline": "Jane Doe",
"publishedAt": "2025-01-15",
"lang": "en",
"excerpt": "A short summary...",
}
Empty and None metadata values are dropped. Set include_metadata=False to keep only the source URL.
Configuration
SkimReader takes the following parameters:
| Parameter | Default | Notes |
|---|---|---|
api_key |
$SKIM_API_KEY |
Card-plan API key (sk402_...). Get one free at skim402.com/pricing. Takes priority over private_key. |
private_key |
$SKIM_WALLET_PRIVATE_KEY |
Wallet lane only. Hex private key for the Base wallet. Ignored when api_key is set. |
base_url |
https://skim402.com |
Override the API base URL. For self-hosting or local development. |
max_price_usd |
0.01 |
Wallet lane only. Hard cap on per-call price in USD. Skim is $0.002/call. |
include_metadata |
True |
Populate each Document's metadata with the page metadata Skim returns. |
timeout |
60 |
Per-request timeout in seconds. |
# Card key (recommended)
reader = SkimReader(api_key="sk402_...")
# Or wallet
reader = SkimReader(
private_key="0x...",
max_price_usd=0.005,
include_metadata=False,
)
Security
- No outbound telemetry from this package.
llama-index-readers-skimonly talks toskim402.com(or whatever you set asbase_url). No analytics, no error reporting, no phone-home. - Wallet lane: the private key only signs payment authorizations locally — it never leaves your machine.
Links
- Skim website — https://skim402.com
- Pricing & free key — https://skim402.com/pricing
- Wallet setup guide — https://skim402.com/wallet
- API docs — https://skim402.com/docs
- GitHub — https://github.com/JessieJanie/skim402
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llama_index_readers_skim-0.1.2.tar.gz.
File metadata
- Download URL: llama_index_readers_skim-0.1.2.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
288ba80be84643e1f0ba3487df23761f6aae62320910ad25aa442aee9555859d
|
|
| MD5 |
f7a52ba36483c9991c311421449e5a0d
|
|
| BLAKE2b-256 |
9a19f1bfa4af8c1360fa43ba88282181e202078224782d0e2165674cdc4d0c90
|
File details
Details for the file llama_index_readers_skim-0.1.2-py3-none-any.whl.
File metadata
- Download URL: llama_index_readers_skim-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
924fc02f7f2a5f1b09442cf0a74a381c3f308dab745e0912a2a7853845fa8552
|
|
| MD5 |
ec5ed465489d58d26cc4165eaf957353
|
|
| BLAKE2b-256 |
a8d99c301cb5c91b1d46623567ee7032e3259572af853ca9e84a7f042f185828
|