runbook: evaluation Scrappling vs Firecrawl/Camoufox existant, installation differee

This commit is contained in:
2026-08-14 15:27:57 +00:00
parent 63fc32ae69
commit 403b3e8292
@@ -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`