Eric Gen-Searcher (Grounded Research)
It googles your prompt so your image model doesn't have to guess
- grounded_prompt
- reference_images
- search_log
- ref_image_1
- ref_image_2
- ref_image_3
- ref_image_4
The name undersells it. Eric Gen-Searcher doesn't search the web for you - you give it a subject, it quietly runs a handful of real web and image searches, and comes back with a finished generation prompt plus up to four downloaded reference images. It's the "grounded research" idea, packaged as a ComfyUI node that drops into any generation workflow.
Reach for it the moment the model's parametric memory isn't good enough. A diffusion model will confidently invent what a real person's tennis outfit looks like, or the inside of an F1 cockpit. Gen-Searcher will go look.
How it works
This is the first node in the Eric Visual Research pack by EricRollei (Eric Hiss). You type into it, and it forwards your prompt to a Gen-Searcher-8B model served by SGLang at http://localhost:30000. Gen-Searcher-8B is a fine-tuned Qwen3-VL-8B - it comes from a real research line (CUHK/UC Berkeley/UCLA paper) that reported roughly 16 points of improvement on the KnowGen benchmark when paired with Qwen-Image.
The node runs an agent loop, up to max_hops iterations (8 by default, 6–10 typical). The model gets three tools:
search- web search via Serperimage_search- image search via Serper's image endpointbrowse- full-page reads via Jina Reader
When it decides it has enough, it writes a single 150–300 word paragraph. The node even watches for the model slipping into "From my analysis…" bullet-point mode and quietly re-prompts for a clean paragraph. Downloaded references are resized to 768px on the long side, aspect preserved - the individual ref_image_1..4 outputs stay native aspect, while the reference_images batch is letterboxed to a common size.
The inputs that matter
base_prompt(required) - the creative direction: mood, lighting, style, camera angle. This is what the final prompt must fulfill.search_query- the specific subject to research, kept visual and focused ("Zendaya Challengers tennis outfit"). Split these two fields and the agent searches the query but writes the prompt. Leave it blank and it falls back to single-field behavior, searchingbase_promptdirectly.max_hops- how many search rounds. 8 is a sane ceiling.ref_image_count- 1–4 reference images to download.enable_browse- page reading on/off; off is faster.fallback_on_error- if the server is unreachable, returns your original prompt instead of failing. Quiet, know it's there.
Leave use_instagram and use_facebook off unless you mean it - the tooltips warn to enable them only with a dedicated dummy account, because those sites will burn a real login.
Outputs: grounded_prompt (STRING → any prompt input on Flux, SDXL, Qwen-Image…), reference_images (batch IMAGE), ref_image_1..4 (individual IMAGEs), and search_log (STRING) if you want to see what the agent actually did.
Installing
Via ComfyUI Manager (search "Visual Research" or the author EricRollei), or:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Visual_Research
One trap: the README's own clone command says Eric_Visual_Research - that path 404s. The real repo is Visual_Research. Restart ComfyUI and the nodes appear under Eric/VisualResearch.
Then the part that isn't a node install. The pack's requirements.txt is nearly empty (just Pillow and torch) because all the heavy lifting is external:
- SGLang server running Gen-Searcher-8B - a ~17 GB model download, needs ~20 GB+ VRAM, and SGLang means Linux/WSL2 on Windows. The README's
docs/SERVER_SETUP.mdwalks the whole thing: CUDA toolkit,pip install sglang[all],hf download GenSearcher/Gen-Searcher-8B, thensglang serveon port 30000 with--tool-call-parser qwen25. - A Serper API key (
https://serper.dev, 2,500 free queries/month) - without it the agent can't search at all. Copyapi_keys.ini.exampletoapi_keys.ini, or setSERPER_API_KEY. - Optional: a Jina key and
gallery-dlfor social-site downloads.
Common issues
- "Cannot connect to Gen-Searcher server" - SGLang isn't running, or the URL is wrong. On Windows/WSL,
localhostresolves differently; the README suggestshttp://127.0.0.1:30000or the WSL IP. - Searches not firing - your serve command is missing
--tool-call-parser qwen25. The node has a fallback parser for inline<tool_call>tags, but the server-side one is more reliable. deep_gemmor FlashInfer errors at startup -export SGLANG_DISABLE_DEEP_GEMM=1, and add--attention-backend tritonfor Blackwell GPUs on CUDA 12.8.- Every run hits the web, burns Serper quota, and takes real time - the node re-executes each queue (no caching), so budget your free tier.
The rig requirement is the filter - you need a 20 GB+ VRAM GPU to host the agent on top of whatever you generate with. But if you're sick of models hallucinating specifics, this is one of the few honest fixes, and the first ComfyUI wrapper around Gen-Searcher I've seen.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| base_prompt | STRING | The creative/compositional direction for the final image. Describe mood, lighting, style, camera angle, narrative. Examples: 'dramatic low-angle portrait, golden hour, shallow depth of field' 'fashion editorial, studio lighting, minimalist background' If search_query is blank, this is also used as the search prompt (original single-field behaviour). | |
| agent_api_url | STRING | http://localhost:30000 | URL of the running SGLang server. See docs/SERVER_SETUP.md for setup instructions. |
| search_queryopt | STRING | Specific subject/terms to search for visually (recommended). Keep this focused and visual - it drives the web and image searches. Examples: 'Zendaya Challengers movie tennis outfit' 'Stephen Miller politician appearance' 'Ferrari SF-23 F1 car cockpit interior' 'Art Deco architecture New York Chrysler building' Leave blank to use base_prompt for searches (original behaviour). | |
| model_nameopt | STRING | Model name override. Leave blank to auto-detect. | |
| max_hopsopt | INT | 81–20 | Maximum search iterations. 6-10 is typical. |
| ref_image_countopt | INT | 41–4 | Number of reference images to download (1-4). |
| enable_browseopt | BOOLEAN | true | Allow reading full web pages via Jina. Disable for faster runs. |
| fallback_on_erroropt | BOOLEAN | true | Return original prompt if server unreachable, rather than failing. |
| use_instagramopt | BOOLEAN | false | Allow gallery-dl to download from Instagram. WARNING: Use only with a dedicated dummy account. |
| use_facebookopt | BOOLEAN | false | Allow gallery-dl to download from Facebook. WARNING: Use only with a dedicated dummy account. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| grounded_prompt | STRING | — |
| reference_images | IMAGE | — |
| search_log | STRING | — |
| ref_image_1 | IMAGE | — |
| ref_image_2 | IMAGE | — |
| ref_image_3 | IMAGE | — |
| ref_image_4 | IMAGE | — |