Queue multiple Sora prompts and auto-submit them when generation slots become available.
Features โข Installation โข Usage โข How It Works โข Troubleshooting
Sora limits you to 3 concurrent video generations. When you have multiple ideas, you're stuck waiting and manually submitting each prompt one by one.
This extension lets you queue up unlimited prompts locally and automatically submits them as soon as a generation slot opens up. Set it and forget it.
| Feature | Description |
|---|---|
| ๐ฅ Prompt Queue | Add unlimited prompts to a local queue |
| โก Auto-Submit | Automatically submits when active tasks < 3 |
| ๐ Token Capture | Automatically captures auth tokens from manual generations |
| โฐ Daily Limit Detection | Pauses gracefully when credits exhausted, shows reset countdown |
| ๐พ Persistent Storage | Queue survives page reloads and browser restarts |
| ๐ฅ๏ธ Multi-Tab Aware | Coordinates across tabs to prevent double-submissions |
| ๐ Debug Mode | Built-in debug panel for troubleshooting |
-
Download this repository (Code โ Download ZIP) or clone it:
git clone https://github.com/YOUR_USERNAME/sora-prompt-queue.git
-
Open Chrome and navigate to
chrome://extensions/ -
Enable Developer Mode (toggle in top right corner)
-
Click "Load unpacked" and select the extension folder
-
Navigate to sora.chatgpt.com โ the queue panel will appear!
- Go to sora.chatgpt.com
- The queue panel appears in the bottom-right corner
- Generate one video manually โ this captures the auth token
- Once Token: โ appears, you're ready to queue!
| Method | How |
|---|---|
| Queue Panel | Type prompt โ Select orientation โ Click "Add to Queue" |
| Floating Button | Enter prompt in Sora's input โ Click ๐ฅ Queue button |
| Keyboard Shortcut | Enter prompt in Sora's input โ Press Ctrl+Shift+Q |
| Button | Action |
|---|---|
| Play / Pause / Stop automation | |
| ๐ | Toggle debug panel |
| โ | Minimize panel |
| โฌ๏ธ โฌ๏ธ | Reorder queue items |
| โ | Remove from queue |
| ๐ | Manually set token (for testing) |
| ๐ | Refresh status |
| Indicator | Meaning |
|---|---|
| Token: โ | Ready to auto-submit |
| Token: โ | Generate once manually to capture token |
| MAIN: โ | API execution working |
| Ctrl: โ | This tab is controlling submissions |
| Active: 2/3 | 2 of 3 generation slots in use |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Background Service Worker โ
โ โข Captures tokens via chrome.webRequest โ
โ โข Executes API calls in page context (MAIN world) โ
โ โข Coordinates multi-tab controller selection โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ๏ธ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Content Script โ
โ โข Manages queue UI panel โ
โ โข Controls automation (poll every 5s, submit when ready) โ
โ โข Persists queue to chrome.storage.local โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
When you generate a video manually, the extension intercepts the request headers and captures the openai-sentinel-token. This token is stored in session storage (auto-clears when browser closes) and reused for queued submissions.
| Limit Type | Detection | Action |
|---|---|---|
| Concurrent (3 active) | too_many_concurrent_tasks |
Requeue, backoff, retry |
| Daily Credits | rate_limit_exhausted |
Stop automation, show countdown |
Edit content_script.js to customize:
const CONFIG = {
POLL_INTERVAL_MS: 5000, // Poll every 5 seconds
SUBMIT_COOLDOWN_MS: 2000, // Min time between submissions
MAX_CONCURRENT_TASKS: 3, // Sora's limit
BACKOFF_BASE_MS: 10000, // Retry backoff
DEBUG: true // Console logging
};Token won't capture (stays โ)
- Make sure you're on
sora.chatgpt.com - Generate at least one video manually using Sora's native button
- Check DevTools Console โ filter by
SoraQueue - Look for:
[SoraQueue:BG] Captured token (length=XXX)
Submissions keep failing
- Clear token (๐ Clear) and regenerate manually
- Check if daily limit reached (panel will show countdown)
- Verify you're logged in to OpenAI
- Enable debug panel (๐) to see detailed status
Panel doesn't appear
- Refresh the page
- Check extension is enabled at
chrome://extensions/ - Check for errors in DevTools Console
"Extension context invalidated" errors
This happens when the extension updates while tabs are open. Just reload the page.
- โ Tokens stored in session โ auto-clears when browser closes
- โ No external requests โ only communicates with sora.chatgpt.com
- โ No data collection โ prompts stay local in your browser
- โ Token values never logged โ only length for debugging
- โ Open source โ audit the code yourself
sora-prompt-queue/
โโโ manifest.json # Extension manifest (MV3)
โโโ background.js # Service worker (token capture, API execution)
โโโ content_script.js # UI panel, queue management, automation
โโโ styles.css # Panel styling
โโโ popup.html # Extension popup
โโโ popup.js # Popup logic
โโโ icons/
โ โโโ icon16.png
โ โโโ icon48.png
โ โโโ icon128.png
โโโ README.md
Contributions are welcome! Feel free to:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This extension is not affiliated with OpenAI. It interacts with Sora in ways that may not be officially supported. Use responsibly:
- OpenAI may change their API at any time
- Excessive automated requests could affect your account
- This tool enhances legitimate use, not circumvent limits
Made with โค๏ธ for Sora creators who have too many ideas
Try Sora โข Report Bug โข Request Feature