A Manifest V3 Chrome extension for recording screen/camera sessions and uploading the resulting video directly to Google Drive.
- Recording modes:
screen-camerascreen-onlycamera-only
- Offscreen recording engine (
offscreen/recorder.js) for stable capture in MV3. - Overlay controls (pause/resume/stop) injected into the active tab.
- Google OAuth via
chrome.identityand upload to Drive via Drive v3 API. - Upload progress, notifications, clipboard copy, and local recording history.
- Popup sends
START_RECORDINGto the background service worker. - Background creates/uses the offscreen document and starts capture.
- Offscreen recorder produces the media blob and sends
VIDEO_BLOB. - Background uploads to Drive and broadcasts progress/events back to popup.
- Popup updates UI and stores/share link state.
manifest.json: extension configuration, permissions, OAuth settings.background.js: orchestration, auth, upload pipeline, notifications.offscreen/recorder.js: media capture, pause/resume/stop, blob transfer.content/overlay.js: recording controls and timer in page context.popup/popup.js: authentication and recording state UI.utils/drive-api.js: Drive folder handling + resumable upload.utils/storage.js: recording history and upload state storage helpers.
- Google Chrome (latest stable recommended).
- A Google Cloud project with Drive API enabled.
- OAuth client created for a Chrome Extension.
- Open Google Cloud Console.
- Enable Google Drive API for your project.
- Configure OAuth consent screen with required scopes.
- Create OAuth credentials with application type Chrome Extension.
- Keep the generated client ID.
- Open
manifest.json. - Replace:
YOUR_CLIENT_ID.apps.googleusercontent.com
- Save the file.
- Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked and select this repository folder.
- Copy the extension ID from Chrome extensions page.
- In Google Cloud OAuth client settings, add that extension ID to the Chrome Extension client configuration.
- Open the extension popup.
- Click Connect with Google Drive and complete OAuth.
- Select a recording mode.
- Click Start Recording.
- Use overlay controls to pause/resume/stop.
- After stop, wait for upload completion and use the Drive link.
activeTab: target current tab for overlay interactions.scripting: inject/remove overlay scripts and styles.storage: persist auth flags, upload state, and recording history.identity: OAuth token acquisition for Google APIs.offscreen: host recorder document required by MV3 architecture.notifications: upload completion/failure notifications.tabs: active tab lookup and link-opening behaviors.desktopCapture: screen/window/tab capture selection.
- This project is plain JavaScript and does not require a build step.
- After code changes, reload the unpacked extension from
chrome://extensions. - Background/service worker logs are available from the extension’s Service worker inspector.
- Offscreen recorder logs are available under extension-internal pages in DevTools.
- Confirm
manifest.jsonhas the correct OAuth client ID. - Verify OAuth consent screen is configured and your account is authorized (if app is in testing mode).
- Reopen popup and retry Connect with Google Drive.
- For
screen-cameraandscreen-only, ensure screen sharing is accepted in Chrome’s picker. - Verify extension has microphone/camera permission where applicable.
- Confirm Drive API is enabled in the same Google Cloud project as OAuth.
- Inspect service worker logs for Drive API response details.
.
├── manifest.json
├── background.js
├── content/
│ ├── overlay.js
│ ├── overlay.css
│ └── controls.html
├── offscreen/
│ ├── recorder.html
│ └── recorder.js
├── popup/
│ ├── popup.html
│ ├── popup.js
│ ├── popup-recordings.js
│ └── style.css
└── utils/
├── drive-api.js
├── storage.js
└── thumbnail.js
MIT