Quick small vibe-coded tool to help with large avatar drops, just make sure each GLB is rigged to the UE5 Epic Skeleton specifications.
- MML Documentation
- M-Character Reference
- MML Editor
- Awesome MML (curated list)
- Avatar Tools (open-source)
- Avatar Tools (online tool)
- Further MML avatar creation resources
- Blender workflow docs
- Video tutorial
- Requirements: Node 18+
- Install dependencies:
npm i
Run the CLI
- .txt (one URL/line):
node scripts/mml-batch.js --in examples/input-urls.txt --out out - .csv (comma-separated):
node scripts/mml-batch.js --in examples/input-urls.csv --out out - Inline list:
node scripts/mml-batch.js --urls "https://a.glb,https://b.glb" --out out - Options:
--start 1to change numbering start,--dry-runto preview
Run the Web Tool (local)
npm run start:web- Open http://localhost:3000
- Paste URLs (comma or newline separated) and download a ZIP of 1.mml, 2.mml, ...
To avoid CORS issues, host MML files on the same domain/bucket as the GLBs whenever possible.
Google Cloud Storage works well:
- Upload GLBs and MML files to the same bucket.
- Enable public access as needed, and add a CORS policy in accordance with your own security requirements. Other hosts: AWS S3 + CloudFront, Cloudflare R2, static hosts (Netlify/Vercel) for MML files.
For each provided GLB URL, a minimal MML file:
<m-character src="https://example.com/path/to/avatar.glb"></m-character>Public domain under The Unlicense. See LICENSE.