Agent setup
Ask Codex or Claude Code to set it up.
Copy this into your coding agent and let it install the latest extension ZIP, wire up storage, and verify the flow.
Use these instructions to install, configure, test, or troubleshoot the Tweet Media Archive Chrome extension.
Latest ZIP: https://tzhgta2ij2.ufs.sh/f/oJWt3WrKF74pY7tSiUme6Gao91szWvAwDFXCUS0cEMKlZbnm
Source code: https://github.com/danialbka/tweettoarchive
Extension name: Tweet Media Archive
Chrome Web Store ID: ojicpdlgnoidfggebaifkbcifhamahff
Unpacked/dev extension ID from the checked-in manifest key: mjcnbjnemgoimodoenpnohfianlgnidc
Default Dropbox folder: /Twitter Imports
Default Google Drive folder: Tweet Media Archive
Free quota: first 30 successful URL uploads
Paid unlock provider: ExtensionPay, app ID tweet-to-dropbox
Google Drive scope: https://www.googleapis.com/auth/drive.file
Install from the latest ZIP:
1. Download the latest extension ZIP:
https://tzhgta2ij2.ufs.sh/f/oJWt3WrKF74pY7tSiUme6Gao91szWvAwDFXCUS0cEMKlZbnm
2. Unzip it into a normal folder.
3. Open Chrome or another Chromium browser.
4. Go to chrome://extensions.
5. Enable Developer mode.
6. Click Load unpacked.
7. Select the unzipped extension folder.
8. Open the extension Options page.
No build step is required.
Choose storage:
The extension uploads resolved media to Dropbox or Google Drive. Pick one provider in Options, save the setting, then connect that provider.
Before configuring OAuth, ask the user which setup path they want:
1. Built-in/default OAuth - easier and faster. Use the OAuth client IDs already included in the extension where possible.
2. Custom OAuth - for users who want their own Dropbox app key, Google OAuth client, or production-owned cloud setup.
If the user is unsure, recommend built-in/default OAuth first because it is the fastest path to testing the extension.
Dropbox setup:
For built-in/default setup, use the Dropbox app key already shown in the extension UI if available, then connect Dropbox from Options.
For custom OAuth:
1. Open the Dropbox App Console: https://www.dropbox.com/developers/apps
2. Create an app with Scoped access.
3. Choose Full Dropbox.
4. Add this redirect URI exactly:
https://mjcnbjnemgoimodoenpnohfianlgnidc.chromiumapp.org/dropbox
5. Copy the Dropbox app key.
6. In extension Options, paste it into Dropbox app key.
7. Save OAuth settings.
8. Click Connect Dropbox.
9. Approve the Dropbox auth window.
Do not ask for or store a Dropbox app secret. The extension uses the public app key with the Chrome identity redirect flow.
Google Drive setup:
For built-in/default setup, use the checked-in Google OAuth client IDs. For most users:
1. Choose Google Drive in Options.
2. Click Save changes.
3. Click Connect Google Drive.
4. Approve the Google sign-in window.
For custom OAuth with a fresh Google Cloud project:
1. Enable the Google Drive API.
2. Create an OAuth client with application type Chrome Extension.
3. Use extension ID mjcnbjnemgoimodoenpnohfianlgnidc.
4. Put the Chrome Extension OAuth client ID in manifest.json under oauth2.client_id.
5. If a Chromium shell cannot complete chrome.identity.getAuthToken(), create a Web Application OAuth client and add this redirect URI:
https://mjcnbjnemgoimodoenpnohfianlgnidc.chromiumapp.org/
6. Put that public Web client ID in GOOGLE_DRIVE_WEB_CLIENT_ID in background.js.
Never put a Google OAuth client secret in the extension.
Optional account access:
For private or login-gated media:
1. Sign into x.com, twitter.com, or instagram.com in the same browser profile.
2. Open the extension setup/options UI.
3. Use Connect my X account or Connect my Instagram account.
Saved account cookies stay in extension-local browser storage. Do not copy these tokens into source, logs, issues, or support messages.
How to use:
1. Open the extension popup.
2. Paste an x.com, twitter.com, Instagram, bookmark, profile media, or direct media URL.
3. Choose or confirm the destination folder.
4. Start the upload.
5. Open Past uploads to verify what was saved.
Supported source types include X/Twitter posts, X bookmarks, X profile media pages, Instagram posts/reels, and direct media URLs.
Validate setup:
After setup, test with one public X/Twitter media post first.
Check:
- Popup shows a storage provider connected.
- Upload status reaches a completed state.
- The file appears in Dropbox or Google Drive.
- Past uploads lists the pasted URL and saved filename.
For code edits, run:
node --check background.js
node --check popup.js
node --check options.js
node --check history.js
Common problems:
- Dropbox auth fails: verify the redirect URI exactly matches https://mjcnbjnemgoimodoenpnohfianlgnidc.chromiumapp.org/dropbox.
- Google auth returns access denied: ensure the Google Auth Platform audience is External and publishing status is In production.
- Google Drive uploads fail after auth: confirm the Drive API is enabled and the OAuth client ID belongs to this extension ID.
- Private X/Instagram media fails: refresh the saved account session from the extension setup UI after signing into the site in the same browser.
- Payment restore fails: confirm the ExtensionPay project for tweet-to-dropbox is configured.
Safety rules:
- Do not commit OAuth secrets, refresh tokens, cookies, Dropbox tokens, Google tokens, or user media.
- Do not replace the checked-in extension key unless the user wants a new extension ID and new OAuth redirect URIs.
- Do not package or upload release zips unless the user asks.
- Do not remove existing user changes in the working tree.
- Treat public OAuth client IDs and the ExtensionPay app ID as identifiers, not secrets.