Voice Briefing

approvedunreviewed

by reallygood83

Convert your notes into AI-powered audio briefings with cloud sharing support

โ†“ 333 downloadsUpdated 2d agoMIT

๐ŸŽ™๏ธ Obsidian Voice Briefing Plugin

Convert your Obsidian notes into 1-2 minute audio briefings using AI and Text-to-Speech, with cloud sharing support via Google Drive.


โš–๏ธ License

Copyright ยฉ 2025-2026 reallygood83.

This plugin is released under the MIT License. You may use, copy, modify, and distribute it, including in the Obsidian community directory. Keep the copyright notice and license text with copies of the software.


โœจ Features

๐Ÿค– Multi-Provider AI Script Generation

  • Google Gemini (default gemini-3.8-flash)
  • xAI Grok (default grok-4.7)
  • OpenAI (default gpt-6.1-sol)
  • Anthropic Claude (default claude-sonnet-5)

Each provider has a model dropdown plus a custom model ID field. Saved IDs that vendors have retired are moved to a current ID the first time settings load. An ID you typed yourself is left as-is.

๐Ÿ”Š Text-to-Speech

  • Edge TTS - Free local Microsoft voices (edge-tts CLI)
  • Gemini TTS - default gemini-3.8-flash-tts
  • OpenAI TTS - default gpt-4o-mini-tts
  • ElevenLabs - default eleven_v4, with eleven_v4_turbo and earlier models in the dropdown, plus a custom model ID field
  • xAI TTS - present in settings, not used for generation (the realtime socket cannot refresh auth)

โ˜๏ธ Google Drive Cloud Sharing

  • Upload audio files to Google Drive
  • Generate public sharing links
  • Three link format options:
    • HTML Audio Player (recommended)
    • Markdown Link
    • Direct URL

๐ŸŒ Multi-Language Support

  • ๐Ÿ‡ฐ๐Ÿ‡ท Korean (ํ•œ๊ตญ์–ด)
  • ๐Ÿ‡บ๐Ÿ‡ธ English (US)
  • ๐Ÿ‡ฏ๐Ÿ‡ต Japanese (ๆ—ฅๆœฌ่ชž)
  • ๐Ÿ‡จ๐Ÿ‡ณ Chinese (ไธญๆ–‡)
  • ๐Ÿ‡ช๐Ÿ‡ธ Spanish (Espaรฑol)
  • ๐Ÿ‡ซ๐Ÿ‡ท French (Franรงais)
  • ๐Ÿ‡ฉ๐Ÿ‡ช German (Deutsch)

๐ŸŽจ Three Briefing Styles

  • Metaphorical - Easy analogies for complex concepts
  • Feynman Technique - Teaching-style explanations
  • News Anchor - Professional presentation style
  • Custom - Define your own style with prompts

๐Ÿ“ฆ Installation

Prerequisites

  1. Obsidian v0.15.0 or higher
  2. Node.js v16 or higher (for development)
  3. Edge TTS (for free TTS option):
    pip install edge-tts
    

Install Plugin

  1. Download the latest release from GitHub
  2. Extract to .obsidian/plugins/voice-briefing/ (the folder name must match the plugin id)
  3. Enable the plugin in Obsidian Settings โ†’ Community Plugins

โš™๏ธ Configuration

1๏ธโƒฃ AI Provider Setup

Google Gemini (Recommended - Free)

  1. Get API key from Google AI Studio
  2. In plugin settings:
    • AI Provider: Google Gemini
    • API Key: your-gemini-api-key
    • Model: gemini-3.8-flash (default). Pick another listed model, or type a model ID in the custom field.

Other Providers

2๏ธโƒฃ TTS Engine Setup

Option A: Edge TTS (Free)

  1. Install Edge TTS:
    pip install edge-tts
    
  2. In plugin settings:
    • TTS Engine: Edge TTS (Free)
    • Select voice based on your language

Option B: ElevenLabs

  1. Sign up at ElevenLabs
  2. Get an API key from account settings
  3. In plugin settings:
    • TTS Engine: ElevenLabs
    • API Key: your ElevenLabs API key
    • Voice ID: a voice id from ElevenLabs
    • Model: Eleven v4 (eleven_v4) is the default. eleven_v4_turbo is also listed. A non-empty custom model ID overrides the dropdown.

Option C: Gemini TTS or OpenAI TTS

Select the engine, set that provider's API key, then choose a model from the dropdown or type a custom model ID.

3๏ธโƒฃ Google Drive ์—ฐ๊ฒฐ (์„ ํƒ)

