Artwork: Hakurei Reimu by kageharu - Source
β οΈ This extension is under active development. Features may change and bugs may exist. Created as a passion project for the Szurubooru community.
A Chrome extension for seamlessly uploading images to Szurubooru from various websites with automatic tag extraction, duplicate handling, and background processing.
- Right-click context menu for image uploads
- Extracts images from posts
- Preview modal with tag editing
- Background uploads - continue browsing while uploads process
- Duplicate post handling with tag merging and safety rating updates
- Automatic tag extraction from supported websites
- Tag autocomplete with category display
- Tag category mapping (artist, character, copyright, etc.)
- Default tags with configurable categories
- Tag normalization (spaces to underscores)
- Safely Updates existing tags categories, if needed
- Configurable Szurubooru server settings
- Default safety rating (safe/sketchy/unsafe)
- Source URL extraction and merging
- Auto-update duplicates option
- Background notifications with vertical stacking
- Iframe modal for complete site isolation
- Notification system (newest first)
- Page navigation resilience - uploads continue if you navigate away
- Yande.re πΌοΈπ₯ - Full tag extraction, rating detection, source URLs, image and video support
- Twitter πΌοΈ - Image extraction, author extraction, hashtag extraction
- Reddit, Imgur, Pixiv, DeviantArt, FurAffinity, Tumblr, 4chan, e621, Gelbooru, Sankaku, Danbooru
- Clone the repository
- Run
npm install - Run
npm run build - Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" (top right toggle)
- Click "Load unpacked" and select the
distdirectory
This project uses GitHub Actions to automatically build and create downloadable extension files:
- Go to the Releases page
- Download the appropriate zip file:
szuru-browser-extension.zipfor Chrome/Chromium
- Extract the zip file
- Load the extension:
- Chrome/Chromium: Go to
chrome://extensions/, enable "Developer mode", click "Load unpacked", select the extracted folder
- Chrome/Chromium: Go to
Coming soon - Chrome Web Store release
- Open extension options page
- Server Configuration
- Enter Szurubooru server URL
- Add username and API key/token
- Validate credentials
- Default Tags
- Add tags with categories (artist, character, copyright, general)
- Tags are automatically applied to all uploads
- Upload Settings
- Set default safety rating
- Enable/disable auto-update for duplicate posts
- Website Modules
- Toggle support for specific websites
- Support level icons show what each site supports: πΌοΈ (images), π₯ (videos), or both
- Tag Colors (optional)
- Customize tag category colors
- Right-click on page (not an image)
- Select "Upload to Szurubooru"
- Extension automatically finds and extracts images and videos (if applicable)
- Follow same upload process
- Review extracted tags and sources
- Add/remove tags as needed
- Set safety rating
- Click "Upload" - modal closes and upload processes in background
Notice: If you right click on an image from a browsing page (such as https://yande.re/post) the extension will extract tags from the current page. You need to be on the post page to extract tags properly. Working on a fix for this..
- Manual Mode: Shows dialog with options to view existing post or update tags
- Auto Mode: Automatically merges tags and updates safety rating
- Tag Merging: New tags are added to existing post (not overwritten)
- Safety Updates: Rating can be updated during duplicate handling
- Success: Upload completed successfully
- Duplicate: Post already exists (with update options)
- Error: Detailed error messages with suggestions
- Background: Continue browsing while uploads process
- Manifest V3 compliant
- TypeScript for type safety
- Webpack for bundling
- Iframe modal for site isolation
- Background script for API communication
- Content script for page interaction
- Two-step upload: Create/update tags first, then upload post
- Category validation: Ensures tags have correct categories
- Automatic merging: Combines new tags with existing ones
- Normalization: Handles spaces, special characters
- API token authentication
- CORS handling via background script
- Site isolation via iframe modal (for pesky keybinds)
- No data collection - all processing happens locally and in your Szurubooru server
npm run build- Production buildnpm run build:dev- Development buildnpm run watch- Watch and rebuild during development
src/
βββ background.ts # API communication & message handling
βββ contentScript.ts # Page interaction & modal management
βββ components/
β βββ IframeModal.ts # Modal controller
βββ utils/
β βββ szuruAPI.ts # Szurubooru API client
β βββ siteMapping.ts # Website detection & extractors
βββ websites/ # Website extractors
βββ types/
β βββ websiteExtractor.ts # Type definitions
βββ modal.html # Modal UI
βββ modal.ts # Modal logic
βββ options.html # Options page
βββ options.ts # Options logic
- Fork the repository
- Create a feature branch
- Implement your changes
- Add tests if applicable
- Submit a pull request
- Create extractor in
src/websites/ - Implement required methods (extractTags, extractImages, etc.)
- Add to site mapping
- Test thoroughly
This project is licensed under the MIT License. See the LICENSE file for details.
