| name | openrouter-embeddings |
| description | Generate text embeddings via OpenRouter using Qwen3-Embedding-8B. |
openrouter-embeddings
Text → embedding vector via OpenRouter. Default model: qwen/qwen3-embedding-8b.
Usage
Resolve TOOL_DIR = the directory containing this SKILL.md. Commands below use TOOL_DIR as a symbolic placeholder; replace it with the resolved, quoted path before running Bash.
Single text
export OPENROUTER_API_KEY=sk-or-v1-...
python3 TOOL_DIR/scripts/embed.py \
--text "The quick brown fox jumps over the lazy dog" \
--output vec.json
Batch from JSONL
Input records.jsonl (one JSON per line):
{"id": "row_0", "text": "Every place name in the United States."}
{"id": "row_1", "text": "Nearby stars and potential exoplanets."}
Run:
python3 TOOL_DIR/scripts/embed.py \
--jsonl records.jsonl \
--output records_with_embeddings.jsonl \
--batch-size 32
Output is the same JSONL with an added embedding field per line.
Flags
| Flag | Default | Description |
|---|
--text | — | Embed one string (mutually exclusive with --jsonl) |
--jsonl | — | Embed many; each line must have a text field |
--output | required | Output path |
--model | qwen/qwen3-embedding-8b | Any embedding model on OpenRouter |
--batch-size | 32 | Records per API call (jsonl mode) |
--dimensions | — | Optional: truncate to N dims if supported |
Endpoint
POST /api/v1/embeddings — OpenAI-compatible schema.
Request:
{ "model": "qwen/qwen3-embedding-8b", "input": ["text1", "text2", ...] }
Response:
{ "data": [ { "embedding": [0.01, -0.02, ...], "index": 0 }, ... ], "model": "...", "usage": {...} }
Notes
qwen3-embedding-8b outputs high-dimensional dense vectors suitable for semantic similarity, clustering, RAG.
- For cheaper batches, consider
qwen/qwen3-embedding-4b or other listed embedding models (GET /api/v1/embeddings/models).