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¶
- 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 - Pour chaque leçon :
- Leçon texte :
fetch("/slug/ID")retourne le contenu dans<sjwc-lesson-content-item> - Leçon vidéo accessible en HTML direct :
fetchretourne un bloc<sjwc-video video-id="X" token="Y">. Appeler ensuitehttps://cdn.jwplayer.com/v2/media/X?token=Ypour obtenir duration, title, tracks SRT - Leçon vidéo classique JW Player : la page n'expose le
video-idqu'après init JS. Il fautnavigate + evaluate('jwplayer().getPlaylist()...')via Playwright pour récupérer les metadata - 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) - Générer le
.mdavec 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écutivesclaude-with-the-anthropic-api(85 leçons) — idemclaude-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
navigateconsécutifs sur des leçons différentes, Skilljar déconnecte (redirection vers/accounts/login). Nécessite reconnexion manuelle via Chrome Windows. - Visiter
/checkout/XXXpour un cours non-inscrit redirige versaccounts.skilljar.com/loginqui 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)