# Openrouter Embeddings

> Generate text embeddings via OpenRouter using Qwen3-Embedding-8B.

- Skill: `qinghonglin/openrouter-embeddings` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add qinghonglin/openrouter-embeddings`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qinghonglin/openrouter-embeddings/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: QinghongLin (https://skillmd.com/u/qinghonglin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/qinghonglin/openrouter-embeddings

---


# 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

```bash
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:
```bash
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:
```json
{ "model": "qwen/qwen3-embedding-8b", "input": ["text1", "text2", ...] }
```

Response:
```json
{ "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`).

