AGENT SKILL

tts

Generates spoken narration with Gemini TTS through Vercel AI Gateway. Use for text-to-speech, audio samples, voiceovers, or speaking as Junior with the reusable Junior voice. Do not use for transcription, voice cloning, music generation, or rendering a video without a narration request.

使用场景图像与多媒体
License 许可
Apache-2.0
所属仓库
getsentry/junior
最近更新
2026-11-12
Stars
★ 413
Forks
45

01 前言 Front Matter

name
tts
description
Generates spoken narration with Gemini TTS through Vercel AI Gateway. Use for text-to-speech, audio samples, voiceovers, or speaking as Junior with the reusable Junior voice. Do not use for transcription, voice cloning, music generation, or rendering a video without a narration request.

02 资源文件 7

03 SKILL.md 正文

Text to Speech

Use the bundled scripts/speech.mjs from this directory. Node.js and the installed plugin's host-managed Gateway key are required. Do not install an SDK or ask for secrets in chat.

Workflow

  1. Resolve the requested spoken text. For a sample of Junior's voice, use the bundled sample. Do not send unrelated private context or the full persona to the provider.
  2. Use the default junior-v1 preset: a bright, warm, mischievous adult helper with dry humor. Use --delivery plain for serious or sensitive text. Do not present it as an imitation or recording of a real performer.
  3. Write narration to a UTF-8 file. Keep each clip at 1–5000 characters. Generation spends Gateway credits. Do not generate extra variants without a request.
  4. Generate to a fresh .wav path. Inspect an existing file before trying again. Do not automatically retry timeouts or failures: generation may already have spent credits.
  5. Use sendFiles to deliver the returned path as audio/wav. Say it is synthetic narration. For a video, measure the new audio and pass it to the rendering workflow; speech generation alone does not update the video.

Commands and Assets

# Local, no API call: show the reusable voice preset.
node scripts/speech.mjs --profile

# Paid: generate the bundled Junior sample.
node scripts/speech.mjs --sample --output /tmp/junior-sample.wav

# Paid: generate requested narration.
node scripts/speech.mjs --text-file /tmp/narration.txt --output /tmp/narration.wav

# Paid: use the same voice without snark.
node scripts/speech.mjs --text-file /tmp/incident.txt --output /tmp/incident.wav --delivery plain

Read assets/junior-v1.json when the user asks how the voice is defined. Read assets/sample.txt when previewing the sample script. The script sends delivery instructions separately from text. Do not prepend those directions to narration.

Results are JSON with path, bytes, MIME type, model, voice, profile, delivery, and synthetic status. Use --help for the command surface. No key argument is accepted.

Failures

  • Missing host key or HTTP 401/403: ask the operator to check AI_GATEWAY_API_KEY, plugin registration, and team speech access, then redeploy. A missing key in the Sandbox is expected. Core's OIDC authentication is not reused by this manifest-only plugin.
  • HTTP 402: ask the operator to check credits and spending limits.
  • HTTP 404: report that the requested Gemini model is unavailable for the team. Do not silently choose a different model or provider.
  • Timeout, provider warning, or bad audio: stop and check Gateway usage before a user-authorized retry. Do not claim that an audio file was created or approved by listening.
  • Missing script or Node.js: report plugin setup failure. Do not improvise a token-bearing command.
  • Missing credentials: share the preset and script as a recipe, clearly labeled as not generated audio.

04 同仓库更多 Skills

getsentry
getsentry/junior

junior

Build, review, or update Junior extension skills and plugins. Use when users ask to create a Junior SKILL.md, app skill, plugin, plugin.yaml, packaged plugin, MCP-backed plugin, OAuth or credentialed plugin, or to validate Junior extension files. Do not use for ordinary Junior usage, provider workflows, generic code editing, or non-Junior agent-skill authoring.

Skill与智能体开发
★ 413
getsentry
getsentry/junior

junior-qa

Validate Junior changes through local app-facing paths. Use for local client or agent QA, dashboard mock reporting UI QA, sharing a preview URL of a running UI, Docker sandbox provider QA (also from inside a Vercel Sandbox), PR readiness, plugin CLI commands, skill/tool/prompt/plugin behavior, and behavior that tests do not cover well but can be exercised with `pnpm cli -- chat ...`, another `pnpm cli` command, or `JUNIOR_DASHBOARD_MOCK_CONVERSATIONS=true pnpm dev`.

运维与部署Skill与智能体开发
★ 413
getsentry
getsentry/junior

eval-auth

Use for `/eval-auth` requests in MCP auth-resume integration tests. Always connect through the disclosed MCP tool before answering, then continue the user's actual request using prior thread context when needed.

Skill与智能体开发
★ 413
getsentry
getsentry/junior

jr-rpc

Manage low-level config and plugin introspection flows via jr-rpc bash commands. Use only when the user explicitly asks to read or update provider defaults/config or list installed plugins. Do not use for PR, branch, push, or auth-order questions; load the matching provider skill instead.

★ 413
getsentry
getsentry/junior

xdotcom

Read public X (Twitter) data through the read-only X API v2. Use when users share an x.com or twitter.com link, or ask what someone posted on X, what people are saying about a topic, product, or launch on X, how much chatter something got, or for a post's text, metrics, replies, or an account's recent posts. Do not use it to post, reply, like, repost, follow, or send DMs, or to read private or protected data.

★ 413
getsentry
getsentry/junior

vercel

Deploy and inspect Vercel apps, assign aliases, delete deployments, investigate logs, and monitor deployment outcomes. Use for Vercel deployment and log requests, not GitHub code changes or other cloud providers.

★ 413