← Back to Home
1. Getting Started
Installation
- Install Duly Noted from the Chrome Web Store
- Click the Duly Noted icon in your toolbar (or press
Alt+Shift+V)
- Grant microphone permission when prompted
- Click "Start Recording" and speak your first note
- Click "Stop & Send" when done
- Choose a destination: GitHub, Notion, or save as draft
Tip: Pin the extension to your toolbar for quick access. Right-click the extensions puzzle icon and click the pin next to Duly Noted.
Keyboard Shortcut
Press Alt+Shift+V to open Duly Noted from anywhere in Chrome. You can customize this shortcut at chrome://extensions/shortcuts.
2. GitHub Integration Setup
Connecting Your GitHub Account
- Open Duly Noted and click the Settings icon
- Scroll to GitHub Integration
- Click "Sign in with GitHub"
- A popup will open asking you to authorize the app
- Click "Authorize" on GitHub
- The popup closes and you'll see "Connected" in settings
That's it! You can now send voice notes to GitHub Issues and Projects. Your OAuth credentials are stored securely in Chrome's local storage.
Sending Notes to GitHub Issues
- After recording, click the "GitHub Issue" button
- Select a repository from the dropdown
- Edit the title and body if needed
- Click "Create Issue"
Sending Notes to GitHub Projects
- After recording, click the "GitHub Project" button
- Select a repository, then select a project
- Edit the title and body if needed
- Click "Add to Project"
Disconnecting GitHub
Go to Settings → GitHub Integration → "Sign Out". You can also revoke access from GitHub → Settings → Applications.
3. Notion Integration Setup
Connecting Your Notion Workspace
- Open Duly Noted and click the Settings icon
- Scroll to Notion Integration
- Click "Sign in with Notion"
- Select your workspace in the popup
- Choose which pages/databases to grant access to
- Click "Allow access"
Important: After connecting, you need to grant the integration access to specific pages or databases in Notion. Open a page in Notion → click "..." menu → "Add connections" → select "Duly Noted".
Sending Notes to Notion
- After recording, click the "Notion" button
- The extension finds your accessible databases and pages
- The first line of your note becomes the page title
- The full transcription becomes the page content
- Click the note in history to open it in Notion
Disconnecting Notion
Go to Settings → Notion Integration → "Sign Out". You can also revoke access from Notion → Settings → My Integrations.
4. Browser Compatibility
Fully Supported
- Google Chrome (version 114+) — Uses Web Speech API for instant transcription
- Microsoft Edge (Chromium-based) — Uses Web Speech API for instant transcription
- Brave Browser — Uses built-in whisper.cpp AI for on-device transcription (no Google services needed)
Brave users: Duly Noted automatically detects Brave and uses on-device AI transcription powered by whisper.cpp. No configuration needed — it just works. Transcription may take a few seconds longer than Chrome since it runs locally on your machine.
How Transcription Works
Duly Noted uses two transcription engines and automatically picks the best one for your browser:
- Web Speech API (Chrome, Edge) — Near-instant results, requires internet connection
- whisper.cpp WASM (Brave) — On-device AI, works offline, ~3-5 second processing time per segment
Both engines are fully private. Audio is never stored or sent to Duly Noted's servers.
Not Supported
- Firefox — Does not support Chrome/Chromium extensions
- Safari — Does not support Chrome/Chromium extensions
5. Troubleshooting
"URI mismatch" error when signing in to GitHub or Notion
Solution
This usually means the extension ID doesn't match what the OAuth app expects. If you installed from the Chrome Web Store, this should not happen. If you're running from source:
- Check your extension ID at
chrome://extensions/
- Ensure the redirect URI in your GitHub/Notion OAuth app matches your extension ID
- Reload the extension and try again
No transcription appearing when recording
Solution
- Check microphone permission at
chrome://settings/content/microphone
- Check that no other app is using the microphone
- Try speaking louder or closer to the microphone
- Chrome/Edge: Check your internet connection — Web Speech API requires internet
- Brave: On-device transcription takes a few seconds to process. Wait for "Processing audio..." to finish after stopping the recording. The first recording may take longer while the AI model loads
Notion button is grayed out / disabled
Solution
- Open Settings → Notion Integration
- Click "Sign in with Notion" and complete the OAuth flow
- After connecting, grant access to pages/databases in Notion ("..." menu → "Add connections" → "Duly Noted")
"No databases or pages found" error in Notion
Solution
Your Notion integration needs access to at least one page or database:
- Open any page in Notion
- Click the "..." menu in the top right
- Click "Add connections"
- Select "Duly Noted"
"API rate limit exceeded" error on GitHub
Solution
GitHub rate limits API requests. Wait about an hour for the limit to reset. Using OAuth authentication (which Duly Noted uses by default) provides a much higher rate limit than anonymous access.
Extension crashes or stops working
Solution
- Go to
chrome://extensions/
- Click the reload button on Duly Noted
- If the issue persists, go to Settings → Advanced → Clear All Data
- As a last resort, uninstall and reinstall the extension
OAuth popup doesn't open or closes immediately
Solution
- Check that your browser allows popups for extensions
- Disable any popup blockers temporarily
- Try reloading the extension at
chrome://extensions/
- Make sure you're using a supported browser (Chrome, Edge, or Brave)
6. Debugging Tips
If you're a developer or want to investigate issues more deeply:
Service Worker Console
- Go to
chrome://extensions/
- Find Duly Noted and click the "service worker" link
- The console shows background logs and errors
Side Panel Console
- Right-click inside the Duly Noted side panel
- Select "Inspect"
- The console shows UI logs and errors
View Stored Data
Open any extension console and run:
chrome.storage.local.get(null, (data) => console.log(data));
Clear All Extension Data
Use the in-app option (Settings → Advanced → Clear All Data) or run in the console:
chrome.storage.local.clear();
Report a Bug
If you've found a bug, please open an issue on GitHub with:
- Steps to reproduce the problem
- Error messages from the console (if any)
- Your Chrome version and OS
- Extension version (shown in Settings)