| 159 |
159 |
}, |
| 160 |
160 |
]; |
| 161 |
161 |
|
|
162 |
+type Bot = { |
|
163 |
+ digit: string; |
|
164 |
+ accent: string; |
|
165 |
+ inkbox: string; |
|
166 |
+ domain: string; |
|
167 |
+ url: string; |
|
168 |
+ tagline: string; |
|
169 |
+ description: string; |
|
170 |
+ chips: string[]; |
|
171 |
+ features: string[]; |
|
172 |
+}; |
|
173 |
+ |
|
174 |
+const BOTS: Bot[] = [ |
|
175 |
+ { |
|
176 |
+ digit: "2", |
|
177 |
+ accent: "#d9f26b", |
|
178 |
+ inkbox: "#141814", |
|
179 |
+ domain: "www.ka2.bot", |
|
180 |
+ url: "https://www.ka2.bot", |
|
181 |
+ tagline: "Le web québécois, cartographié entité par entité.", |
|
182 |
+ description: |
|
183 |
+ "Ka2 est un bot IA de cartographie : il parcourt le web québécois, identifie les entités — entreprises, organisations, personnes, sites web — et les documente. Propulsé par Claude Haiku 4.5 avec Firecrawl et Scrapfly, il ne copie pas les pages : il les comprend, puis les classe.", |
|
184 |
+ chips: ["4 types d'entités", "Propulsé par IA", "robots.txt respecté"], |
|
185 |
+ features: [ |
|
186 |
+ "Découverte et classement : entreprises, organisations, personnes, sites web", |
|
187 |
+ "Chaque page lue est comprise par un modèle d'IA, pas seulement copiée", |
|
188 |
+ "Budget quotidien et délais entre requêtes — un crawl qui ménage les sites", |
|
189 |
+ "Données publiques seulement, Loi 25 et LPRPDE comme plancher", |
|
190 |
+ ], |
|
191 |
+ }, |
|
192 |
+ { |
|
193 |
+ digit: "4", |
|
194 |
+ accent: "#ff9f45", |
|
195 |
+ inkbox: "#141814", |
|
196 |
+ domain: "www.ka4.bot", |
|
197 |
+ url: "https://www.ka4.bot", |
|
198 |
+ tagline: "Le deuxième éclaireur, avec l'activité à découvert.", |
|
199 |
+ description: |
|
200 |
+ "Ka4 double la flotte de découverte : même moteur IA — Claude Haiku 4.5 avec Firecrawl et Scrapfly —, mais une classification élargie à cinq types d'entités et un tableau de bord où l'exploration se regarde en direct. Deux bots, deux fronts, une seule carte du web québécois.", |
|
201 |
+ chips: ["5 types d'entités", "Activité en direct", "robots.txt respecté"], |
|
202 |
+ features: [ |
|
203 |
+ "Classification élargie : entreprises, organisations, personnes, sites web, données", |
|
204 |
+ "Tableau de bord public : l'activité du bot et ses découvertes, en direct", |
|
205 |
+ "Bascule automatique entre backends de lecture (Firecrawl → Scrapfly)", |
|
206 |
+ "Données publiques seulement, Loi 25 et LPRPDE comme plancher", |
|
207 |
+ ], |
|
208 |
+ }, |
|
209 |
+]; |
|
210 |
+ |
| 162 |
211 |
const MANIFESTO = [ |
| 163 |
212 |
{ |
| 164 |
213 |
num: "01", |
| 515 |
564 |
</div> |
| 516 |
565 |
</Section> |
| 517 |
566 |
|
| 518 |
|
− {/* ---------- Ka2 — l'agent de découverte ---------- */} |
|
567 |
+ {/* ---------- Ka2 & Ka4 — les agents de découverte ---------- */} |
| 519 |
568 |
<Section |
| 520 |
|
− id="ka2" |
| 521 |
|
− kicker="L'éclaireur du groupe · découverte web" |
|
569 |
+ id="bots" |
|
570 |
+ kicker="Les éclaireurs du groupe · découverte web" |
| 522 |
571 |
title={ |
| 523 |
572 |
<> |
| 524 |
|
− Avant d'agréger, <span className="hl">Ka2 découvre</span> |
|
573 |
+ Avant d'agréger, <span className="hl">les bots découvrent</span> |
| 525 |
574 |
</> |
| 526 |
575 |
} |
| 527 |
576 |
> |
| 528 |
577 |
<p className="mt-3 max-w-xl text-[14.5px] text-ink-2"> |
| 529 |
578 |
Les connecteurs ·Ka lisent des sources connues. Mais qui trouve les |
| 530 |
|
− sources ? Ka2, l'agent de découverte web du groupe : un bot IA |
| 531 |
|
− qui explore et cartographie le web québécois, entité par entité, pour |
| 532 |
|
− alimenter tout l'écosystème. |
|
579 |
+ sources ? Ka2 et Ka4, les agents de découverte web du groupe : des |
|
580 |
+ bots IA qui explorent et cartographient le web québécois, entité par |
|
581 |
+ entité, pour alimenter tout l'écosystème. |
| 533 |
582 |
</p> |
| 534 |
|
− <div className="mt-7 grid items-stretch gap-6 lg:grid-cols-[minmax(0,1.15fr)_minmax(0,1fr)]"> |
| 535 |
|
− <article className="gk-card gk-card-hover p-5 sm:p-7"> |
| 536 |
|
− <div className="flex flex-wrap items-baseline justify-between gap-3"> |
| 537 |
|
− <span className="gk-mono text-[12px] font-bold text-green"> |
| 538 |
|
− BOT |
| 539 |
|
− </span> |
| 540 |
|
− <span className="klabel">www.ka2.bot</span> |
| 541 |
|
− </div> |
| 542 |
|
− <h3 className="gk-display mt-4 inline-flex items-baseline gap-[5px] text-[32px] font-bold tracking-[-0.04em] sm:text-[38px]"> |
| 543 |
|
− Ka |
| 544 |
|
− <span |
| 545 |
|
− className="inline-block -rotate-2 rounded-md px-[8px] pb-[3px]" |
| 546 |
|
− style={{ background: "#141814", color: "#d9f26b" }} |
|
583 |
+ <div className="mt-7 grid gap-5 lg:grid-cols-2"> |
|
584 |
+ {BOTS.map((b) => ( |
|
585 |
+ <article key={b.domain} className="gk-card gk-card-hover p-5 sm:p-7"> |
|
586 |
+ <div className="flex flex-wrap items-baseline justify-between gap-3"> |
|
587 |
+ <span className="gk-mono text-[12px] font-bold text-green"> |
|
588 |
+ BOT |
|
589 |
+ </span> |
|
590 |
+ <span className="klabel">{b.domain}</span> |
|
591 |
+ </div> |
|
592 |
+ <h3 className="gk-display mt-4 inline-flex items-baseline gap-[5px] text-[32px] font-bold tracking-[-0.04em] sm:text-[38px]"> |
|
593 |
+ Ka |
|
594 |
+ <span |
|
595 |
+ className="inline-block -rotate-2 rounded-md px-[8px] pb-[3px]" |
|
596 |
+ style={{ background: b.inkbox, color: b.accent }} |
|
597 |
+ > |
|
598 |
+ {b.digit} |
|
599 |
+ </span> |
|
600 |
+ </h3> |
|
601 |
+ <p className="gk-display mt-3 text-[17px] font-bold uppercase tracking-[-0.01em]"> |
|
602 |
+ {b.tagline} |
|
603 |
+ </p> |
|
604 |
+ <p className="mt-3 text-[13.5px] leading-relaxed text-ink-2"> |
|
605 |
+ {b.description} |
|
606 |
+ </p> |
|
607 |
+ <div className="mt-5 flex flex-wrap gap-2"> |
|
608 |
+ {b.chips.map((chip) => ( |
|
609 |
+ <span key={chip} className="stat-chip !text-[11px]"> |
|
610 |
+ {chip} |
|
611 |
+ </span> |
|
612 |
+ ))} |
|
613 |
+ </div> |
|
614 |
+ <ul className="mt-5 space-y-2 border-t-[1.5px] border-dashed border-[rgba(20,24,20,0.25)] pt-5"> |
|
615 |
+ {b.features.map((f) => ( |
|
616 |
+ <li key={f} className="flex gap-3 text-[13.5px] text-ink-2"> |
|
617 |
+ <span |
|
618 |
+ aria-hidden="true" |
|
619 |
+ className="mt-[7px] h-[5px] w-[5px] flex-none rotate-45 border border-ink bg-lime" |
|
620 |
+ /> |
|
621 |
+ {f} |
|
622 |
+ </li> |
|
623 |
+ ))} |
|
624 |
+ </ul> |
|
625 |
+ <a |
|
626 |
+ href={b.url} |
|
627 |
+ target="_blank" |
|
628 |
+ rel="noopener noreferrer" |
|
629 |
+ className="btn btn-primary mt-6 w-full sm:w-auto" |
| 547 |
630 |
> |
| 548 |
|
− 2 |
| 549 |
|
− </span> |
| 550 |
|
− </h3> |
| 551 |
|
− <p className="gk-display mt-3 text-[17px] font-bold uppercase tracking-[-0.01em]"> |
| 552 |
|
− Le web québécois, cartographié entité par entité. |
| 553 |
|
− </p> |
| 554 |
|
− <p className="mt-3 text-[13.5px] leading-relaxed text-ink-2"> |
| 555 |
|
− Ka2 est un bot IA de cartographie : il parcourt le web québécois, |
| 556 |
|
− identifie les entités — entreprises, organisations, personnes, |
| 557 |
|
− sites web — et les documente. Propulsé par Claude Haiku 4.5 avec |
| 558 |
|
− Firecrawl et Scrapfly, il ne copie pas les pages : il les |
| 559 |
|
− comprend, puis les classe. |
| 560 |
|
− </p> |
| 561 |
|
− <div className="mt-5 flex flex-wrap gap-2"> |
| 562 |
|
− <span className="stat-chip !text-[11px]">4 types d'entités</span> |
| 563 |
|
− <span className="stat-chip !text-[11px]">Propulsé par IA</span> |
| 564 |
|
− <span className="stat-chip !text-[11px]">robots.txt respecté</span> |
| 565 |
|
− </div> |
| 566 |
|
− <ul className="mt-5 space-y-2 border-t-[1.5px] border-dashed border-[rgba(20,24,20,0.25)] pt-5"> |
| 567 |
|
− {[ |
| 568 |
|
− "Découverte et classement : entreprises, organisations, personnes, sites web", |
| 569 |
|
− "Chaque page lue est comprise par un modèle d'IA, pas seulement copiée", |
| 570 |
|
− "Budget quotidien et délais entre requêtes — un crawl qui ménage les sites", |
| 571 |
|
− "Données publiques seulement, Loi 25 et LPRPDE comme plancher", |
| 572 |
|
− ].map((f) => ( |
| 573 |
|
− <li key={f} className="flex gap-3 text-[13.5px] text-ink-2"> |
| 574 |
|
− <span |
| 575 |
|
− aria-hidden="true" |
| 576 |
|
− className="mt-[7px] h-[5px] w-[5px] flex-none rotate-45 border border-ink bg-lime" |
| 577 |
|
− /> |
| 578 |
|
− {f} |
| 579 |
|
− </li> |
| 580 |
|
− ))} |
| 581 |
|
− </ul> |
| 582 |
|
− <a |
| 583 |
|
− href="https://www.ka2.bot" |
| 584 |
|
− target="_blank" |
| 585 |
|
− rel="noopener noreferrer" |
| 586 |
|
− className="btn btn-primary mt-6 w-full sm:w-auto" |
| 587 |
|
− > |
| 588 |
|
− Visiter www.ka2.bot ↗ |
| 589 |
|
− </a> |
| 590 |
|
− </article> |
| 591 |
|
− <div className="gk-card !bg-ink p-6 text-paper sm:p-7"> |
| 592 |
|
− <p className="kicker !text-lime">Le rôle de Ka2 dans l'écosystème</p> |
| 593 |
|
− <p className="gk-display mt-4 text-[clamp(24px,3.2vw,34px)] leading-[1.05] font-bold tracking-[-0.03em] uppercase"> |
| 594 |
|
− Ka2 découvre |
|
631 |
+ Visiter {b.domain} ↗ |
|
632 |
+ </a> |
|
633 |
+ </article> |
|
634 |
+ ))} |
|
635 |
+ </div> |
|
636 |
+ <div className="gk-card mt-6 !bg-ink p-6 text-paper sm:p-7"> |
|
637 |
+ <p className="kicker !text-lime"> |
|
638 |
+ Le rôle des bots dans l'écosystème |
|
639 |
+ </p> |
|
640 |
+ <div className="mt-4 grid items-start gap-6 lg:grid-cols-2"> |
|
641 |
+ <p className="gk-display text-[clamp(24px,3.2vw,34px)] leading-[1.05] font-bold tracking-[-0.03em] uppercase"> |
|
642 |
+ Les bots découvrent |
| 595 |
643 |
<br /> |
| 596 |
644 |
<span className="text-lime">→ ·Ka agrège</span> |
| 597 |
645 |
<br />→ vous trouvez |
| 598 |
646 |
</p> |
| 599 |
|
− <p className="mt-4 max-w-md text-[13.5px] text-[rgba(245,243,238,0.75)]"> |
| 600 |
|
− Ka2 est l'éclaireur du groupe : il cartographie le terrain |
| 601 |
|
− avant que les connecteurs ne s'y branchent. Une nouvelle |
| 602 |
|
− boutique québécoise, un nouveau gestionnaire immobilier, un |
| 603 |
|
− concessionnaire qui ouvre — Ka2 les repère, et les plateformes |
| 604 |
|
− ·Ka les intègrent. |
| 605 |
|
− </p> |
| 606 |
|
− <ul className="mt-5 space-y-2 border-t border-[rgba(245,243,238,0.15)] pt-5 text-[13px] text-[rgba(245,243,238,0.75)]"> |
| 607 |
|
− {[ |
| 608 |
|
− "Respecte systématiquement robots.txt", |
| 609 |
|
− "Ne traite que des données publiques", |
| 610 |
|
− "Zéro boîte noire — le fonctionnement est documenté sur ka2.bot", |
| 611 |
|
− ].map((f) => ( |
| 612 |
|
− <li key={f} className="flex gap-3"> |
| 613 |
|
− <span |
| 614 |
|
− aria-hidden="true" |
| 615 |
|
− className="mt-[6px] h-[5px] w-[5px] flex-none rotate-45 bg-lime" |
| 616 |
|
− /> |
| 617 |
|
− {f} |
| 618 |
|
− </li> |
| 619 |
|
− ))} |
| 620 |
|
− </ul> |
|
647 |
+ <div> |
|
648 |
+ <p className="max-w-md text-[13.5px] text-[rgba(245,243,238,0.75)]"> |
|
649 |
+ Ka2 et Ka4 sont les éclaireurs du groupe : ils cartographient |
|
650 |
+ le terrain avant que les connecteurs ne s'y branchent. Une |
|
651 |
+ nouvelle boutique québécoise, un nouveau gestionnaire |
|
652 |
+ immobilier, un concessionnaire qui ouvre — les bots les |
|
653 |
+ repèrent, et les plateformes ·Ka les intègrent. |
|
654 |
+ </p> |
|
655 |
+ <ul className="mt-5 space-y-2 border-t border-[rgba(245,243,238,0.15)] pt-5 text-[13px] text-[rgba(245,243,238,0.75)]"> |
|
656 |
+ {[ |
|
657 |
+ "Respectent systématiquement robots.txt", |
|
658 |
+ "Ne traitent que des données publiques", |
|
659 |
+ "Zéro boîte noire — leur fonctionnement est documenté sur ka2.bot et ka4.bot", |
|
660 |
+ ].map((f) => ( |
|
661 |
+ <li key={f} className="flex gap-3"> |
|
662 |
+ <span |
|
663 |
+ aria-hidden="true" |
|
664 |
+ className="mt-[6px] h-[5px] w-[5px] flex-none rotate-45 bg-lime" |
|
665 |
+ /> |
|
666 |
+ {f} |
|
667 |
+ </li> |
|
668 |
+ ))} |
|
669 |
+ </ul> |
|
670 |
+ </div> |
| 621 |
671 |
</div> |
| 622 |
672 |
</div> |
| 623 |
673 |
</Section> |
| 624 |
674 |
|