crewai-skim
Give your CrewAI agents the ability to read any URL — clean Markdown, ~4x smaller than raw HTML. No ads, no nav, no boilerplate.
crewai-skim is the official CrewAI tool for Skim — the clean reader API for AI agents. It exposes one tool, SkimReader, that any agent in your crew can call to fetch a web page as agent-ready Markdown plus structured metadata. Output is ~4x smaller than raw HTML — your agents spend fewer tokens and process pages faster.
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 crewai-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 crewai_skim import SkimReader
reader = SkimReader() # reads SKIM_API_KEY from the environment
markdown = reader.run(url="https://en.wikipedia.org/wiki/HTTP_402")
print(markdown)
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.
Use it in a crew
SkimReader is a standard CrewAI BaseTool, so it drops straight into any agent's tool list:
from crewai import Agent, Task, Crew
from crewai_skim import SkimReader
researcher = Agent(
role="Research Analyst",
goal="Read and summarize web articles accurately",
backstory="You turn messy web pages into clean, citable notes.",
tools=[SkimReader()],
)
task = Task(
description="Read https://en.wikipedia.org/wiki/HTTP_402 and summarize it in 5 bullet points.",
expected_output="A 5-bullet summary.",
agent=researcher,
)
crew = Crew(agents=[researcher], tasks=[task])
print(crew.kickoff())
The agent decides when to call the Skim Web Reader, Skim returns clean Markdown (~4x smaller than raw HTML), and the model gets a faster, cheaper read.
Output shape
SkimReader returns Markdown with a YAML frontmatter block of the page metadata:
---
title: Example article
byline: Jane Doe
publishedAt: 2025-01-15
lang: en
excerpt: A short summary...
---
# Example article
The cleaned article body in Markdown...
Set include_metadata=False to get just the Markdown body.
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 |
Prepend a YAML frontmatter block of page metadata to the returned Markdown. |
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.
crewai-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
Release files for crewai-skim 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crewai_skim-0.1.4.tar.gz | 8.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crewai_skim-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.5 kB
Release files / crewai_skim-0.1.4.tar.gz
| Download URL | crewai_skim-0.1.4.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3c48b03802da284f4b7dde808c8c0cc4b2ee6c2fd6fc3c6c4293c83da3a5b11a
|
|
BLAKE2b-256 checksum How to use checksums |
01fcb707eec1331174b463fe4a73b874ce7541326aa794c01a08be005b66f211
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.5
|
Release files / crewai_skim-0.1.4-py3-none-any.whl
| Download URL | crewai_skim-0.1.4-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1c12485108ddb372b2fa321428b83bbf213e077da8f735a6c0b91ba64bec5a00
|
|
BLAKE2b-256 checksum How to use checksums |
b17e897ac22d1f2d8e58f24c58e743d6e7b230a7c33b58f18127e20bd86f05bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.5
|