Magnific Stock Search
Licensed stock photos, pulled straight into your graph
- folder
- image
- info
What this is, honestly
Nothing here runs on your GPU. This node searches Magnific's stock library and hands you one result as a plain IMAGE, so a photo you did not generate can sit in the same graph as your LoRA stack, your ControlNet and your upscaler. It works because it is talking to your Magnific account over their MCP endpoint (https://mcp.magnific.com) - the same edge Magnific's own editor plugins use. No account, no images.
That framing matters more than the filter list. The KB's chapter on API-wrapper nodes applies in full: you are trading a per-item licence and a per-call cost for convenience, and your query leaves the machine.
How it works
You type a query, it pages the catalog (20 hits at a time), and it keeps only the results that can come back as a bitmap. Vectors, PSDs and "designs" are rendered to JPG on download; icons and video have no image surface at all and are skipped entirely. Then it downloads the one you asked for and loads it as a batch.
The index math is worth understanding, because it explains a surprise: the index counts image-capable hits, not raw results. The code walks pages accumulating usable items until it has more than your target index, so result_index = 3 means "the fourth thing I could actually use", even if page one was half video.
The inputs you'll actually touch
- query - the search string. Empty raises a hard error.
- content_type (
any,photo,vector,illustration,psd,design), license (any,free,premium), orientation, ai_generated (any/only/excluded). These are the catalog's own filters;anygenuinely means unfiltered and is the default for most of them. - selection -
indextakesresult_index;randompicks uniformly betweenrange_fromandrange_to(both inclusive, 0β9 by default, i.e. the first ten hits). - seed - drives that random pick. Randomize it and each run is a different stock photo; pin it and you can reproduce the one you liked. That is the author's own tooltip, and it is the right way to use it.
The optional folder input is a Magnific project/folder from a Magnific Save To node. Leave it unconnected and the item lands in your Personal project anyway - connecting it means the download is also filed where you keep the rest of your Magnific work.
Outputs
image is the picture. info is a numbered listing of everything the query matched, with a > marker on the line you got, plus a note when the range only had a few usable results - handy when you want to change result_index and re-run instead of re-searching.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Code2Collapse/ComfyUI-CustomNodePacks.git
Or ComfyUI Manager β search "CustomNodePacks". Restart and confirm the console line:
[C2C] CustomNodePacks: 142 nodes loaded (...) - 0 failed
The Magnific half of this pack is a port of Magnific's own ComfyUI plugin (the vendor declares it UNLICENSED), so do not also install comfyui-magnific - both register the same fifteen node IDs and ComfyUI keeps whichever loads last, which makes for confusing "my dropdown is empty" reports.
You also need to sign in: ComfyUI menu β Magnific β Sign in. It is a device-code flow, so you approve in a browser and the token lands in ~/.magnific/comfyui_auth.json. Your password never touches ComfyUI.
For the rest of the pack, resist pip install -r requirements.txt done blind - ComfyUI ships its own torch and numpy, and overwriting them is a bad afternoon:
pip list | grep -i "opencv\|scipy\|safetensors"
pip install opencv-python>=4.7.0 scipy>=1.10.0 safetensors>=0.4.0
Where people get burned
- Not signed in and the node errors with the sign-in message. Fix it in the menu, then press R in ComfyUI to refresh node definitions before retrying.
- "No usable stock image results" - the filters are too tight, or
content_typeisanyand the query is full of video and icons. Setcontent_typetophotoand search again. - Index out of range. It clamps to the last usable result and says so in
info, so you get a picture rather than an exception - but it may not be the one you wanted. - Credits. Downloads and project saves go through your metered Magnific account. Random-picking across 200 prompts is an easy way to find out what your plan costs.
- Licence.
license = freeis the filter you want for anything public. "It came from a stock library" is not a licence - check the item.
One last thing about provenance: this pack comes from u/kyahinaamrakhe-1, a working compositor who announced it on r/comfyui in May 2026 at 72 nodes - it has since doubled. The Magnific half is its newest and most vendor-dependent corner.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| query | STRING | β | |
| content_type | COMBO | photo | 6 options: any, photo, vector, illustration, psd, design |
| license | COMBO | any | 3 options: any, free, premium |
| orientation | COMBO | any | 5 options: any, portrait, landscape, square, panoramic |
| ai_generated | COMBO | any | 3 options: any, only, excluded |
| selection | COMBO | index | index = take result_index; random = pick between range_from and range_to. |
| result_index | INT | 00β999 | Used when selection = index. |
| range_from | INT | 00β999 | Random range start (0 = first result). |
| range_to | INT | 90β999 | Random range end, inclusive β first 10 results by default. |
| seed | INT | 00β4294967295 | Drives the random pick: randomize for a different item per run, fix it to reproduce one. |
| folderopt | MAGNIFIC_FOLDER | Optional: also save the stock item to this Magnific project/folder. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| info | STRING | β |