์•ก์„ธ์Šค ํ† ํฐ์„ ๋ถ™์—ฌ ๋„ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด 127.0.0.1 ๋ฃจํ”„๋ฐฑ์œผ๋กœ Google ๋กœ๊ทธ์ธ ์ฐฝ์„ ์—ด๊ณ , PKCE๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊พผ ๋’ค refresh token์„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ์ดํ„ฐ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ์€ ๋กœ๊ทธ์— ๋‚จ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ์•ˆ๋‚ด: OAuth 2.0 for Mobile & Desktop Apps.

Google Cloud์—์„œ ๋ฐ์Šคํฌํ†ฑ ํด๋ผ์ด์–ธํŠธ ๋งŒ๋“ค๊ธฐ

  1. Google Cloud Console์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ณ ๋ฆ…๋‹ˆ๋‹ค.
  2. API ๋ฐ ์„œ๋น„์Šค โ†’ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ Google Drive API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. OAuth ๋™์˜ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์ด ํ…Œ์ŠคํŠธ ์ƒํƒœ์ด๋ฉด refresh token์ด 7์ผ ๋’ค์— ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋ณธ์ธ Google ๊ณ„์ •์„ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ์•ฑ์„ ๊ฒŒ์‹œํ•˜์„ธ์š”.
  4. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด โ†’ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋งŒ๋“ค๊ธฐ โ†’ OAuth ํด๋ผ์ด์–ธํŠธ ID์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜•์„ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ ํด๋ผ์ด์–ธํŠธ์—๋Š” ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์ด ํ•จ๊ป˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ฝ˜์†”์ด ๋ฆฌ๋””๋ ‰์…˜ URI๋ฅผ ์š”๊ตฌํ•˜๋ฉด http://127.0.0.1:8585/callback ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 8585์ž…๋‹ˆ๋‹ค.
  6. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์—์„œ Cloud Sharing์„ ์ผœ๊ณ  Client ID์™€ Client Secret์„ ์ž…๋ ฅํ•œ ๋’ค Connect with Google์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ—ˆ์šฉํ•˜๋ฉด ์ฐฝ์„ ๋‹ซ๊ณ  Obsidian์œผ๋กœ ๋Œ์•„์˜ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  7. ์—…๋กœ๋“œํ•  ํด๋”๋ฅผ ์“ฐ๋ ค๋ฉด ๋“œ๋ผ์ด๋ธŒ ํด๋” URL์˜ ํด๋” ID๋ฅผ ์„ค์ •์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ๋น„์šฐ๋ฉด ๋‚ด ๋“œ๋ผ์ด๋ธŒ ๋ฃจํŠธ์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

Optional: Create Upload Folder

  1. Create folder in Google Drive
  2. Copy folder ID from URL: https://drive.google.com/drive/folders/YOUR_FOLDER_ID
  3. Paste folder ID in plugin settings

๐Ÿš€ Usage

Generate Voice Briefing

  1. Open any note in Obsidian
  2. Run command: Generate briefing (the palette shows it as Voice Briefing: Generate briefing)
  3. Wait for AI script generation and audio conversion
  4. Audio will be embedded at the bottom of your note

Link Format Examples

HTML Audio Player (Recommended)

## ๐ŸŽง Voice Briefing

<audio controls src="https://drive.google.com/uc?export=download&id=FILE_ID"></audio>

