Generate SEO title, description, keyword stack, social copy, alt text, structured data, and embedded metadata files from one workflow.
NOMETA is a client-side AI metadata studio for creators, stock contributors, and SEO teams.
Instead of manually writing image metadata field-by-field, NOMETA generates a complete package with:
- marketplace-aware metadata strategy
- editable structured outputs
- export-ready formats for delivery workflows
- π·οΈ SEO title
- π Meta description
- π Keyword list (exact target count support)
- ποΈ Category suggestion
- π£ Social caption and hashtags
- βΏ Alt text
- π§© JSON-LD structured data
- π AI technical stats
- π§ Advanced strategy object with scoring and ordering plan
- π¨ Local technical analysis: dimensions, quality heuristics, color palette, SEO head snippet
NOMETA currently supports three active providers in the UI:
- Google Gemini
- Groq
- OpenRouter
Built-in model presets include:
- Gemini 3.1/3 Flash preview series
- Gemini 2.5 Pro / Flash / Flash-Lite
- Groq Llama 4 Scout vision
- OpenRouter presets: GPT-4o, Claude 3.7 Sonnet, Gemini 2.0 Flash, Llama 3.2 Vision
Note:
- A
grokmodule exists in source for legacy compatibility, but the active provider registry usesgemini,groq, andopenrouter.
NOMETA ships with strategy packs for:
- General
- Adobe Stock
- Shutterstock
- iStock
- Getty Images
- Pond5
- Vecteezy
- Freepik
- Creative Fabrica
Default constraint presets per marketplace:
| Marketplace | Title | Description | Keywords |
|---|---|---|---|
| General | 100 | 200 | 40 |
| Adobe Stock | 70 | 150 | 45 |
| Shutterstock | 120 | 200 | 50 |
| iStock | 60 | 250 | 40 |
| Getty Images | 60 | 250 | 40 |
| Pond5 | 100 | 300 | 50 |
| Vecteezy | 80 | 200 | 40 |
| Freepik | 80 | 200 | 50 |
| Creative Fabrica | 80 | 200 | 40 |
- Choose provider + model + API key.
- Select marketplace strategy mode.
- Tune generation controls (temperature, speed, constraints, tone, target keywords, custom prompt).
- Upload one or many images.
- Generate metadata.
- Review/edit tabs (SEO, strategy, social, technical).
- Export JSON, CSV, or embedded files.
- Queue-based multi-file processing
- Status lifecycle:
pending,processing,done,error - Retry failed batch items only
- Batch CSV export
- Temperature control (
0.0to1.0) - Speed modes (
1x,2x,3x,4x) with token/delay tuning - Advanced constraints:
- title length
- description length
- exact keyword count
- Target keyword chip input with forced inclusion support
- Persistent custom prompt manager
- Strategy summary and buyer persona hints
- Keyword clusters and top keyword scoring
- Title score breakdown (CTR/SEO/clarity/uniqueness)
- Keyword ordering plan per marketplace intent
- Compliance notes and checks
- JPEG: APP1 XMP embed
- PNG:
iTXtXMP embed - SVG:
<metadata>block injection - Unsupported image types are converted to PNG for compatibility during embed export
- Batch embedded export as ZIP with optional notes/failure report files
- Image properties (size, dimensions, ratio, transparency)
- Heuristic quality metrics (sharpness, exposure, contrast, saturation)
- Color palette extraction
- Ready-to-copy SEO
<head>snippet with JSON-LD
src/index.html
-> src/js/app.js (orchestrator)
-> providers/ (Gemini, Groq, OpenRouter)
-> metadata-engine + marketplace strategies
-> controls (temperature, speed, constraints, prompt)
-> technical analyzer
-> export/metadata embedder
-> history manager + UI utilities
Build pipeline:
- βοΈ
tailwindcsscompilessrc/css/tailwind.generated.css - π¦
esbuildbundlessrc/js/app.js - π§Ύ output assets are content-hashed
- π§Ή
html-minifier-terserminifiesdist/index.html - π‘οΈ optional obfuscation via
javascript-obfuscator
- Frontend: HTML, Tailwind CSS, custom CSS, vanilla JavaScript (ES modules)
- Build: esbuild, tailwindcss, html-minifier-terser
- Optional hardening: javascript-obfuscator
- Packaging: JSZip
- Desktop wrapper: Electron + electron-builder (Windows NSIS x64)
.
|-- src/
| |-- index.html
| |-- css/
| |-- js/
| | |-- app.js
| | |-- metadata-engine.js
| | |-- providers/
| | |-- gemini/
| | |-- groq/
| | |-- OpenRouter/
| | |-- MicroStock-Market/
| | |-- speed-control/
| | |-- technical/
| | |-- export/
| | |-- custom-prompt/
| | |-- ui/
| | `-- utils/
| |-- tag-input/
| `-- Icon/
|-- scripts/
|-- electron/
|-- dist/
|-- vercel.json
|-- netlify.toml
|-- _headers
`-- README.md
- Node.js 18+
- npm
npm installnpm run devDefault URL:
http://localhost:4173
npm run buildnpm run verify
npm run verify:distRun-NOMETA-Localhost.bat
| Script | Purpose |
|---|---|
npm run dev |
Watch src, rebuild dist, serve local host with live reload |
npm run dev:host |
Build once and host dist |
npm run build:tailwind |
Rebuild Tailwind output CSS |
npm run build |
Production build to dist |
npm run build:secure |
Alias of build |
npm run build:obfuscate |
Build with JS obfuscation |
npm run verify |
Parser/provider/engine smoke checks |
npm run verify:dist |
Build + dist synchronization checks |
npm run electron:start |
Build then launch Electron app |
npm run dist:win |
Build Windows NSIS installer package |
Inside the app:
- Select provider
- Paste API key
- Pick model
- Save configuration
Provider key portals:
- Gemini: https://aistudio.google.com/apikey
- Groq: https://console.groq.com/keys
- OpenRouter: https://openrouter.ai/keys
Static-host ready with first-party configs included:
vercel.jsonnetlify.toml_headers
Security headers include CSP, frame restrictions, referrer policy, and permissions policy.
Important runtime note:
- This is a client-side app, so provider calls happen from the browser.
- API keys are stored client-side (local storage via safe storage utility)
- If browser local storage is unavailable, app falls back to in-memory storage
- History keeps up to 5 recent items, with safeguards for storage size limits
- For strict secret protection, use your own backend proxy
- If output JSON fails to parse, providers include auto-repair retry logic for malformed responses
- If model does not support vision (especially on OpenRouter), choose a vision-capable model preset
- If embedded export fails for unusual formats, the app falls back to conversion-based compatibility paths
- Fork the repository
- Create a branch
- Make your changes
- Push your branch
- Open a pull request
A LICENSE file is not currently present in this repository.
Add one to define official open-source usage terms.
Built for creators who want faster workflows and stronger metadata quality.