keirouter-chat
Chat / code generation via KeiRouter using OpenAI /v1/chat/completions or Anthropic /v1/messages format with streaming +…
Fetch URL → markdown / text / HTML via KeiRouter /v1/web/fetch using Firecrawl / Tavily Extract / Exa Contents. Use when the user wants to scrape a webpage, extract URL content, read article, or convert a URL to markdown.
$ npx -y skills add mydisha/keirouter --skill keirouter-web-fetch --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/keirouter-web-fetchContext preview
The summary Claude sees to decide when to auto-load this skill.
Fetch URL → markdown / text / HTML via KeiRouter /v1/web/fetch using Firecrawl / Tavily Extract / Exa Contents. Use when the user wants to scrape a webpage, extract URL content, read article, or convert a URL to markdown.
name: keirouter-web-fetch description: Fetch URL → markdown / text / HTML via KeiRouter /v1/web/fetch using Firecrawl / Tavily Extract / Exa Contents. Use when the user wants to scrape a webpage, extract URL content, read article, or convert a URL to markdown.
Requires `KEIROUTER_URL` (and `KEIROUTER_KEY` if auth enabled). See https://raw.githubusercontent.com/mydisha/keirouter/main/skills/keirouter/SKILL.md for setup.
curl $KEIROUTER_URL/v1/models/fetch | jq '.data[].id' curl "$KEIROUTER_URL/v1/models/info?id=firecrawl/firecrawl-scrape"
`model` is `provider/model` (e.g. `firecrawl/firecrawl-scrape`), a chain name that lists several fetch providers for automatic fallback, or an alias.
`POST $KEIROUTER_URL/v1/web/fetch`
| Field | Required | Notes | |---|---|---| | `model` | yes | from `/v1/models/fetch` | | `url` | yes | URL to extract | | `format` | no | `markdown` (default) / `text` / `html` | | `max_characters` | no | truncate output |
curl -X POST $KEIROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $KEIROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"firecrawl/firecrawl-scrape","url":"https://example.com","format":"markdown"}'curl -X POST $KEIROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $KEIROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tavily/tavily-extract","url":"https://example.com","format":"markdown"}'JS:
const r = await fetch(`${process.env.KEIROUTER_URL}/v1/web/fetch`, {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.KEIROUTER_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ model: "exa/exa-contents", url: "https://example.com", max_characters: 5000 }),
});
const page = await r.json();
console.log(page.title, page.content.length);{
"url": "https://example.com",
"title": "Example Domain",
"content": "# Example Domain\n...",
"format": "markdown"
}The `X-KeiRouter-Provider` header names the provider that answered.
| Provider | `model` | Best for | |---|---|---| | Firecrawl | `firecrawl/firecrawl-scrape` | JS-rendered pages, `format=markdown/html` | | Tavily | `tavily/tavily-extract` | Bulk extract | | Exa | `exa/exa-contents` | Pre-indexed pages; fast text extraction |
Chat / code generation via KeiRouter using OpenAI /v1/chat/completions or Anthropic /v1/messages format with streaming +…
Generate vector embeddings via KeiRouter /v1/embeddings using OpenAI / Mistral / Cohere / Voyage / NVIDIA / AWS Bedrock and other…
Generate images via KeiRouter /v1/images/generations using OpenAI (DALL-E, gpt-image), xAI, Venice or Recraft models, or any…
Speech-to-text via KeiRouter /v1/audio/transcriptions using OpenAI Whisper or Groq Whisper models (or any OpenAI-compatible…
Text-to-speech via KeiRouter /v1/audio/speech using OpenAI voices (or any OpenAI-compatible speech server added as a custom…
Web search via KeiRouter /v1/search using Tavily / Exa / Brave Search / Serper. Use when the user wants to search the web, look…