Aller au contenu

Scripts de collecte Skilljar

Outils utilisés pour récupérer les contenus des cours Anthropic Academy (Skilljar) et générer les .md enrichis du parcours 1.

Structure

Fichier Rôle
_skilljar_mapping.json Mapping maître : pour chaque cours, la liste des leçons (id Skilljar + titre)
_collected_*.json Données brutes collectées (HTML des articles texte, metadata JW Player)
_generate_*.py Scripts de conversion : HTML → markdown, SRT → paragraphes, assemblage .md

Flux de collecte

  1. Récupérer la liste des leçons d'un cours : fetch("/slug-du-cours") depuis une session Skilljar authentifiée (via Playwright MCP connecté à Chrome Windows), regex sur <li ... data-url="/slug/ID"> ou <a href="/slug/ID"> dans le HTML
  2. Pour chaque leçon :
  3. Leçon texte : fetch("/slug/ID") retourne le contenu dans <sjwc-lesson-content-item>
  4. Leçon vidéo accessible en HTML direct : fetch retourne un bloc <sjwc-video video-id="X" token="Y">. Appeler ensuite https://cdn.jwplayer.com/v2/media/X?token=Y pour obtenir duration, title, tracks SRT
  5. Leçon vidéo classique JW Player : la page n'expose le video-id qu'après init JS. Il faut navigate + evaluate('jwplayer().getPlaylist()...') via Playwright pour récupérer les metadata
  6. Télécharger les SRT officiels (depuis cdn.jwplayer.com/tracks/XXX.srt, suivre redirect 301) et parser en paragraphes (pause ≥ 0.4s ou >800 chars sur fin de phrase)
  7. Générer le .md avec cadre FR + contenu EN

Cours traités

Cours Technique Leçons
introduction-to-mcp navigate (JW classique) 13
subagents fetch direct (texte) 4
claude-code-101 fetch direct (texte) 13
agent-skills fetch direct (texte) 6
mcp-advanced-topics mix navigate + texte 15
claude-code-in-action mix navigate + texte 21

Cours non traités

  • claude-in-amazon-bedrock (83 leçons) — 81 navigations nécessaires, session Skilljar sautait après 3-4 nav consécutives
  • claude-with-the-anthropic-api (85 leçons) — idem
  • claude-with-google-vertex (93 leçons) — idem

Ces 3 cours sont redondants à 80% : mêmes titres, mêmes concepts (Tool Use, Prompt Engineering, RAG, MCP, Agents). Ne diffèrent que par le provider cloud (AWS vs API directe vs GCP).

Limitations rencontrées

  • Session Skilljar fragile : après ~3-4 navigate consécutifs sur des leçons différentes, Skilljar déconnecte (redirection vers /accounts/login). Nécessite reconnexion manuelle via Chrome Windows.
  • Visiter /checkout/XXX pour un cours non-inscrit redirige vers accounts.skilljar.com/login qui invalide aussi la session courante.
  • Contenu vidéo JW Player non exposé en HTML statique pour ~80% des leçons : metadata chargées en JS après init player, d'où la nécessité de Playwright navigate + evaluate.

Reprise future

Pour collecter un cours restant : 1. Se connecter à Skilljar dans Chrome Windows 2. S'inscrire au cours via "Enroll in Course" sur la landing du cours 3. Lancer Playwright MCP et tester l'accès à une leçon 4. Adapter un des scripts _generate_*.py existants avec le mapping du cours 5. Itérer navigate+evaluate leçon par leçon (avec patience et reconnexions si la session saute)