| name | mangasnap-oneclick-userscript |
| description | Browser userscript for packaging manga chapters into CBZ/ZIP archives with one click |
| triggers | ["how do I use the MangaSnap OneClick userscript","install LuminaCBZ manga downloader","configure mangasnap chapter archiver","customize CBZ export naming patterns","troubleshoot manga userscript issues","batch download manga chapters as cbz","set up tampermonkey manga script","archive manga chapters offline"] |
MangaSnap-OneClick Userscript Skill
Skill by ara.so — Devtools Skills collection.
MangaSnap-OneClick (branded as LuminaCBZ) is a browser userscript that enables one-click packaging of manga chapters into CBZ or ZIP archives for offline reading. It detects chapter boundaries, fetches all pages, and assembles them into properly named archives entirely client-side.
Installation
Prerequisites
Install a userscript manager browser extension:
- Tampermonkey (Chrome, Firefox, Edge, Safari, Opera)
- Violentmonkey (Chrome, Firefox, Edge)
- Greasemonkey (Firefox)
Installing the Script
- Install a userscript manager extension
- Visit the installation page:
https://morethanpaper.github.io/MangaSnap-OneClick/
- Click the install button when prompted by your userscript manager
- Navigate to a supported manga chapter page (typically BigComics sites)
- Look for the "Package Chapter" button overlay
Core Features
- One-click chapter archiving: Single button to download complete chapters
- Multi-format export: ZIP or CBZ output
- Intelligent naming: Extracts series, chapter, volume metadata
- Parallel page fetching: Concurrent downloads with configurable parallelism
- Client-side processing: No external servers, all in-browser
- Multi-language UI: Auto-detects browser locale
Configuration
Basic Configuration Object
The script exposes a global configuration object that can be customized before page load:
window.__LUMINA_CONFIG__ = {
format: 'cbz',
parallelism: 4,
naming: 'seriesFirst',
customPattern: '{series}_Chapter_{chapter}_vol_{volume}.cbz'
};
Configuration Options
| Option | Type | Default | Description |
|---|
format | string | 'cbz' | Archive format: 'zip' or 'cbz' |
parallelism | number | 4 | Concurrent page downloads (1-8) |
naming | string | 'seriesFirst' | Naming convention for archives |
customPattern | string | varies | Custom filename pattern template |
Custom Naming Patterns
Available template variables:
{series} - Series/manga title
{chapter} - Chapter number
{volume} - Volume number
{part} - Part/section number
{year} - Current year
{title} - Chapter title (if available)
Example patterns:
customPattern: '{chapter}_{series}_vol_{volume}.cbz'
customPattern: '{series} - Chapter {chapter} (Volume {volume}) [{year}].cbz'
customPattern: '{series}_{chapter}.cbz'
Usage Patterns
Basic Single-Chapter Download
- Navigate to a manga chapter page on a supported site
- Wait for the "Package Chapter" button to appear (usually top-right overlay)
- Click the button
- Choose format (CBZ/ZIP) if prompted
- Wait for progress bar to complete
- Save the archive when browser download prompt appears
Adjusting Download Speed
For slower connections, reduce parallelism to avoid timeouts:
window.__LUMINA_CONFIG__ = {
parallelism: 2
};
For faster connections with stable bandwidth:
window.__LUMINA_CONFIG__ = {
parallelism: 6
};
Handling Failed Downloads
If a download fails or produces incomplete archives:
- Check parallelism: Lower to 2-3 for unstable connections
- Verify page count: Ensure all images loaded (scroll through chapter first)
- Clear browser cache: Old cached images may interfere
- Disable other extensions: Ad blockers or privacy tools may block requests
- Check console errors: Open DevTools (F12) and check Console tab
window.__LUMINA_CONFIG__ = {
parallelism: 1
};
Script Customization
Modifying Archive Compression
The script uses client-side ZIP compression. To adjust compression level (requires editing the userscript source):
const zipOptions = {
type: 'blob',
compression: 'DEFLATE',
compressionOptions: {
level: 6
}
};
Adding Custom Metadata to CBZ
CBZ archives can include ComicInfo.xml metadata. To add custom metadata (requires script modification):
const comicInfoXml = `<?xml version="1.0"?>
<ComicInfo>
<Title>${chapterTitle}</Title>
<Series>${seriesName}</Series>
<Number>${chapterNumber}</Number>
<Volume>${volumeNumber}</Volume>
<PageCount>${pageCount}</PageCount>
<Year>${new Date().getFullYear()}</Year>
</ComicInfo>`;
zip.file('ComicInfo.xml', comicInfoXml);
Extending to New Sites
To add support for additional manga hosting platforms (requires forking and modifying):
const siteConfigs = {
'newsitedomain.com': {
chapterTitleSelector: '.chapter-title',
imageContainerSelector: '.manga-page img',
pageCountSelector: '.page-indicator',
nextPageSelector: '.next-page-link'
}
};
function detectCurrentSite() {
const hostname = window.location.hostname;
return Object.keys(siteConfigs).find(domain => hostname.includes(domain));
}
Troubleshooting
Button Not Appearing
Symptoms: No "Package Chapter" button visible on supported pages
Solutions:
- Verify userscript manager is enabled and script is active
- Check if page URL matches script's
@match patterns
- Refresh the page (Ctrl/Cmd + R)
- Check console for JavaScript errors (F12 → Console)
- Ensure no conflicting scripts are installed
console.log(window.__LUMINA_CONFIG__);
Incomplete Archives
Symptoms: CBZ/ZIP has fewer pages than expected
Solutions:
- Scroll through entire chapter before downloading (triggers lazy-load)
- Reduce parallelism to 2-3
- Wait for all images to fully load (check network tab in DevTools)
- Disable "data saver" browser features
window.__LUMINA_CONFIG__ = {
parallelism: 1,
preloadDelay: 2000
};
Memory Issues on Long Chapters
Symptoms: Browser tab crashes or freezes during large chapter downloads
Solutions:
- Close other tabs to free memory
- Enable streaming mode (if available in script version)
- Use desktop browser instead of mobile
- Download chapters in smaller batches
window.__LUMINA_CONFIG__ = {
streamingMode: true,
maxCacheSize: 50
};
Incorrect File Names
Symptoms: Archives saved with generic names like "download.zip"
Solutions:
- Verify metadata extraction working (check console logs)
- Use custom naming pattern
- Manually rename after download
window.__LUMINA_CONFIG__ = {
naming: 'custom',
customPattern: 'Chapter_{chapter}.cbz'
};
Advanced Usage
Batch Processing Multiple Chapters
While the script is designed for single-chapter use, you can automate batch downloads:
const chapterLinks = document.querySelectorAll('.chapter-link');
const downloadDelay = 5000;
chapterLinks.forEach((link, index) => {
setTimeout(() => {
window.location.href = link.href;
}, index * downloadDelay);
});
Integrating with Download Managers
Configure browser to auto-save to specific folder:
- Set browser download behavior to "Ask where to save" = OFF
- Set default download location:
~/Manga/{series_name}/
- Use custom naming pattern with series name:
window.__LUMINA_CONFIG__ = {
customPattern: '{series}/{series}_Ch{chapter}.cbz'
};
Monitoring Download Progress
Access progress programmatically (if script exposes API):
if (window.LuminaCBZ) {
window.LuminaCBZ.onProgress((current, total) => {
console.log(`Downloaded ${current}/${total} pages`);
});
window.LuminaCBZ.onComplete((filename) => {
console.log(`Archive saved: ${filename}`);
});
}
Privacy & Security
- All processing is client-side: No data sent to external servers
- No telemetry: Script does not track usage or send analytics
- Cookie inheritance: Uses existing browser session (must be logged in)
- No credential access: Does not read passwords or authentication tokens
- Temporary storage: Blob URLs garbage-collected after download
Environment Variables
The script runs entirely in-browser and does not use traditional environment variables. Configuration is done via JavaScript objects as shown above.
Browser Compatibility
| Browser | Version | Status |
|---|
| Chrome | 90+ | ✅ Fully supported |
| Firefox | 110+ | ✅ Fully supported |
| Edge | 90+ | ✅ Fully supported |
| Safari | 16+ | ⚠️ Requires Userscripts extension |
| Opera | 84+ | ✅ Fully supported |
| Brave | 1.45+ | ✅ Fully supported |
Mobile browsers: Limited support (use Kiwi Browser or Firefox Nightly on Android)
Common Use Cases
Archiving Before Series Removal
window.__LUMINA_CONFIG__ = {
format: 'cbz',
parallelism: 3,
customPattern: '{series}_Ch{chapter}_[ARCHIVE].cbz'
};
Reading on E-Readers
window.__LUMINA_CONFIG__ = {
format: 'cbz',
naming: 'seriesFirst'
};
Offline Backup
window.__LUMINA_CONFIG__ = {
format: 'cbz',
customPattern: '{year}-{series}_v{volume}_ch{chapter}.cbz'
};