Stable Diffusion Prompt Extractor: A1111, ComfyUI, NovelAI avatar

Stable Diffusion Prompt Extractor: A1111, ComfyUI, NovelAI

Pricing

$1.50 / 1,000 image with metadata

Go to Apify Store
Stable Diffusion Prompt Extractor: A1111, ComfyUI, NovelAI

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

HexaX

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

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.

ToolWhere the metadata livesSupported
AUTOMATIC1111 / Forge / SD.NextPNG text chunk parameters, or EXIF UserComment in JPEG/WebP✅
ComfyUIPNG text chunks prompt (API graph) and workflow✅ (prompt, sampler settings, checkpoint, LoRA loaders, latent size)
NovelAIPNG Software + Comment JSON✅
InvokeAIPNG 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
}
FieldDefaultNotes
imageUrls(required)Direct image links, up to 5,000 per run. Duplicates are removed.
includeRawMetadatafalseAdds raw_metadata with the original text chunks (ComfyUI workflows can be large).
skipImagesWithoutMetadatafalseLeave out rows for images without metadata. Errors are always reported.
maxImageSizeMb30Bigger files are skipped. 1–100.
maxConcurrency4Parallel 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; error says why.

Pricing (pay per event)

EventPriceWhen
image-with-metadata$0.0015 ($1.50 per 1,000)Each image whose generation metadata was found
Actor startApify defaultOnce 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.txt and skips URLs it disallows. If robots.txt cannot 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/negative inputs back to text encoders, including primitive nodes and conditioning combiners. Exotic custom nodes may leave some fields null; use includeRawMetadata to 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/activate
pip install -r requirements.txt
python -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/default
echo '{"imageUrls": ["https://example.com/a.png"]}' > storage/key_value_stores/default/INPUT.json
python -m src # results in storage/datasets/default/
ACTOR_TEST_PAY_PER_EVENT=true python -m src # also simulate pay-per-event charging locally