[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R5KBQ6ARHS4YP4XZX06DJC":3,"skill-same:01M6R5KBQ6ARHS4YP4XZX06DJC":199},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":13,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6R5KBQ6ARHS4YP4XZX06DJC","polli",null,"Generate images, text, audio, video, and transcribe speech via the Pollinations API using the polli CLI. Use when asked to generate media, call pollinations.ai, check pollen balance, list models, manage API keys, inspect quests, manage my-models, or run polli commands.","APPLEPIE6969\u002FPollinations","APPLEPIE6969","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F242827480?v=4","01M6R5D0EAJN2DFJB3X6QTDANJ","01M6R5D0K2TSEDG15DK4M26BHH",0,"MIT","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[5,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"list","when","api keys","inspect","my","quests","balance","commands","images","cli","text","Bash","Audio","Media","Video","api","speech","run","generate","2026-11-10 10:12:30",false,"---\nname: polli\ndescription: Generate images, text, audio, video, and transcribe speech via the Pollinations API using the polli CLI. Use when asked to generate media, call pollinations.ai, check pollen balance, list models, manage API keys, inspect quests, manage my-models, or run polli commands.\nallowed-tools: Bash(polli *)\n---\n\n# polli — Pollinations CLI\n\nThin wrapper around `gen.pollinations.ai`. Generates images, text, audio, video; transcribes speech; manages API keys, usage, quests, and invite-only my-models.\n\nInstall: `npm i -g @pollinations\u002Fcli@latest` (provides the `polli` binary).\n\n## When to use this skill\n\n- User asks to **generate an image \u002F text \u002F audio \u002F video** via pollinations\n- User mentions **polli, pollinations, pollen, pollinations.ai**\n- User wants to **transcribe speech** or run TTS\n- User asks about their **pollen balance, usage, or API keys**\n- User wants to **browse or filter available models**\n- User wants to inspect **quests** or manage invite-only **my-models**\n\n## Quick reference\n\n| Intent | Command |\n|---|---|\n| Log in once | `polli auth login` |\n| Store an existing key | `printf '%s' \"$POLLINATIONS_API_KEY\" \\| polli auth login --with-token` |\n| Generate image | `polli gen image \"\u003Cprompt>\" --output out.png` |\n| Generate text | `polli gen text \"\u003Cprompt>\"` |\n| Text with stdin as context | `echo \"\u003Cctx>\" \\| polli gen text \"\u003Cquestion>\"` |\n| Describe an image (vision) | `polli gen text \"what is this?\" --image \u003Curl>` |\n| One-shot TTS | `polli gen audio \"\u003Ctext>\" --output speech.mp3` |\n| Speak out loud | `polli gen audio \"\u003Ctext>\" --play` (uses `afplay` on macOS; `ffplay`\u002F`mpv`\u002F`mpg123` on Linux) |\n| Generate video | `polli gen video \"\u003Cprompt>\" --output out.mp4` |\n| Transcribe audio | `polli gen transcribe path\u002Fto.mp3` |\n| Upload a local file | `polli upload path\u002Fto.png` (prints public URL) |\n| List all models | `polli models` |\n| Filter models by type | `polli models --type image` |\n| Model health + latency | `polli models --stats` (default 60m, `--window \u003Cmin>`) |\n| Check balance | `polli usage` |\n| List your quests + claim state | `polli quests` (filters: `--open --claimable --claimed --coming-soon`) |\n| Manage invite-only community models | `polli my-models list` |\n| Machine-readable output | append `--json` to any command |\n\n## Setup\n\nOne-time: `polli auth login` (device-flow; creates a key with `profile`, `usage`, and `keys`). To store an existing key, run\n`printf '%s' \"$POLLINATIONS_API_KEY\" | polli auth login --with-token`. Verify\nwith `polli auth status`.\nOverride the stored key for a single command with `--key \u003Ckey>`.\n\n## Recipes\n\n### Generate an image to a file\n```bash\npolli gen image \"a fox reading a book, studio ghibli style\" --output fox.png\n```\nDefaults: `zimage`, 1024x1024. Pick a different model with `--model flux` (see `polli models --type image`). For edits \u002F img2img, pass one or more `--image \u003Curl>` flags — **must be public http(s) URLs**, local paths are rejected client-side. **Only models that list `\"image\"` in `input_modalities` actually consume the flag** — `flux` and `zimage` are text-only and will silently ignore `--image`. Find i2i-capable models with `polli models --type image --json | jq -r '.[] | select(.input_modalities | contains([\"image\"])) | .name'` (common choices: `nanobanana`, `kontext`, `p-image-edit`). To use a local file, upload it first with `polli upload` (see next recipe).\n\n### Upload a local file to get a public URL\n```bash\nURL=$(polli upload cat.png)\npolli gen image \"make the cat purple\" --image \"$URL\" --output purple.png\n```\n`polli upload \u003Cfile>` posts a multipart upload to `media.pollinations.ai` (100MB max; 30-day lifecycle, refreshed by GETs once the object is at least 15 days old). Each upload receives a unique id. Human mode: URL on stdout and id\u002Fsize\u002FcontentType on stderr. `--json`: full upload response on stdout. The returned URL is public (no auth to fetch) and works anywhere `--image` is accepted — `gen image`, `gen video`, etc.\n\n### Generate text\n```bash\npolli gen text \"summarize the three laws of robotics\"\n```\nSave to file: `--output summary.txt`. Use `--system \"\u003Cmsg>\"` to set system prompt. For reasoning models, pass `--reasoning low|medium|high` to control reasoning effort. **Only send `--reasoning` to models where `reasoning: true`** in `polli models --type text --json` — the flag is not validated client-side, and non-reasoning models may silently accept it (openai), ignore it, or return a 400 (mistral).\n\n### Describe an image with a vision model\n```bash\nURL=$(polli upload selfie.jpg)\npolli gen text \"turn this person into a cartoon pet in one playful sentence\" --image \"$URL\"\n```\n`gen text --image \u003Curl...>` attaches one or more **public https URLs** as an OpenAI-style multimodal message — repeatable for multi-image prompts. Local paths aren't supported; run them through `polli upload` first (see the upload recipe above). **Only text models with `\"image\"` in `input_modalities` actually read the image** — filter with `polli models --type text --json | jq -r '.[] | select(.input_modalities | index(\"image\")) | .name'`. Non-vision models silently ignore the attachment. Good defaults: `openai`, `gemini`, `claude`.\n\n### Pipe stdin as context into text generation\n```bash\ncat README.md | polli gen text \"what does this project do?\"\n```\nstdin becomes context; the positional argument is the question.\n\n### Interactive chat session\n```bash\npolli gen chat --model openai --system \"you are a terse assistant\"\n```\nSlash commands inside the session: `\u002Fexit`, `\u002Fclear`, `\u002Fsave \u003Cpath>`.\n\n### Text-to-speech\n```bash\npolli gen audio \"hello world\" --voice nova --output hello.mp3\necho \"long script\" | polli gen audio --voice nova --output out.mp3\n```\nDefault voice is `sage`. To discover the full live voice list, use the model registry: `polli models --type audio --json | jq -r '.[].voices[]?'` — each audio model entry includes its `voices[]` array. Format defaults to mp3; `--format opus|aac|flac|wav` to change. Accepts stdin (same as `gen text`). Add `--play` to save and then play the audio back (handy for narration\u002Fdemos). Playback starts after the file is fully written, and the command blocks until playback finishes — if you want fire-and-forget, wrap in a subshell: `( polli gen audio \"...\" --play & )`. Player on macOS: `afplay`; on Linux it tries `ffplay`, then `mpv`, then `mpg123` in that order.\n\n### Generate music (elevenmusic)\n```bash\npolli gen audio \"lofi hip-hop beat\" --model elevenmusic --duration 30 --instrumental --output track.mp3\n```\n\n### Generate sound effects (eleven-sfx)\n```bash\npolli gen audio \"thunderclap with heavy rain\" --model eleven-sfx --duration 5 --output thunder.mp3\n```\nText-to-sound-effect via ElevenLabs (aliases: `sfx`, `sound-effects`). `--duration` 0.5–30s (omit to let the model pick). Billed per second of output (~$0.004\u002Fs, capped at $0.12 for a full 30s).\n\n### Multilingual TTS (eleven-multilingual-v2)\n```bash\npolli gen audio \"Bonjour, ceci est un test\" --model multilingual-v2 --voice rachel --output fr.mp3\n```\nStable, lifelike TTS across 29 languages (aliases: `multilingual-v2`, `eleven-v2`) — a non-alpha alternative to the default v3.\n\n### Generate video\n```bash\npolli gen video \"a spacecraft landing on mars\" --model wan-fast --duration 5 --output mars.mp4\n```\nCheapest path: `--model wan-fast` at ~$0.01\u002Fsec, **fixed 5-second output** (any `--duration` value is ignored — you always pay for and receive 5 sec). For image-to-video, pass `--image \u003Curl>` with a **public HTTPS URL** (local file paths and 404\u002Frate-limited hosts will fail with a server error).\n\n**Flag support varies per model and is not enforced client-side.** `--duration`, `--aspect-ratio`, and `--audio` are forwarded to the server but may be silently ignored — verified on `wan-fast` where duration is locked to 5s, `--aspect-ratio 9:16` still returns 16:9, and `--audio` produces no audio track. Always inspect the output (`file`, `ffprobe`) before trusting a flag worked. Check `polli models --type video --json` for per-model capabilities.\n\n**Video is not tracked by `--stats`.** `polli models --type video --stats` returns empty — the stats pipe only records text\u002Fimage\u002Faudio events. To compare video models, fall back to `polli models --type video --json` and look at price\u002Fdescription fields.\n\n### Transcribe audio to text\n```bash\npolli gen transcribe recording.mp3 --language en\n```\nModels: `whisper` (default), `scribe`, `universal-2`, `universal-3-pro`. Accepts common audio formats (mp3, wav, m4a, flac, ogg); non-audio input (e.g. a `.txt` file) returns a clear `400 invalid_request_error: extension \"txt\" not supported` — no need to pre-validate with `file`. Default output is the plain transcript on stdout as a single line (pipe-friendly). Use `--json` for structured output: **whisper** and **AssemblyAI** return timing data when requested through the API; **scribe** returns only `{text: \"...\"}` — use whisper or AssemblyAI if you need timing data. `--language \u003CISO-639-1>` (e.g. `en`, `fr`) is an optional hint that can improve accuracy for non-English or accented speech.\n\n### Discover models\n```bash\npolli models --type text              # text models only\npolli models --type image --verbose   # with context length \u002F pricing\npolli models --stats                  # health + avg latency + err% (60m default)\npolli models --stats --window 5       # last 5 minutes only\n```\nUse `--stats` before choosing a model. **Caveat**: the `err%` column counts **5xx only** — a model can show `0.0%` while having massive 4xx rates (auth, validation, etc.). For the full picture use `--stats --json` and read `errors_4xx`, `errors_5xx`, `latency_p95_ms`.\n\n**Pricing fields are per-token, not per-request.** `completionImageTokens: 0.000008` means each output image-token costs that much — a single 1024x1024 image from `gptimage` lands at ~$0.008, not $0.000008. Flat-priced image models (`flux`, `zimage`) expose `completionImageTokens` as the whole-image price because they emit exactly one \"token\" per image. When in doubt, make one call and read the true cost from `polli usage --history --limit 5 --json`.\n\n### Check usage and balance\n```bash\npolli usage              # current pollen balance\npolli usage --history    # recent individual requests\npolli usage --daily      # daily cost summary\npolli quests             # your quests + claim state (open\u002Fclaimable\u002Fclaimed\u002Fcoming)\npolli quests --claimable # only rewards ready to claim\n```\n**History is eventually consistent** — a request you just made may not appear for 30–60s. When matching costs to freshly-generated media, use `--limit 50` and filter by timestamp, and retry if the expected entry is missing. `polli usage --json` returns `{\"pollen\": \u003Cnumber>}` — the current balance only; use `--history --json` or `--daily --json` for cost breakdowns.\n\n### Manage my-models\n```bash\npolli my-models list\npolli my-models models --base-url https:\u002F\u002Fapi.example.com\u002Fv1 --bearer-token \"$UPSTREAM_KEY\"\npolli my-models create --name my-model --title \"My Model\" --base-url https:\u002F\u002Fapi.example.com\u002Fv1 --bearer-token \"$UPSTREAM_KEY\" --upstream-model gpt-4.1-mini\npolli my-models update \u003Cid> --description \"Updated description\"\npolli my-models delete \u003Cid>\n```\n`my-models` manages owned community text models for invite-only accounts. It requires `communityEndpointsAllowed: true` plus a key with `account:keys`, or an authenticated dashboard session through the API. Use `account:usage` for narrow read-only usage and `polli quests`; use both permissions when a client needs both read-only account state and admin operations. Quest claiming is dashboard-only; `polli quests` is read-only and account-aware.\n\n### Manage API keys\n```bash\npolli keys list                                                    # list all keys on the account\npolli keys info                                                    # details about the CURRENTLY AUTHENTICATED key only (takes no id)\npolli keys create --name \"my-bot\" --type secret --budget 1000 --permissions profile usage   # scoped key\npolli keys create --name \"my-app\" --type publishable --redirect-uri https:\u002F\u002Fapp.example\u002Fcallback --earnings\npolli keys revoke \u003Cid>                                             # id comes from `keys list --json`\n```\n`--permissions \u003Cperms...>` scopes what the new key can do on the account (e.g. `profile usage` lets it call `polli --key \u003Cnew> usage`). **Without `--permissions`, new scoped keys can generate media but cannot read account state** — `polli --key \u003Cnew> usage` will 403. `\"keys\"` is auto-stripped from the list so a scoped key can never mint further keys. Existing keys with `account:keys` can manage my-models where that invite-only feature is enabled, but still need `account:usage` for read-only account state. Publishable app keys default developer earnings off; pass `--earnings` to enable them. To inspect a specific key other than the current one, use `polli keys list --json | jq '.[] | select(.id == \"\u003Cid>\")'`. `keys info` is intentionally scoped to the caller's own key.\n\n### Read API docs\n```bash\npolli docs                          # full llm.txt reference\npolli docs \u002Fv1\u002Fchat\u002Fcompletions     # filter to one endpoint\npolli docs --open                   # open in browser\n```\n\n## Output contract\n\n- **Default (human mode):** varies by command — most emit `key: value` pairs or tab-separated tables with a header row. Exceptions: `gen text` prints the full response to stdout; `gen transcribe` prints the transcript as plain text; `gen chat` runs an interactive REPL. Status\u002Fprogress messages go to stderr, so pipes stay clean.\n- **`--json`:** every command emits machine-parseable JSON to stdout; all human messages go to stderr. **Always prefer `--json` when piping into `jq` or parsing** — it's the only shape with a stable contract.\n- **Exit codes:** 0 on success, non-zero on auth failure, rate limit, network error, or invalid args. Error messages go to stderr.\n\n## Agent operating rules\n\n1. **Run `polli auth status` first** if you don't know whether the user is logged in. Fail fast with a clear \"run `polli auth login`\" message if not.\n2. **Prefer `--json`** whenever you'll parse the output. Never grep human-formatted tables.\n3. **Don't hardcode model IDs.** Fetch the live list with `polli models --type \u003Ctype>`. Model availability changes.\n4. **Before picking a model for production use, check `polli models --stats`.** Rule of thumb for \"healthy\": `err%` ≤ 5, `avg` latency in a reasonable range for the modality (standard text \u003C5s, image \u003C10s, video \u003C60s), and `requests` high enough to be statistically meaningful (ignore rows with \u003C10 requests — noise). **Filter by capability first, then optimize by health** — e.g. for a reasoning task, narrow to models where `reasoning: true` (via `polli models --type text --json`), *then* cross-reference against `--stats` output. The healthiest model overall may not support the capability you need. **Reasoning models are inherently slower — expect 5–50s, not \u003C5s**; when picking among them, prioritize low `err%` and request count over raw latency, and compare latency only within the reasoning-capable subset.\n5. **Always pass `--output \u003Cpath>`** for `gen image`, `gen audio`, `gen video` — otherwise the file lands in the current directory with a default name.\n6. **For stdin-as-context** on `gen text`, pipe the context and pass the question as the positional argument: `cat file | polli gen text \"question about the file\"`.\n7. **For exact flag lists, run `polli \u003Ccmd> --help` or `polli gen \u003Ccmd> --help`.** This skill's recipes cover the common path; the CLI's own help is always the source of truth.\n8. **Use `polli docs [endpoint]` over guessing API shapes.** It prints the canonical `llm.txt` reference from the live API.\n\n## Common pitfalls\n\n- Forgetting `--output` on binary generators (image\u002Faudio\u002Fvideo) — the file goes to a default path, which may not be what the user wants.\n- Using `polli gen text --json` expecting OpenAI chat-completions shape — the CLI's `--json` wraps its own structure. Use `polli docs \u002Fv1\u002Fchat\u002Fcompletions` to see the raw API shape if you need it.\n- Running commands without auth — `polli auth status` tells you who you're logged in as and your balance in one call.\n- **`gen text` streams to a TTY, buffers when piped.** The default now auto-detects — a human at the terminal sees tokens tick in, a pipe\u002Fredirect gets the full response once. Force either mode with `--stream` or `--no-stream`. For scripts and chains like `polli gen text … | polli gen audio …`, you don't need to do anything; buffering happens automatically.\n- **Translating a `polli` workflow into a browser app.** `gen.pollinations.ai` requires a bearer token for generation requests, so a plain client-side `fetch` with no auth returns 401 unless it is served from cache. Mint a scoped key with `polli keys create` and proxy via your own backend.\n","# polli — Pollinations CLI\n\nThin wrapper around `gen.pollinations.ai`. Generates images, text, audio, video; transcribes speech; manages API keys, usage, quests, and invite-only my-models.\n\nInstall: `npm i -g @pollinations\u002Fcli@latest` (provides the `polli` binary).\n\n## When to use this skill\n\n- User asks to **generate an image \u002F text \u002F audio \u002F video** via pollinations\n- User mentions **polli, pollinations, pollen, pollinations.ai**\n- User wants to **transcribe speech** or run TTS\n- User asks about their **pollen balance, usage, or API keys**\n- User wants to **browse or filter available models**\n- User wants to inspect **quests** or manage invite-only **my-models**\n\n## Quick reference\n\n| Intent | Command |\n|---|---|\n| Log in once | `polli auth login` |\n| Store an existing key | `printf '%s' \"$POLLINATIONS_API_KEY\" \\| polli auth login --with-token` |\n| Generate image | `polli gen image \"\u003Cprompt>\" --output out.png` |\n| Generate text | `polli gen text \"\u003Cprompt>\"` |\n| Text with stdin as context | `echo \"\u003Cctx>\" \\| polli gen text \"\u003Cquestion>\"` |\n| Describe an image (vision) | `polli gen text \"what is this?\" --image \u003Curl>` |\n| One-shot TTS | `polli gen audio \"\u003Ctext>\" --output speech.mp3` |\n| Speak out loud | `polli gen audio \"\u003Ctext>\" --play` (uses `afplay` on macOS; `ffplay`\u002F`mpv`\u002F`mpg123` on Linux) |\n| Generate video | `polli gen video \"\u003Cprompt>\" --output out.mp4` |\n| Transcribe audio | `polli gen transcribe path\u002Fto.mp3` |\n| Upload a local file | `polli upload path\u002Fto.png` (prints public URL) |\n| List all models | `polli models` |\n| Filter models by type | `polli models --type image` |\n| Model health + latency | `polli models --stats` (default 60m, `--window \u003Cmin>`) |\n| Check balance | `polli usage` |\n| List your quests + claim state | `polli quests` (filters: `--open --claimable --claimed --coming-soon`) |\n| Manage invite-only community models | `polli my-models list` |\n| Machine-readable output | append `--json` to any command |\n\n## Setup\n\nOne-time: `polli auth login` (device-flow; creates a key with `profile`, `usage`, and `keys`). To store an existing key, run\n`printf '%s' \"$POLLINATIONS_API_KEY\" | polli auth login --with-token`. Verify\nwith `polli auth status`.\nOverride the stored key for a single command with `--key \u003Ckey>`.\n\n## Recipes\n\n### Generate an image to a file\n```bash\npolli gen image \"a fox reading a book, studio ghibli style\" --output fox.png\n```\nDefaults: `zimage`, 1024x1024. Pick a different model with `--model flux` (see `polli models --type image`). For edits \u002F img2img, pass one or more `--image \u003Curl>` flags — **must be public http(s) URLs**, local paths are rejected client-side. **Only models that list `\"image\"` in `input_modalities` actually consume the flag** — `flux` and `zimage` are text-only and will silently ignore `--image`. Find i2i-capable models with `polli models --type image --json | jq -r '.[] | select(.input_modalities | contains([\"image\"])) | .name'` (common choices: `nanobanana`, `kontext`, `p-image-edit`). To use a local file, upload it first with `polli upload` (see next recipe).\n\n### Upload a local file to get a public URL\n```bash\nURL=$(polli upload cat.png)\npolli gen image \"make the cat purple\" --image \"$URL\" --output purple.png\n```\n`polli upload \u003Cfile>` posts a multipart upload to `media.pollinations.ai` (100MB max; 30-day lifecycle, refreshed by GETs once the object is at least 15 days old). Each upload receives a unique id. Human mode: URL on stdout and id\u002Fsize\u002FcontentType on stderr. `--json`: full upload response on stdout. The returned URL is public (no auth to fetch) and works anywhere `--image` is accepted — `gen image`, `gen video`, etc.\n\n### Generate text\n```bash\npolli gen text \"summarize the three laws of robotics\"\n```\nSave to file: `--output summary.txt`. Use `--system \"\u003Cmsg>\"` to set system prompt. For reasoning models, pass `--reasoning low|medium|high` to control reasoning effort. **Only send `--reasoning` to models where `reasoning: true`** in `polli models --type text --json` — the flag is not validated client-side, and non-reasoning models may silently accept it (openai), ignore it, or return a 400 (mistral).\n\n### Describe an image with a vision model\n```bash\nURL=$(polli upload selfie.jpg)\npolli gen text \"turn this person into a cartoon pet in one playful sentence\" --image \"$URL\"\n```\n`gen text --image \u003Curl...>` attaches one or more **public https URLs** as an OpenAI-style multimodal message — repeatable for multi-image prompts. Local paths aren't supported; run them through `polli upload` first (see the upload recipe above). **Only text models with `\"image\"` in `input_modalities` actually read the image** — filter with `polli models --type text --json | jq -r '.[] | select(.input_modalities | index(\"image\")) | .name'`. Non-vision models silently ignore the attachment. Good defaults: `openai`, `gemini`, `claude`.\n\n### Pipe stdin as context into text generation\n```bash\ncat README.md | polli gen text \"what does this project do?\"\n```\nstdin becomes context; the positional argument is the question.\n\n### Interactive chat session\n```bash\npolli gen chat --model openai --system \"you are a terse assistant\"\n```\nSlash commands inside the session: `\u002Fexit`, `\u002Fclear`, `\u002Fsave \u003Cpath>`.\n\n### Text-to-speech\n```bash\npolli gen audio \"hello world\" --voice nova --output hello.mp3\necho \"long script\" | polli gen audio --voice nova --output out.mp3\n```\nDefault voice is `sage`. To discover the full live voice list, use the model registry: `polli models --type audio --json | jq -r '.[].voices[]?'` — each audio model entry includes its `voices[]` array. Format defaults to mp3; `--format opus|aac|flac|wav` to change. Accepts stdin (same as `gen text`). Add `--play` to save and then play the audio back (handy for narration\u002Fdemos). Playback starts after the file is fully written, and the command blocks until playback finishes — if you want fire-and-forget, wrap in a subshell: `( polli gen audio \"...\" --play & )`. Player on macOS: `afplay`; on Linux it tries `ffplay`, then `mpv`, then `mpg123` in that order.\n\n### Generate music (elevenmusic)\n```bash\npolli gen audio \"lofi hip-hop beat\" --model elevenmusic --duration 30 --instrumental --output track.mp3\n```\n\n### Generate sound effects (eleven-sfx)\n```bash\npolli gen audio \"thunderclap with heavy rain\" --model eleven-sfx --duration 5 --output thunder.mp3\n```\nText-to-sound-effect via ElevenLabs (aliases: `sfx`, `sound-effects`). `--duration` 0.5–30s (omit to let the model pick). Billed per second of output (~$0.004\u002Fs, capped at $0.12 for a full 30s).\n\n### Multilingual TTS (eleven-multilingual-v2)\n```bash\npolli gen audio \"Bonjour, ceci est un test\" --model multilingual-v2 --voice rachel --output fr.mp3\n```\nStable, lifelike TTS across 29 languages (aliases: `multilingual-v2`, `eleven-v2`) — a non-alpha alternative to the default v3.\n\n### Generate video\n```bash\npolli gen video \"a spacecraft landing on mars\" --model wan-fast --duration 5 --output mars.mp4\n```\nCheapest path: `--model wan-fast` at ~$0.01\u002Fsec, **fixed 5-second output** (any `--duration` value is ignored — you always pay for and receive 5 sec). For image-to-video, pass `--image \u003Curl>` with a **public HTTPS URL** (local file paths and 404\u002Frate-limited hosts will fail with a server error).\n\n**Flag support varies per model and is not enforced client-side.** `--duration`, `--aspect-ratio`, and `--audio` are forwarded to the server but may be silently ignored — verified on `wan-fast` where duration is locked to 5s, `--aspect-ratio 9:16` still returns 16:9, and `--audio` produces no audio track. Always inspect the output (`file`, `ffprobe`) before trusting a flag worked. Check `polli models --type video --json` for per-model capabilities.\n\n**Video is not tracked by `--stats`.** `polli models --type video --stats` returns empty — the stats pipe only records text\u002Fimage\u002Faudio events. To compare video models, fall back to `polli models --type video --json` and look at price\u002Fdescription fields.\n\n### Transcribe audio to text\n```bash\npolli gen transcribe recording.mp3 --language en\n```\nModels: `whisper` (default), `scribe`, `universal-2`, `universal-3-pro`. Accepts common audio formats (mp3, wav, m4a, flac, ogg); non-audio input (e.g. a `.txt` file) returns a clear `400 invalid_request_error: extension \"txt\" not supported` — no need to pre-validate with `file`. Default output is the plain transcript on stdout as a single line (pipe-friendly). Use `--json` for structured output: **whisper** and **AssemblyAI** return timing data when requested through the API; **scribe** returns only `{text: \"...\"}` — use whisper or AssemblyAI if you need timing data. `--language \u003CISO-639-1>` (e.g. `en`, `fr`) is an optional hint that can improve accuracy for non-English or accented speech.\n\n### Discover models\n```bash\npolli models --type text              # text models only\npolli models --type image --verbose   # with context length \u002F pricing\npolli models --stats                  # health + avg latency + err% (60m default)\npolli models --stats --window 5       # last 5 minutes only\n```\nUse `--stats` before choosing a model. **Caveat**: the `err%` column counts **5xx only** — a model can show `0.0%` while having massive 4xx rates (auth, validation, etc.). For the full picture use `--stats --json` and read `errors_4xx`, `errors_5xx`, `latency_p95_ms`.\n\n**Pricing fields are per-token, not per-request.** `completionImageTokens: 0.000008` means each output image-token costs that much — a single 1024x1024 image from `gptimage` lands at ~$0.008, not $0.000008. Flat-priced image models (`flux`, `zimage`) expose `completionImageTokens` as the whole-image price because they emit exactly one \"token\" per image. When in doubt, make one call and read the true cost from `polli usage --history --limit 5 --json`.\n\n### Check usage and balance\n```bash\npolli usage              # current pollen balance\npolli usage --history    # recent individual requests\npolli usage --daily      # daily cost summary\npolli quests             # your quests + claim state (open\u002Fclaimable\u002Fclaimed\u002Fcoming)\npolli quests --claimable # only rewards ready to claim\n```\n**History is eventually consistent** — a request you just made may not appear for 30–60s. When matching costs to freshly-generated media, use `--limit 50` and filter by timestamp, and retry if the expected entry is missing. `polli usage --json` returns `{\"pollen\": \u003Cnumber>}` — the current balance only; use `--history --json` or `--daily --json` for cost breakdowns.\n\n### Manage my-models\n```bash\npolli my-models list\npolli my-models models --base-url https:\u002F\u002Fapi.example.com\u002Fv1 --bearer-token \"$UPSTREAM_KEY\"\npolli my-models create --name my-model --title \"My Model\" --base-url https:\u002F\u002Fapi.example.com\u002Fv1 --bearer-token \"$UPSTREAM_KEY\" --upstream-model gpt-4.1-mini\npolli my-models update \u003Cid> --description \"Updated description\"\npolli my-models delete \u003Cid>\n```\n`my-models` manages owned community text models for invite-only accounts. It requires `communityEndpointsAllowed: true` plus a key with `account:keys`, or an authenticated dashboard session through the API. Use `account:usage` for narrow read-only usage and `polli quests`; use both permissions when a client needs both read-only account state and admin operations. Quest claiming is dashboard-only; `polli quests` is read-only and account-aware.\n\n### Manage API keys\n```bash\npolli keys list                                                    # list all keys on the account\npolli keys info                                                    # details about the CURRENTLY AUTHENTICATED key only (takes no id)\npolli keys create --name \"my-bot\" --type secret --budget 1000 --permissions profile usage   # scoped key\npolli keys create --name \"my-app\" --type publishable --redirect-uri https:\u002F\u002Fapp.example\u002Fcallback --earnings\npolli keys revoke \u003Cid>                                             # id comes from `keys list --json`\n```\n`--permissions \u003Cperms...>` scopes what the new key can do on the account (e.g. `profile usage` lets it call `polli --key \u003Cnew> usage`). **Without `--permissions`, new scoped keys can generate media but cannot read account state** — `polli --key \u003Cnew> usage` will 403. `\"keys\"` is auto-stripped from the list so a scoped key can never mint further keys. Existing keys with `account:keys` can manage my-models where that invite-only feature is enabled, but still need `account:usage` for read-only account state. Publishable app keys default developer earnings off; pass `--earnings` to enable them. To inspect a specific key other than the current one, use `polli keys list --json | jq '.[] | select(.id == \"\u003Cid>\")'`. `keys info` is intentionally scoped to the caller's own key.\n\n### Read API docs\n```bash\npolli docs                          # full llm.txt reference\npolli docs \u002Fv1\u002Fchat\u002Fcompletions     # filter to one endpoint\npolli docs --open                   # open in browser\n```\n\n## Output contract\n\n- **Default (human mode):** varies by command — most emit `key: value` pairs or tab-separated tables with a header row. Exceptions: `gen text` prints the full response to stdout; `gen transcribe` prints the transcript as plain text; `gen chat` runs an interactive REPL. Status\u002Fprogress messages go to stderr, so pipes stay clean.\n- **`--json`:** every command emits machine-parseable JSON to stdout; all human messages go to stderr. **Always prefer `--json` when piping into `jq` or parsing** — it's the only shape with a stable contract.\n- **Exit codes:** 0 on success, non-zero on auth failure, rate limit, network error, or invalid args. Error messages go to stderr.\n\n## Agent operating rules\n\n1. **Run `polli auth status` first** if you don't know whether the user is logged in. Fail fast with a clear \"run `polli auth login`\" message if not.\n2. **Prefer `--json`** whenever you'll parse the output. Never grep human-formatted tables.\n3. **Don't hardcode model IDs.** Fetch the live list with `polli models --type \u003Ctype>`. Model availability changes.\n4. **Before picking a model for production use, check `polli models --stats`.** Rule of thumb for \"healthy\": `err%` ≤ 5, `avg` latency in a reasonable range for the modality (standard text \u003C5s, image \u003C10s, video \u003C60s), and `requests` high enough to be statistically meaningful (ignore rows with \u003C10 requests — noise). **Filter by capability first, then optimize by health** — e.g. for a reasoning task, narrow to models where `reasoning: true` (via `polli models --type text --json`), *then* cross-reference against `--stats` output. The healthiest model overall may not support the capability you need. **Reasoning models are inherently slower — expect 5–50s, not \u003C5s**; when picking among them, prioritize low `err%` and request count over raw latency, and compare latency only within the reasoning-capable subset.\n5. **Always pass `--output \u003Cpath>`** for `gen image`, `gen audio`, `gen video` — otherwise the file lands in the current directory with a default name.\n6. **For stdin-as-context** on `gen text`, pipe the context and pass the question as the positional argument: `cat file | polli gen text \"question about the file\"`.\n7. **For exact flag lists, run `polli \u003Ccmd> --help` or `polli gen \u003Ccmd> --help`.** This skill's recipes cover the common path; the CLI's own help is always the source of truth.\n8. **Use `polli docs [endpoint]` over guessing API shapes.** It prints the canonical `llm.txt` reference from the live API.\n\n## Common pitfalls\n\n- Forgetting `--output` on binary generators (image\u002Faudio\u002Fvideo) — the file goes to a default path, which may not be what the user wants.\n- Using `polli gen text --json` expecting OpenAI chat-completions shape — the CLI's `--json` wraps its own structure. Use `polli docs \u002Fv1\u002Fchat\u002Fcompletions` to see the raw API shape if you need it.\n- Running commands without auth — `polli auth status` tells you who you're logged in as and your balance in one call.\n- **`gen text` streams to a TTY, buffers when piped.** The default now auto-detects — a human at the terminal sees tokens tick in, a pipe\u002Fredirect gets the full response once. Force either mode with `--stream` or `--no-stream`. For scripts and chains like `polli gen text … | polli gen audio …`, you don't need to do anything; buffering happens automatically.\n- **Translating a `polli` workflow into a browser app.** `gen.pollinations.ai` requires a bearer token for generation requests, so a plain client-side `fetch` with no auth returns 401 unless it is served from cache. Mint a scoped key with `polli keys create` and proxy via your own backend.\n",{"name":5,"description":7,"allowed-tools":50},"Bash(polli *)","wan-aspect-ratio-fix","0cf9c44b2cb868c1431babf98007a269e7a2b66b","packages\u002Fpolli-cli","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969","2026-07-26 00:50:46",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add APPLEPIE6969\u002FPollinations --skill polli",{"tool":63,"command":64},"bunx","bunx skills add APPLEPIE6969\u002FPollinations --skill polli",{"tool":66,"command":67},"pnpm","pnpm dlx skills add APPLEPIE6969\u002FPollinations --skill polli","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002FSKILL.md",true,[71,77,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"bin\u002Fpolli.js","SCRIPT","脚本",47,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fbin\u002Fpolli.js",{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"package-lock.json","REFERENCE","参考文档",73674,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fpackage-lock.json",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"package.json",1613,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fpackage.json",{"path":88,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":89,"sourceHtmlUrl":90},"README.md",4701,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002FREADME.md",{"path":92,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":93,"sourceHtmlUrl":94},"src\u002Fcommands\u002Fauth.ts",8195,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fauth.ts",{"path":96,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":97,"sourceHtmlUrl":98},"src\u002Fcommands\u002Fdocs.ts",3152,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fdocs.ts",{"path":100,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":101,"sourceHtmlUrl":102},"src\u002Fcommands\u002Fgen\u002Faudio.ts",4033,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Faudio.ts",{"path":104,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":105,"sourceHtmlUrl":106},"src\u002Fcommands\u002Fgen\u002Fchat.ts",7108,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Fchat.ts",{"path":108,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":109,"sourceHtmlUrl":110},"src\u002Fcommands\u002Fgen\u002Fimage.ts",3232,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Fimage.ts",{"path":112,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":113,"sourceHtmlUrl":114},"src\u002Fcommands\u002Fgen\u002Findex.ts",733,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Findex.ts",{"path":116,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":117,"sourceHtmlUrl":118},"src\u002Fcommands\u002Fgen\u002Ftext.ts",7866,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Ftext.ts",{"path":120,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":121,"sourceHtmlUrl":122},"src\u002Fcommands\u002Fgen\u002Ftranscribe.ts",2450,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Ftranscribe.ts",{"path":124,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":125,"sourceHtmlUrl":126},"src\u002Fcommands\u002Fgen\u002Fvideo.ts",3319,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fgen\u002Fvideo.ts",{"path":128,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":129,"sourceHtmlUrl":130},"src\u002Fcommands\u002Fkeys.ts",9414,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fkeys.ts",{"path":132,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":133,"sourceHtmlUrl":134},"src\u002Fcommands\u002Fmodels.ts",7495,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fmodels.ts",{"path":136,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":137,"sourceHtmlUrl":138},"src\u002Fcommands\u002Fmy-models.ts",10441,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fmy-models.ts",{"path":140,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":141,"sourceHtmlUrl":142},"src\u002Fcommands\u002Fquests.ts",4584,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fquests.ts",{"path":144,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":145,"sourceHtmlUrl":146},"src\u002Fcommands\u002Fstats.ts",478,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fstats.ts",{"path":148,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":149,"sourceHtmlUrl":150},"src\u002Fcommands\u002Fupload.ts",2396,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fupload.ts",{"path":152,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":153,"sourceHtmlUrl":154},"src\u002Fcommands\u002Fusage.ts",3430,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Fcommands\u002Fusage.ts",{"path":156,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":157,"sourceHtmlUrl":158},"src\u002Findex.ts",2600,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Findex.ts",{"path":160,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":161,"sourceHtmlUrl":162},"src\u002Flib\u002Fapi.ts",1577,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Fapi.ts",{"path":164,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":165,"sourceHtmlUrl":166},"src\u002Flib\u002Fconfig.ts",1638,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Fconfig.ts",{"path":168,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":169,"sourceHtmlUrl":170},"src\u002Flib\u002Ferrors.ts",723,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Ferrors.ts",{"path":172,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":173,"sourceHtmlUrl":174},"src\u002Flib\u002Foutput.ts",5024,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Foutput.ts",{"path":176,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":177,"sourceHtmlUrl":178},"src\u002Flib\u002Fplay.ts",2608,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Fplay.ts",{"path":180,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":181,"sourceHtmlUrl":182},"src\u002Flib\u002Fquotes.ts",146,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Fquotes.ts",{"path":184,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":185,"sourceHtmlUrl":186},"src\u002Flib\u002Fstdin.ts",262,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Fstdin.ts",{"path":188,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":189,"sourceHtmlUrl":190},"src\u002Flib\u002Fstream.ts",1366,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Fsrc\u002Flib\u002Fstream.ts",{"path":192,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":193,"sourceHtmlUrl":194},"tsconfig.json",469,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Ftsconfig.json",{"path":196,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":197,"sourceHtmlUrl":198},"tsup.config.ts",311,"https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fpackages\u002Fpolli-cli\u002Ftsup.config.ts",[200,222,247,270,285,303],{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":45},"01M6R5K5FEQFK9BRNY2S06M73S","founder-meditation","When something goes wrong — build failures, crashes, errors, test failures, deployment issues — generate a short calming meditation with TTS audio to reassure the user that everything will be okay.","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002Fapps\u002Fopenclaw\u002Fskills\u002Ffounder-meditation\u002FSKILL.md",[],[207,208,209,210,44,211,212,41,38,37,213,214,215,216,217,218,219,220,221,27],"founder","founder meditation","test","deployment","issues","https","tts","curl","short","user","build","pollinations","with","errors","Wrong",{"skillNo":223,"name":224,"nameZh":6,"description":225,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":231,"publishedAt":45},"01M6R5JT4Q4B2SE36ZP416AJ4Q","web-research","Query Pollinations text API with web-search models (gemini-search, perplexity-fast, nomnom, etc.). Use when you need web search grounded answers via Pollinations.","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002F.claude\u002Fskills\u002Fweb-research\u002FSKILL.md",[228],{"categoryNo":229,"categoryName":230,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[232,233,234,235,236,237,238,41,239,36,240,241,218,242,243,244,219,245,246,27],"research","web","web research","gemini","search","fast","perplexity","web search","use","models","web-search","query","via","you","nomnom",{"skillNo":248,"name":249,"nameZh":6,"description":250,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":251,"categories":252,"keywords":253,"publishedAt":45},"01M6R5JMK3CJN4VEKVX23745BR","voting-status","Create and post ASCII art voting status diagrams to GitHub issues and Discord. Use when asked to update voting, show voting results, or announce voting status.","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002F.claude\u002Fskills\u002Fvoting-status\u002FSKILL.md",[],[254,255,256,257,258,259,260,261,211,262,240,263,264,265,266,267,268,269,27],"status","voting","voting status","discord","github","create","update","github issues","results","ascii art","diagrams","Art","show","ascii","post","announce",{"skillNo":271,"name":272,"nameZh":6,"description":273,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":274,"categories":275,"keywords":279,"publishedAt":45},"01M6R5J6ZK52VS1783EJH36137","tinybird-deploy","Deploy Tinybird pipes and datasources for enter.pollinations.ai observability with the Tinybird Forward CLI.","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002F.claude\u002Fskills\u002Ftinybird-deploy\u002FSKILL.md",[276],{"categoryNo":277,"categoryName":278,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",[280,281,282,35,283,218,219,284],"deploy","tinybird","tinybird deploy","observability","for",{"skillNo":286,"name":287,"nameZh":6,"description":288,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":289,"categories":290,"keywords":291,"publishedAt":45},"01M6R5HYNSNJBPMC3SQ7PZVM5Y","sync-production","Sync the main branch into production via the GitHub merges API. Pre-checks for merge conflicts and bails out with a clear reason if the merge isn't clean. Use when asked to merge main into production, deploy main to production, or sync production.","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002F.claude\u002Fskills\u002Fsync-production\u002FSKILL.md",[],[292,293,294,258,295,280,41,296,240,297,298,299,300,301,244,219,284,302,27],"sync","Production","sync production","merge","branch","merge conflicts","conflicts","clean","main","clear","reason",{"skillNo":304,"name":305,"nameZh":6,"description":306,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":307,"categories":308,"keywords":309,"publishedAt":45},"01M6R5HSKH50RBQ7W7PY96ZTXE","spending-analysis","Analyze Pollinations Stripe revenue, pack purchases, and balance-bucket spending patterns with Tinybird production data.","https:\u002F\u002Fgithub.com\u002FAPPLEPIE6969\u002FPollinations\u002Fblob\u002Fwan-aspect-ratio-fix\u002F.claude\u002Fskills\u002Fspending-analysis\u002FSKILL.md",[],[310,311,312,313,293,314,218,315,316,317,281,219,32,318,319],"analysis","spending","spending analysis","data","analyze","stripe","patterns","revenue","pack","bucket"]