*Generated on 2025-01-24 โ€ข Duration: ~90s*
*[View in Google Drive](https://drive.google.com/file/d/FILE_ID/view)*

Markdown Link

## ๐ŸŽง Voice Briefing

[๐Ÿ”Š Play Audio](https://drive.google.com/uc?export=download&id=FILE_ID)

*Generated on 2025-01-24 โ€ข Duration: ~90s*
*[View in Google Drive](https://drive.google.com/file/d/FILE_ID/view)*

Direct URL

## ๐ŸŽง Voice Briefing

https://drive.google.com/uc?export=download&id=FILE_ID

*Generated on 2025-01-24 โ€ข Duration: ~90s*

๐Ÿ”ง Troubleshooting

Common Issues

"Edge TTS: command not found"

  • Solution: Install Edge TTS with pip install edge-tts
  • Verify: Run edge-tts --help to confirm installation

"Invalid API key"

  • Solution: Check API key format and provider selection
  • Ensure API key has proper permissions

"Google Drive upload failed"

  • Solution: Use Connect with Google again if the refresh token was revoked
  • A consent screen left in Testing mode expires refresh tokens after 7 days
  • Verify the folder ID if you set one

"Audio not playing in shared notes"

  • Solution: Use HTML or Markdown link format instead of local files
  • Local ![[file.mp3]] syntax only works in your vault

๐Ÿ› ๏ธ Development

Build from Source

# Clone repository
git clone https://github.com/reallygood83/voice-note-obsidian.git
cd voice-note-obsidian

# Install dependencies
npm install

# Build plugin
npm run build

# Development mode (watch)
npm run dev

Project Structure

voice-note-obsidian/
โ”œโ”€โ”€ main.ts                     # Plugin main file
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ ai/
โ”‚   โ”‚   โ””โ”€โ”€ script-generator.ts # AI script generation
โ”‚   โ”œโ”€โ”€ tts/
โ”‚   โ”‚   โ”œโ”€โ”€ edge-tts-handler.ts # Edge TTS integration
โ”‚   โ”‚   โ”œโ”€โ”€ elevenlabs-handler.ts # ElevenLabs integration
โ”‚   โ”‚   โ””โ”€โ”€ tts-generator.ts    # Unified TTS interface
โ”‚   โ””โ”€โ”€ cloud/
โ”‚       โ””โ”€โ”€ google-drive-client.ts # Google Drive API client
โ”œโ”€โ”€ styles.css                  # Plugin styles
โ”œโ”€โ”€ manifest.json               # Plugin metadata
โ””โ”€โ”€ package.json                # Dependencies

๐Ÿ“‹ Roadmap

  • Multi-provider AI script generation
  • Edge TTS and ElevenLabs support
  • Google Drive cloud sharing
  • Multi-language support
  • Google Drive desktop OAuth (loopback + PKCE + refresh token)
  • Batch processing for multiple notes
  • Custom voice cloning (ElevenLabs)
  • Audio transcription for existing recordings

๐Ÿ™ Acknowledgments

  • Built with Obsidian API
  • AI powered by Google Gemini, XAI, OpenAI, and Anthropic
  • TTS by Microsoft Edge TTS and ElevenLabs
  • Cloud storage by Google Drive

๐Ÿ› Bug Reports & Feature Requests

Please open an issue on GitHub

Network, accounts, and files

This plugin is desktop-only (isDesktopOnly: true). Edge TTS runs the edge-tts command, Google sign-in listens on 127.0.0.1, and audio is written with Node.js file APIs.

It sends note text and API keys only to the provider you select:

  • Google Gemini script and TTS APIs, when Gemini is selected
  • xAI APIs, when xAI is selected
  • OpenAI script and speech APIs, when OpenAI is selected
  • Anthropic Messages API, when Claude is selected
  • ElevenLabs text-to-speech API, when ElevenLabs is selected
  • Google OAuth and Google Drive, when cloud sharing is connected. The access token and refresh token stay in this plugin's data. They are not written to the console.
  • Microsoft, indirectly, when Edge TTS is installed: the local edge-tts CLI contacts Microsoft to synthesize speech

Audio files are written inside the vault at <vault>/.obsidian/voice-briefings/ (via Vault.configDir, not a hardcoded path). The plugin does not read files outside the vault. There is no telemetry and no self-update.

API keys and Google client credentials are your accounts. Several of these services are paid or have a free tier. Full use of a provider requires that provider's key.

์ปค๋ฎค๋‹ˆํ‹ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ธฐ

๋ผ์ด์„ ์Šค๋Š” MIT์ž…๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ main.js, manifest.json, styles.css๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

์ž‘์„ฑ์ž๊ฐ€ ์ง์ ‘ ํ•  ์ผ:

  1. GitHub ์ €์žฅ์†Œ๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋“ฑ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ์ €์žฅ์†Œ Settings โ†’ Actions โ†’ General โ†’ Workflow permissions๋ฅผ Read and write๋กœ ๋‘ก๋‹ˆ๋‹ค.
  3. ์ œ์ถœํ•  ๋ฆด๋ฆฌ์Šค์˜ ํƒœ๊ทธ ์ด๋ฆ„์€ manifest.json์˜ version๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. 0.5.4 ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ทธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
  4. community.obsidian.md์— GitHub ๊ณ„์ •์„ ์—ฐ๊ฒฐํ•˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ์•ˆ๋‚ด: Submit your plugin.

authorUrl์€ GitHub ํ”„๋กœํ•„ https://github.com/reallygood83 ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค๋ช…์€ ๋งˆ์นจํ‘œ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. versions.json์—๋Š” 0.5.0๋ถ€ํ„ฐ 0.5.4๊นŒ์ง€ minAppVersion 1.4.0์ด ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘ค Author

๋ฌธ์ • (reallygood83)

๐ŸŒŸ Support

If you find this plugin useful, please consider:

  • โญ Starring the repository
  • ๐Ÿ› Reporting bugs and issues
  • ๐Ÿ’ก Suggesting new features
  • ๐Ÿ“– Contributing to documentation

Made with โค๏ธ for the Obsidian community

๐Ÿšง Development Status: Active development, ready for testing

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.