One-click 3D model imports from MakerWorld straight into your self-hosted Manyfold library.
Browse a model on MakerWorld, click the toolbar icon, and the design — files, cover image, description, tags, license, and creator — is uploaded to your own Manyfold instance over its REST API. No downloading to disk, no re-uploading by hand, no leaving the page. Inspired by companion extensions like NZB Donkey and Torrent Control.
- One-click import — scrapes the model page and sends everything to Manyfold from the toolbar popup.
- Full metadata — title, description, tags, SPDX-normalized license, creator, and cover image carry over.
- Multi-profile support — import a single profile, all profiles, or just those by the original designer.
- Collection mode — group a multi-profile design into its own Manyfold sub-collection, or flatten it into one model.
- Default collection — automatically file imports into a collection of your choice.
- Duplicate detection — best-effort title check so you don't import the same model twice.
- Uses your sessions — downloads files with your existing MakerWorld login; nothing is proxied through a third party.
Currently supports MakerWorld. The scraper architecture is built to add Printables, Thingiverse, and Cults3D as drop-in modules.
- Firefox 128+ (Manifest V3 / ESR baseline).
- A reachable, self-hosted Manyfold instance (API v0).
Not yet on addons.mozilla.org. Install as a temporary or unsigned add-on for now.
- Clone this repo.
- Open
about:debugging#/runtime/this-firefoxin Firefox. - Click Load Temporary Add-on… and select
manifest.jsonfrom the repo.
The extension stays loaded until you restart Firefox.
After installing, open the extension's Settings (the options page) and configure:
- Instance URL — the base URL of your Manyfold instance, e.g.
https://manyfold.example.com. - OAuth Client ID / Secret — in Manyfold, go to Settings → OAuth Applications and create an
application. Set the redirect URI to
https://localhostand grant theread writescopes. Paste the generated client ID and secret here. - Default Collection ID (optional) — the numeric ID from a collection's URL
(
/collections/42) to file imports into automatically. Leave blank to skip. - Click Test Connection to confirm Manyfold accepts the credentials.
You can also tune import behavior (which profiles to select by default, single-model vs. collection mode) on the same page.
- Open any MakerWorld model page (
makerworld.com/.../models/...). - The toolbar icon shows a green badge once the page has been scraped.
- Click the icon to open the popup and preview the model.
- Pick which profiles/files to include, then click Send to Manyfold.
- Watch the progress; Manyfold processes the import asynchronously and the popup links you to your models list when it's queued.
A content script reads the model data from the page, fetches presigned file URLs
using your MakerWorld session, and hands off to a background service worker. The
worker authenticates to Manyfold via OAuth client-credentials, streams each file
(and the cover image) using the TUS resumable-upload protocol,
then links them in a single POST /models request.
MakerWorld page ──scrape──▶ background worker ──OAuth + TUS upload──▶ Manyfold
For a deeper dive into the architecture, message contract, and the MakerWorld / Manyfold API specifics, see AGENTS.md.
npm install
npm test # run the Vitest suite once
npm run test:watchTo iterate: make changes, then Reload the extension from
about:debugging → This Firefox, and watch for [Manyfold] log lines in the
page console (scraper) or the background Inspect console (worker).
Issues and PRs welcome — especially new site scrapers. Adding a source is mostly
writing one content script that emits the normalized ModelData shape; the steps
are documented in AGENTS.md.
