{
  "markdown": "# Telegram + Whisper Voice Transcription\n\nTelegram channel plugin for Claude Code with **local speech-to-text** via [whisper.cpp](https://github.com/ggerganov/whisper.cpp).\n\nBased on the [official Telegram plugin](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram), extended with automatic voice message transcription using the Whisper medium model. Voice messages are transcribed locally — no external API calls, no data leaves the machine.\n\n## Installation\n\nThis is a community plugin, not part of the official marketplace. There are two ways to install it:\n\n### Option A: Local development mode (recommended for testing)\n\nClone the repository and load it directly:\n\n```bash\ngit clone https://github.com/codefather-labs/claude-telegram-voice-control.git\ncd claude-telegram-voice-control\nbun install\n```\n\nThen start Claude Code with the plugin loaded from the local directory:\n\n```bash\nclaude --plugin-dir ./claude-telegram-voice-control\n```\n\nSkills will be available as `/telegram-voice:configure` and `/telegram-voice:access`.\n\nTo use the Telegram channel, add the development channels flag:\n\n```bash\nclaude --plugin-dir ./claude-telegram-voice-control --channels plugin:telegram-voice --dangerously-load-development-channels plugin:telegram-voice\n```\n\n### Option B: Fork-based installation (persistent)\n\nThis method replaces the official Telegram plugin source with the whisper-enabled fork. The plugin registers as `telegram@claude-plugins-official`, so Telegram channels work without the development flag.\n\n**Step 1.** Edit `~/.claude/plugins/known_marketplaces.json` (create it if it doesn't exist):\n\n- macOS / Linux: `~/.claude/plugins/known_marketplaces.json`\n- Windows: `%USERPROFILE%\\.claude\\plugins\\known_marketplaces.json`\n\n```json\n{\n  \"claude-plugins-official\": {\n    \"source\": {\n      \"source\": \"github\",\n      \"repo\": \"codefather-labs/claude-plugins-official\"\n    },\n    \"installLocation\": \"<HOME>/.claude/plugins/marketplaces/claude-plugins-official\",\n    \"lastUpdated\": \"2026-01-01T00:00:00.000Z\"\n  }\n}\n```\n\nReplace `<HOME>` with your home directory path (e.g., `/Users/yourname` on macOS, `/home/yourname` on Linux, `C:\\Users\\yourname` on Windows).\n\n**Step 2.** Clone the fork into the marketplaces directory:\n\n```bash\ngit clone --depth 1 https://github.com/codefather-labs/claude-plugins-official.git ~/.claude/plugins/marketplaces/claude-plugins-official\n```\n\n**Step 3.** Install and enable the plugin in Claude Code:\n\n```\n/plugin install telegram@claude-plugins-official\n/reload-plugins\n```\n\n**Step 4.** Launch with the channel:\n\n```bash\nclaude --channels plugin:telegram@claude-plugins-official\n```\n\n> **Note:** This replaces the official marketplace source. To revert, delete `~/.claude/plugins/known_marketplaces.json` and `~/.claude/plugins/marketplaces/claude-plugins-official/`, then reinstall the official plugin.\n\n## Setup\n\n### 1. Create a Telegram bot\n\nOpen [@BotFather](https://t.me/BotFather) on Telegram, send `/newbot`, and copy the token (`123456789:AAH...`).\n\n### 2. Configure the bot token\n\nIn Claude Code:\n\n```\n/telegram:configure 123456789:AAHfiqksKZ8...\n```\n\n(If using Option A, the skill name is `/telegram-voice:configure` instead.)\n\n### 3. Pair your Telegram account\n\nDM your bot on Telegram — it replies with a pairing code. In Claude Code:\n\n```\n/telegram:access pair <code>\n/telegram:access policy allowlist\n```\n\nDone. Send a voice message to test transcription.\n\n## Voice Transcription\n\nWhen a voice message arrives, the plugin:\n\n1. Downloads the audio from Telegram\n2. Converts OGA to WAV via ffmpeg\n3. Runs whisper-cli with the medium model (auto-detects language)\n4. Sends the transcribed text to Claude as `[voice transcription] ...`\n\n### Auto-install\n\nOn first voice message, the plugin automatically installs missing dependencies via the detected package manager:\n\n| Platform | Package manager | What gets installed |\n|----------|----------------|---------------------|\n| macOS | brew | `whisper-cpp`, `ffmpeg` |\n| Linux (Debian/Ubuntu) | apt-get | `whisper-cpp`, `ffmpeg` |\n| Linux (Fedora) | dnf | `whisper-cpp`, `ffmpeg` |\n| Linux (Arch) | pacman | `whisper-cpp`, `ffmpeg` |\n| Windows | winget / choco / scoop | `whisper-cpp`, `ffmpeg` |\n\nThe Whisper medium model (`ggml-medium.bin`, ~1.5 GB) is downloaded from HuggingFace automatically.\n\nIf auto-install fails, install manually:\n\n```bash\n# macOS\nbrew install whisper-cpp ffmpeg\n\n# Ubuntu/Debian\nsudo apt-get install whisper-cpp ffmpeg\n\n# Windows\nwinget install ggerganov.whisper-cpp Gyan.FFmpeg\n```\n\n### Graceful Degradation\n\nIf whisper-cli, ffmpeg, or the model are unavailable, the plugin falls back to the existing `(voice message)` behavior. Zero breakage for users who don't need voice transcription.\n\n### Configuration\n\nOverride paths via environment variables in `~/.claude/channels/telegram/.env`:\n\n| Variable | Default |\n|----------|---------|\n| `WHISPER_CLI_PATH` | auto-detected |\n| `FFMPEG_PATH` | auto-detected |\n| `WHISPER_MODEL_PATH` | `~/.local/share/whisper-cpp/models/ggml-medium.bin` |\n| `WHISPER_MODEL_NAME` | `ggml-medium.bin` |\n| `WHISPER_MODEL_URL` | HuggingFace CDN |\n\n## Prerequisites\n\n- [Bun](https://bun.sh) — `curl -fsSL https://bun.sh/install | bash`\n\n## Access Control\n\nSee **[ACCESS.md](./ACCESS.md)** for DM policies, groups, mention detection, and the `access.json` schema.\n\n## Tools\n\n| Tool | Purpose |\n|------|---------|\n| `reply` | Send to a chat (text, files, threading) |\n| `react` | Add emoji reaction |\n| `edit_message` | Edit a previously sent message |\n| `download_attachment` | Download file attachments |\n\n## License\n\nApache-2.0\n",
  "bytes": 5621,
  "sha": "c02d6efcf5604c37b10db8ad256d060cfb906306b478b860cadb58aea615037a",
  "repo_slug": "codefather-labs/claude-telegram-voice-control",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_codefather_labs_claude_telegram_voice_co_46a3ccba/readme"
}