From 403b3e8292e5f9eab0e7a20719c4248719ff39c5 Mon Sep 17 00:00:00 2001 From: bolbol Date: Fri, 14 Aug 2026 15:27:57 +0000 Subject: [PATCH] runbook: evaluation Scrappling vs Firecrawl/Camoufox existant, installation differee --- ...luation-vs-firecrawl-camofox-14-08-2026.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 hermes-nyora/scrappling-evaluation-vs-firecrawl-camofox-14-08-2026.md diff --git a/hermes-nyora/scrappling-evaluation-vs-firecrawl-camofox-14-08-2026.md b/hermes-nyora/scrappling-evaluation-vs-firecrawl-camofox-14-08-2026.md new file mode 100644 index 0000000..4bc3952 --- /dev/null +++ b/hermes-nyora/scrappling-evaluation-vs-firecrawl-camofox-14-08-2026.md @@ -0,0 +1,67 @@ +# Scrappling — évaluation vs stack existant (Firecrawl/Camoufox/SearXNG), installation différée + +**Instance auteur** : hermes-nyora +**Date** : 2026-08-14 +**Tags** : nyora, scraping, firecrawl, camofox, veille, prospection +**Statut** : en-cours (installation différée, décision Nabil) + +--- + +## Contexte + +Recherche déclenchée par un résumé vidéo sur Scrappling (lib Python de scraping local, gratuite, sélecteurs CSS pour réduire les tokens vs fetch de page entière). Objectif initial : évaluer 3 cas d'usage — veille Dr Nexum, prospection Zouheir (Belgique), recherche design nyora-doc-api. + +## Constat — le stack existant couvre déjà l'essentiel + +Vérification avant tout déploiement (cf. `common/ecriture-naturelle-firecrawl-4-instances.md`, `common/veille-nexum-sources-reddit-403-nas-ip.md`) : + +- **Firecrawl** déjà déployé sur les 4 instances (hermes-tt/nyora/perso/nabil), `FIRECRAWL_API_KEY` partagée (1000 crédits/mois, un seul compte), script `firecrawl_scrape.py` en `data/scripts/`, usage "dernier recours" pour préserver le quota. +- **SearXNG** (`SEARXNG_URL`) disponible comme meta-recherche gratuite. +- `web_extract_tool` (hermes-agent-source) multi-backend (Exa/Firecrawl/Parallel/Tavily/ddgs) + résumé LLM Gemini 3 Flash pour réduire les tokens. +- `browser_camofox.py` : navigateur furtif anti-bot déjà intégré — plus robuste que le Stealthy Fetcher de Scrappling. + +Donc Scrappling ferait doublon sur : veille générale, contournement anti-bot, recherche web. + +## Réalité veille Dr Nexum (corrige une hypothèse initiale fausse en session) + +Le job "veille-ia-nexum" n'est pas un simple scraper — pipeline en évolution : +- n8n `Eh2nomLhSuL3iUMp` (44 sources RSS/YouTube/GitHub + 5 sources Reddit ajoutées) trouvé **inactif** le 31/07 malgré la doc précédente ("tourne 3x/j"). +- Reddit bloqué en HTTP 403 **au niveau IP** (pas user-agent, pas domaine) — Scrappling ni Camoufox n'auraient résolu ça (même IP NAS). Options identifiées : app Reddit officielle (bloquée à la création côté Nabil, cause non diagnostiquée) ou endpoint payant Scrape Creators (~$1.88/1000). +- Pivot vers `veille_ia_matin.py` (17 chaînes YouTube + 13 flux RSS, TOP_N 20) comme mécanisme actif ; coût déjà flagué comme lourd (mimo × 2-3 recherches/article × 3/j, proche du plafond OpenCode Go 10$/mois). + +## Ce qui NE fonctionne PAS + +| Tentative | Erreur obtenue | Raison de l'échec | +|-----------|----------------|-------------------| +| Hypothèse initiale "aucun backend payant configuré" (grep `.env.disabled` + `config/*.yaml` racine hermes-nyora) | Faux négatif | `FIRECRAWL_API_KEY` injectée via `docker-compose.yml` (bloc `environment:`), pas dans les fichiers grepés | +| Fetch Reddit JSON anonyme depuis IP NAS (UA générique puis UA Chrome, `www.reddit.com` puis `old.reddit.com`) | HTTP 403 systématique | Blocage réseau au niveau IP publique du NAS, pas contournable par un fetcher différent (Scrappling/Camoufox partiraient de la même IP) | + +## Où Scrappling garde une valeur réelle + +Pas en remplacement — en **pré-filtre gratuit avant Firecrawl**, pour l'extraction structurée répétée où un LLM/Firecrawl est un gâchis de tokens/crédits : +1. **Prospection Zouheir** (annuaires belges → CSV structuré nom/tél/adresse) : sélecteur CSS fixe, zéro consommation du quota Firecrawl partagé (1000 crédits/mois pour 4 instances). +2. **Recherche design nyora-doc-api** (couleurs hex/polices/CTA en valeurs brutes, pas en prose résumée) : idem, un LLM ne doit pas être dans cette boucle. + +## Solution proposée (si installation reprise — non déployée à ce jour) + +Module Python léger dans `hermes-agent-source/tools/`, à côté de `web_tools.py`/`browser_camofox.py`. Fetcher Scrappling en premier essai ; échec/blocage → fallback vers `firecrawl_scrape.py` existant (dernier recours déjà en place, pas de nouveau mécanisme anti-bot à maintenir). Validation de forme post-extraction (champs non vides/types attendus) ; échec = log + alerte, jamais de push silencieux vers Baserow. + +## Décision + +Installation différée. Priorité si repris : prospection Zouheir (lien direct avec l'activité commerciale Nyora) avant design nyora-doc-api. + +## Sauvegarde effectuée (14/08/2026, précaution avant toute installation future) + +`hermes-agent-source-backup-20260814-1444.tgz` (138M, exclusions `.venv`/`node_modules`/`__pycache__`/`.git`, même convention que le round du 23/07) dans `/mnt/docker/hermes-platform/`. + +## Pièges spécifiques mcp-nas + +- `hermes-nyora/data/` (0700, `1026:users`) illisible depuis session mcp-nas malgré `uid=0` (`root` du container ≠ accès réel) — permission denied. Sauvegarde de `data/` (et donc de `data/scripts/firecrawl_scrape.py`) à faire via SSH Best0f ou `docker exec` direct, hors de portée de ce canal. +- `docker` absent du container mcp-nas (`command not found`) — pas de `docker exec` possible depuis cette session. +- `git` absent également — confirme `common/git-push-depuis-mcp-nas.md` ; ce runbook a été poussé via l'API HTTP Gitea (`172.17.0.1:3232`, token `GITEA_TOKEN_NYORA`) suivant la méthode déjà documentée. + +## Références + +- `common/ecriture-naturelle-firecrawl-4-instances.md` +- `common/veille-nexum-sources-reddit-403-nas-ip.md` +- `common/git-push-depuis-mcp-nas.md`