Stable Diffusion Prompt Extractor: A1111, ComfyUI, NovelAI
Pricing
$1.50 / 1,000 image with metadata
Stable Diffusion Prompt Extractor: A1111, ComfyUI, NovelAI
Read the prompt, negative prompt, seed, sampler, model and LoRAs embedded in AI images from AUTOMATIC1111, Forge, ComfyUI, NovelAI and InvokeAI. Give image URLs, get structured JSON.
Pricing
$1.50 / 1,000 image with metadata
Rating
0.0
(0)
Developer
HexaX
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
The Stable Diffusion prompt extractor for image URLs: get the prompt, negative prompt, seed, sampler, steps, CFG, model and LoRAs out of AI-generated images. Give it a list of image URLs; it downloads each file and reads the generation metadata that the tools wrote into it. Output is structured JSON, so it works for one image or a whole gallery, from the Console or through the API.
What you get
- Positive and negative prompt, seed, sampler, scheduler, steps, CFG, size, model, model hash and LoRAs, one row per image.
- The generating tool (
a1111,comfyui,novelai,invokeai). - Optional raw metadata for ComfyUI workflows and anything the parser does not map.
Use cases
- Gallery analysis: collect the prompts and settings behind a set of public images.
- Dataset captioning: turn embedded prompts into captions for training data you own.
- Prompt statistics: count models, samplers, LoRAs and frequent prompt words across many images.
- Metadata audit: find which of your files still carry (or have lost) generation data.
Quick start
Keep the example image URLs (small public test files with embedded metadata) and press Start, then replace them with your own.
| Tool | Where the metadata lives | Supported |
|---|---|---|
| AUTOMATIC1111 / Forge / SD.Next | PNG text chunk parameters, or EXIF UserComment in JPEG/WebP | ✅ |
| ComfyUI | PNG text chunks prompt (API graph) and workflow | ✅ (prompt, sampler settings, checkpoint, LoRA loaders, latent size) |
| NovelAI | PNG Software + Comment JSON | ✅ |
| InvokeAI | PNG invokeai_metadata JSON | ✅ |
Many sites strip metadata when they re-encode uploads. Those images come back as no_metadata, and you are not charged for them.
Input
{"imageUrls": ["https://raw.githubusercontent.com/d3x-at/sd-parsers/master/tests/resources/parsers/AUTOMATIC1111/automatic1111_cropped.png","https://raw.githubusercontent.com/d3x-at/sd-parsers/master/tests/resources/parsers/NovelAI/novelai1_cropped.png","https://raw.githubusercontent.com/d3x-at/sd-parsers/master/tests/resources/parsers/InvokeAI/invokeai_imeta1.png","https://raw.githubusercontent.com/comfyanonymous/ComfyUI_examples/master/2_pass_txt2img/hiresfix_latent_workflow.png"],"includeRawMetadata": false,"skipImagesWithoutMetadata": false,"maxImageSizeMb": 30,"maxConcurrency": 4}
| Field | Default | Notes |
|---|---|---|
imageUrls | (required) | Direct image links, up to 5,000 per run. Duplicates are removed. |
includeRawMetadata | false | Adds raw_metadata with the original text chunks (ComfyUI workflows can be large). |
skipImagesWithoutMetadata | false | Leave out rows for images without metadata. Errors are always reported. |
maxImageSizeMb | 30 | Bigger files are skipped. 1–100. |
maxConcurrency | 4 | Parallel downloads, 1–10. Lower it if a site rate-limits you. |
Output
One dataset row per URL:
{"url": "https://raw.githubusercontent.com/d3x-at/sd-parsers/master/tests/resources/parsers/AUTOMATIC1111/automatic1111_cropped.png","status": "ok","error": null,"image_format": "PNG","generator": "a1111","positive_prompt": "masterpiece, 1girl, <lora:animeStyle:0.8>, smile","negative_prompt": "lowres, bad hands","steps": 28,"sampler": "DPM++ 2M","scheduler": "Karras","cfg_scale": 6.5,"seed": 1234567890,"width": 832,"height": 1216,"model": "exampleModel_v10","model_hash": "abc123","denoise": 0.35,"loras": [{"name": "animeStyle", "weight": 0.8}]}
status is one of:
ok: metadata was found.no_metadata: the image was read but carries no generation data.error: the download or decoding failed;errorsays why.
Pricing (pay per event)
| Event | Price | When |
|---|---|---|
image-with-metadata | $0.0015 ($1.50 per 1,000) | Each image whose generation metadata was found |
| Actor start | Apify default | Once per run |
Images without metadata and failed downloads are free. If you set a maximum charge for the run, the Actor stops once it is reached and says so in the status message.
Limits and responsible use
- robots.txt is respected. Before downloading, the Actor reads each site's
robots.txtand skips URLs it disallows. Ifrobots.txtcannot be fetched because of a server error, the whole site is skipped. Only download images you have the right to access, and follow each site's terms of service. - No personal data. Only the generation-metadata keys listed above are read. Camera EXIF, GPS coordinates, author/owner fields and any other chunks are never returned.
- Local and private network addresses (
localhost,10.x,192.168.x,169.254.x…) are refused. - Failed downloads are retried up to 3 times with backoff (timeouts, HTTP 408/425/429/5xx).
- ComfyUI graphs vary a lot. The Actor follows the sampler's
positive/negativeinputs back to text encoders, including primitive nodes and conditioning combiners. Exotic custom nodes may leave some fieldsnull; useincludeRawMetadatato get the full graph.
FAQ
Why do I get no_metadata? Many sites (social networks, some galleries) strip metadata when they re-encode uploads. Use the original file. no_metadata rows are free.
Can it read JPEG and WebP? Yes, when the tool stored the settings in EXIF UserComment (AUTOMATIC1111 style). PNG text chunks are read for all four tools.
Does it call any generation service? No. It only downloads the files you point it to and reads the generation keys listed above.
Run locally
python -m venv .venv && . .venv/bin/activatepip install -r requirements.txtpython -m unittest discover -s tests -t . # unit tests, no network# Local run with the Apify CLI (`apify run`), or without it:mkdir -p storage/key_value_stores/defaultecho '{"imageUrls": ["https://example.com/a.png"]}' > storage/key_value_stores/default/INPUT.jsonpython -m src # results in storage/datasets/default/ACTOR_TEST_PAY_PER_EVENT=true python -m src # also simulate pay-per-event charging locally
Related actors
- AI Crawler Checker & GEO / AEO Audit: check a site for AI search readiness (llms.txt, AI bots, JSON-LD).
- Video Frame Extractor: frames, scene changes and thumbnails from video file URLs.
- Japanese to Romaji, Hiragana & Furigana Converter: readings for Japanese text.
- Japan Diet Parliament Debates & Speeches Search: speeches from Japan's National Diet since 1947.