SPB Git forge

spb/trouve-ka

Public ★ Pinned

Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com

40commits 1branches 0releases
9.2 MBsize
maindefault branch
23 days agolast push
Python 51.9% TypeScript 32.7% JavaScript 4.8% CSS 4.1% Shell 2.9% HTML 1.8% SQL 1.5%
3.4 KB · 82 lines python
Raw Blame History
1# Trouve-KA — exclusions de crawl2# Author: Simon-Pierre Boucher3# Contact: contact@spboucher.ai45"""Domaines jamais crawlés : plateformes globales (réseaux sociaux, app stores,6CDN, moteurs) qui polluent le frontier sans jamais produire de contenu québécois7indexable — la plupart exigent JS/login et leurs pages sont vides en fetch HTTP.89Le budget de crawl est précieux (§12) : chaque slot dépensé sur apps.apple.com10est un slot volé à un vrai site québécois.11"""1213# Comparaison sur le domaine enregistrable ET ses sous-domaines.14EXCLUDED_DOMAINS: frozenset[str] = frozenset({15    # Réseaux sociaux16    "facebook.com", "fb.com", "instagram.com", "twitter.com", "x.com",17    "linkedin.com", "pinterest.com", "pinterest.ca", "tiktok.com",18    "snapchat.com", "reddit.com", "threads.net", "bsky.app", "mastodon.social",19    # Vidéo / streaming20    "youtube.com", "youtu.be", "vimeo.com", "dailymotion.com",21    "twitch.tv", "spotify.com", "soundcloud.com",22    # App stores / OS23    "apps.apple.com", "itunes.apple.com", "apple.com",24    "play.google.com", "microsoft.com", "chrome.google.com",25    # Moteurs / géants génériques26    "google.com", "google.ca", "bing.com", "yahoo.com", "duckduckgo.com",27    "amazon.com", "amazon.ca", "ebay.com", "ebay.ca", "aliexpress.com",28    "wikimedia.org", "wikidata.org", "archive.org",  # wikipedia.org reste crawlable (contenu QC réel)29    # Infra / outils30    "d2cmedia.ca",  # CDN d'images de concessionnaires — des milliers d'URLs, zéro texte31    "cloudflare.com", "wordpress.com", "wordpress.org", "blogspot.com",32    "wix.com", "squarespace.com", "shopify.com", "godaddy.com",33    "goo.gl", "bit.ly", "t.co", "ow.ly", "tinyurl.com",34    "gravatar.com", "addthis.com", "sharethis.com",35    "doubleclick.net", "googletagmanager.com", "google-analytics.com",36    # Cartes / avis génériques37    "maps.google.com", "waze.com", "tripadvisor.com", "tripadvisor.ca",38    "yelp.com", "yelp.ca", "booking.com", "airbnb.com", "airbnb.ca",39    "eventbrite.com", "eventbrite.ca", "meetup.com",40})414243def is_excluded_domain(domain: str) -> bool:44    """True si le domaine (ou un de ses parents) est dans la liste d'exclusion."""45    d = domain.lower().rstrip(".")46    while d:47        if d in EXCLUDED_DOMAINS:48            return True49        _, _, d = d.partition(".")50    return False515253# ---------------------------------------------------------------------------54# Pivot 2026-08-23 — Trouve·Ka devient le moteur de recherche du GROUPE KA.55# Le périmètre de crawl est une ALLOWLIST stricte : seuls les sites de56# l'écosystème KA sont découverts, crawlés et indexés.57#58# Exclus volontairement : api-ka.com (API pure, rien d'indexable),59# forma-ka.com (aucune couche SEO/sitemap à ce jour),60# administration-ka.com (console privée).61KA_DOMAINS: frozenset[str] = frozenset({62    "groupe-ka.com", "trouve-ka.com",63    "lou-ka.com", "immo-ka.com", "vrai-prix.com", "toit-ka.com", "valoplex.com",64    "auto-ka.com", "fabri-ka.com", "food-ka.com", "resto-ka.com",65    "sorti-ka.com", "crea-ka.com", "job-ka.com",66})676869def is_ka_domain(domain: str) -> bool:70    """Le domaine (ou l'un de ses parents) appartient-il au Groupe KA ?"""71    d = domain.lower().rstrip(".")72    while d:73        if d in KA_DOMAINS:74            return True75        _, _, d = d.partition(".")76    return False777879def is_in_scope(domain: str) -> bool:80    """Périmètre de crawl du moteur : domaines du Groupe KA uniquement."""81    return is_ka_domain(domain)82