by reallygood83
Convert your notes into AI-powered audio briefings with cloud sharing support
๐๏ธ 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-ttsCLI) - Gemini TTS - default
gemini-3.8-flash-tts - OpenAI TTS - default
gpt-4o-mini-tts - ElevenLabs - default
eleven_v4, witheleven_v4_turboand 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
- Obsidian v0.15.0 or higher
- Node.js v16 or higher (for development)
- Edge TTS (for free TTS option):
pip install edge-tts
Install Plugin
- Download the latest release from GitHub
- Extract to
.obsidian/plugins/voice-briefing/(the folder name must match the plugin id) - Enable the plugin in Obsidian Settings โ Community Plugins
โ๏ธ Configuration
1๏ธโฃ AI Provider Setup
Google Gemini (Recommended - Free)
- Get API key from Google AI Studio
- 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
- XAI: Get key from XAI Console
- OpenAI: Get key from OpenAI Platform
- Anthropic: Get key from Anthropic Console
2๏ธโฃ TTS Engine Setup
Option A: Edge TTS (Free)
- Install Edge TTS:
pip install edge-tts - In plugin settings:
- TTS Engine: Edge TTS (Free)
- Select voice based on your language
Option B: ElevenLabs
- Sign up at ElevenLabs
- Get an API key from account settings
- 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_turbois 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์์ ๋ฐ์คํฌํฑ ํด๋ผ์ด์ธํธ ๋ง๋ค๊ธฐ
- Google Cloud Console์์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ณ ๋ฆ ๋๋ค.
- API ๋ฐ ์๋น์ค โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ Google Drive API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- OAuth ๋์ ํ๋ฉด์ ๊ตฌ์ฑํฉ๋๋ค. ์ฑ์ด ํ ์คํธ ์ํ์ด๋ฉด refresh token์ด 7์ผ ๋ค์ ๋ง๋ฃ๋ฉ๋๋ค. ๋ณธ์ธ Google ๊ณ์ ์ ํ ์คํธ ์ฌ์ฉ์๋ก ์ถ๊ฐํ๊ฑฐ๋, ์ฑ์ ๊ฒ์ํ์ธ์.
- ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด โ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋ง๋ค๊ธฐ โ OAuth ํด๋ผ์ด์ธํธ ID์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ ๋ฐ์คํฌํฑ ์ฑ์ผ๋ก ๋ง๋ญ๋๋ค. ๋ฐ์คํฌํฑ ํด๋ผ์ด์ธํธ์๋ ํด๋ผ์ด์ธํธ ID์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ด ํจ๊ป ์์ต๋๋ค.
- ์ฝ์์ด ๋ฆฌ๋๋ ์
URI๋ฅผ ์๊ตฌํ๋ฉด
http://127.0.0.1:8585/callback์ ์ถ๊ฐํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ ๊ธฐ๋ณธ ํฌํธ๋ 8585์ ๋๋ค. - ํ๋ฌ๊ทธ์ธ ์ค์ ์์ Cloud Sharing์ ์ผ๊ณ Client ID์ Client Secret์ ์ ๋ ฅํ ๋ค Connect with Google์ ๋๋ฆ ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ํ์ฉํ๋ฉด ์ฐฝ์ ๋ซ๊ณ Obsidian์ผ๋ก ๋์์ค๋ฉด ๋ฉ๋๋ค.
- ์ ๋ก๋ํ ํด๋๋ฅผ ์ฐ๋ ค๋ฉด ๋๋ผ์ด๋ธ ํด๋ URL์ ํด๋ ID๋ฅผ ์ค์ ์ ๋ฃ์ต๋๋ค. ๋น์ฐ๋ฉด ๋ด ๋๋ผ์ด๋ธ ๋ฃจํธ์ ์ ๋ก๋ํฉ๋๋ค.
Optional: Create Upload Folder
- Create folder in Google Drive
- Copy folder ID from URL:
https://drive.google.com/drive/folders/YOUR_FOLDER_ID - Paste folder ID in plugin settings
๐ Usage
Generate Voice Briefing
- Open any note in Obsidian
- Run command:
Generate briefing(the palette shows it as Voice Briefing: Generate briefing) - Wait for AI script generation and audio conversion
- 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 --helpto 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-ttsCLI 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๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌํด๋ ๋ฉ๋๋ค.
์์ฑ์๊ฐ ์ง์ ํ ์ผ:
- GitHub ์ ์ฅ์๋ฅผ ๊ณต๊ฐํฉ๋๋ค. ๋น๊ณต๊ฐ ์ ์ฅ์๋ ๋๋ ํฐ๋ฆฌ์ ๋ฑ๋ก๋์ง ์์ต๋๋ค.
- ์ ์ฅ์ Settings โ Actions โ General โ Workflow permissions๋ฅผ Read and write๋ก ๋ก๋๋ค.
- ์ ์ถํ ๋ฆด๋ฆฌ์ค์ ํ๊ทธ ์ด๋ฆ์
manifest.json์version๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. 0.5.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)
- GitHub: @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.