6919ebfe9c
Anade enricher web_search aplicable a nodos text/Concept/Topic. Hace POST a html.duckduckgo.com con la query del nodo, parsea resultados con HTMLParser stdlib, decodifica el redirect uddg= y crea N nodos Url con relacion SEARCH_RESULT_OF apuntando al nodo origen. Encadenable: tras web_search, fetch_webpage sobre cada Url completa el pipeline search -> fetch -> extract. Defensa contra ops_db_path mal resuelto: normaliza backslashes, resuelve relativo contra app_dir, valida que la tabla entities exista antes de tocar nada (exit codes 7/8/9 con JSON resumen). Tests pytest (16/16 verde): conftest con operations.db temp + schema minimo, stub de requests via PYTHONPATH para mockear red. Cubre los 5 enrichers (extract_domain, fetch_webpage, extract_links, extract_text_entities, web_search) + sanity check de manifests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
12 lines
603 B
YAML
12 lines
603 B
YAML
id: web_search
|
|
name: "Web search (DuckDuckGo)"
|
|
description: "Busca el nombre del nodo en DuckDuckGo (HTML) y crea N nodos Url con los resultados, conectados al origen con relacion SEARCH_RESULT_OF. Pensado para nodos text/Concept/Topic — el siguiente paso es correr fetch_webpage sobre cada Url resultante."
|
|
applies_to: [text, Text, Concept, Topic, Query]
|
|
emits: [Url]
|
|
relations: [SEARCH_RESULT_OF]
|
|
params:
|
|
- { name: limit, type: int, default: 10 }
|
|
- { name: region, type: string, default: "" }
|
|
- { name: safe, type: string, default: "moderate" }
|
|
- { name: timeout_s, type: int, default: 15 }
|