Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

notebooklm-py - L'API Python que Google refuse de sortir

Par : Korben
16 mars 2026 à 09:46

Google n'a jamais sorti d'API publique pour NotebookLM , son outil qui transforme vos documents en podcasts, quiz et autres résumés grâce à l'IA. Pas de SDK, pas de CLI, y'a rien du tout alors on est tous triiiiiste. A peine juste une interface web avec ses boutons moches et ses menus déroulants, mais impossible à scripter ou à intégrer dans le moindre pipeline bash.

Mais un dev bien inspiré a reverse-engineeré les endpoints REST internes et a pondu notebooklm-py, une lib Python de 168 Ko qui fait tout ce que le web UI refuse de faire. Franchement, c'était pas trop tôt ! Vous en avez rêvé, lui l'a fait !

Un pip install notebooklm-py et voilà, vous avez accès à toute la machinerie Notebook LM à savoir : créer des notebooks, injecter des sources (URLs, PDF, vidéos YouTube, fichiers Google Drive, documents Word, images PNG), poser des questions à vos docs, et surtout générer du contenu... podcasts audio en MP3, vidéos explicatives en MP4, quiz, flashcards, slides en PPTX, infographies en PNG, mind maps en JSON.

Carrément dingue ! Et tout ça pilotable depuis votre terminal zsh ou en script Python async.

En fait, le vrai bonus c'est que la lib déverrouille des fonctionnalités que l'interface web ne propose même pas comme télécharger tous vos podcasts d'un coup en batch au lieu de cliquer un par un sur chaque fichier MP3, exporter vos 50 flashcards en JSON structuré au lieu de juste les afficher à l'écran ou encore récupérer vos slides en PPTX éditable plutôt que le PDF figé.

Ce genre de features, on avait fini par accepter que Google s'en fiche mais pourtant, extraire l'arbre complet d'une mind map en JSON pour la balancer dans D3.js ou Mermaid... clairement c'est un truc que Google aurait dû proposer depuis le début !

Côté CLI, c'est propre. Vous vous authentifiez une fois via notebooklm login (ça ouvre Chromium via Playwright pour choper les cookies de session Google), puis vous enchaînez les commandes.

notebooklm create "Ma Recherche" pour créer un notebook vide,

notebooklm source add ./mon-rapport.pdf pour balancer vos fichiers,

notebooklm generate audio "rends ça punchy" --wait pour lancer la génération de podcast,

et notebooklm download audio ./podcast.mp3 pour récupérer le MP3 sur votre disque.

On peut même éditer ses slides individuellement avec des prompts en langage naturel, du genre "ajoute un graphique sur cette slide-là" !

Pour ceux qui veulent brancher ça dans leurs pipelines, y'a comme je le disais l'API Python async complète. Vous pouvez donc monter un petit cron qui ingère vos derniers bookmarks le vendredi soir, et génèrer un résumé audio de 5 minutes, puis balancer le MP3 directement sur votre NAS Synology.

D'ailleurs, si vous avez déjà joué avec des outils pour booster votre productivité avec l'IA , c'est un peu dans la même veine... sauf qu'ici on tape directement dans les tripes des serveurs Google, sans intermédiaire. Ça tourne avec du Python, et y'a même un mode "agent" (un skill en fait) pour brancher ça dans Claude Code ou Codex. Pas mal, hein ?

Le fait que ça gère aussi la recherche web et Drive avec import automatique des résultats dans vos notebooks, c'est top, un peu comme Oboe qui génère des cours complets via IA , mais en version terminal. Et surtout, pas d'abonnement mensuel à payer, c'est votre propre compte Google qui fait tourner la machine.

Bien sûr, ça reste du reverse-engineering d'APIs non-documentées de Google, ce qui fait que les endpoints REST peuvent changer du jour au lendemain et tout péter. Le projet le dit clairement, c'est plutôt taillé pour du prototypage, de la recherche ou des projets perso et SURTOUT PAS pour de la prod sur un serveur Nginx en front avec 10 000 utilisateurs prêts à ruer dans les brancards en cas de panne.

Et puis faut quand même s'authentifier via un vrai compte Google avec Playwright et Chromium, donc pas question de faire tourner ça sur un serveur headless sans un minimum de config.

Bref, tant que Google ne coupe pas ses endpoints, c'est open bar.

Profitez-en !

Barista - Pilotez votre machine à café De'Longhi en HTTP

Par : Korben
16 mars 2026 à 07:13

Vous avez une machine à café De'Longhi avec du Bluetooth et vous vous êtes déjà forcément dit "Mais pourquoi je dois me lever si tôt pour appuyer sur un putain de bouton comme un homme des cavernes" ?!

Hé bien bonne nouvelle mes petits accro aux café puisqu'un dev a passé ses soirées à sniffer les paquets BLE de sa Dinamica Plus, à reverse-engineerer le protocole de communication, et il en a fait un projet open source qui transforme votre cafetière en serveur HTTP. Du coup maintenant, un petit curl http://pi:8080/api/brew/espresso depuis le lit et hop, le café coule. En live depuis votre oreiller, vos petits yeux à moitié fermés en moins de 3 secondes.

Aaaaah, le bonheur !

Le projet s'appelle Barista et c'est en fait un bridge BLE-to-HTTP écrit en Python. Vous collez ça sur un Raspberry Pi Zero à 15 euros (ou n'importe quel ordi avec une puce Bluetooth) à côté de votre machine à café, ça se connecte en Bluetooth Low Energy, et ça expose une API REST complète. Ça permet ainsi de contrôler la préparation (espresso, cappuccino, latte, americano...), d'ajuster la force de l'arôme sur 5 niveaux, la température, la quantité en ml, et même d'activer la buse vapeur ou l'eau chaude à distance. Attention par contre, faut pas oublier de mettre une tasse sous le bec avant de lancer la commande depuis votre lit...

Côté technique, c'est du Python async avec la bibliothèque bleak pour la partie radio BLE et aiohttp pour le serveur HTTP local. En fait, le truc intéressant c'est que tout le protocole ECAM est documenté dans le repo... structure des paquets, calcul du CRC-16/CCITT, encodage des ingrédients, lecture et écriture des recettes. Donc si vous avez un autre modèle De'Longhi (Primadonna, Magnifica Evo, Eletta Explore), c'est théoriquement compatible vu que De'Longhi utilise le même protocole BLE sur sa gamme ECAM... mais seule la Dinamica Plus est testée et confirmée pour l'instant.

Le problème, vous l'aurez compris, c'est que De'Longhi ne documente pas son protocole BLE (va savoir pourquoi), donc y'a pas forcément de garantie que ça marchera du premier coup sur votre modèle.

Côté prérequis, il vous faut Python 3.11+ et BlueZ sur votre Raspberry Pi 4 ou 5 (le Bluetooth quoi). Après, l'installation tient en trois commandes : pip install barista-coffee, puis barista scan pour trouver votre machine, et enfin barista start --address AA:BB:CC:DD pour lancer le serveur.

Et là vous aurez une interface web sur le port 8080, avec une grille de boutons, un bouton par boisson... mais surtout une API REST qui permet d'intégrer ça avec à peu près n'importe quoi : Home Assistant , Node-RED, un cron job matinal, un raccourci Siri, un script Python... Perso, l'idée du réveil qui déclenche automatiquement un espresso, c'est quand même pas mal !

Évidemment, tout tourne en local ! Comme ça plutôt que de dépendre de l'app officielle De'Longhi (qui marche uniquement à 2 mètres de la machine ^^ donc autant appuyer sur le bouton à ce stade), là c'est du vrai contrôle réseau.

D'ailleurs si le sujet vous branche, on avait déjà listé une tonne de projets Raspberry Pi dont une machine à café pilotable à distance.

Voilà, si vous avez une De'Longhi avec Bluetooth qui traîne dans la cuisine et un Raspberry Pi qui prend la poussière, vous savez ce qu'il vous reste à faire.

Amusez-vous bien et moi j'vais aller me faire un café du coup !

Google lance Gemini Embedding 2, un modèle qui comprend texte, image, vidéo et audio en même temps

Par : Korben
13 mars 2026 à 15:56

Google vient de lancer Gemini Embedding 2, son premier modèle d'embedding nativement multimodal. Texte, images, vidéo, audio et documents sont projetés dans un même espace vectoriel, ce qui permet de faire de la recherche sémantique croisée entre différents types de contenus.

Un seul modèle pour tout indexer

Jusqu'à présent, les modèles d'embedding se limitaient au texte. Vous vouliez indexer des images ou de la vidéo, il fallait un autre pipeline. Gemini Embedding 2 fait tout d'un coup : vous lui envoyez du texte, des images (jusqu'à 6), de la vidéo (jusqu'à 120 secondes) ou de l'audio (jusqu'à 80 secondes), et il vous renvoie un vecteur dans le même espace. Le modèle gère plus de 100 langues et prend en charge jusqu'à 8 192 tokens en entrée pour le texte.

Côté technique, le modèle utilise le Matryoshka Representation Learning, ce qui permet de choisir la taille des embeddings entre 128 et 3 072 dimensions. Google recommande 768 dimensions pour un bon compromis entre qualité et stockage, ce qui divise par quatre l'espace disque par rapport à la taille maximale.

Les tarifs et la concurrence

Le texte est facturé 0,20 dollar par million de tokens, avec un mode batch à moitié prix. Les images montent à 0,45 dollar, l'audio à 6,50 dollars et la vidéo à 12 dollars par million de tokens. Un palier gratuit est disponible pour tester.

Côté performances, Google affiche de bons scores sur les benchmarks MTEB : 69,9 en multilingue et 84,0 en code. Mais pour du texte seul, OpenAI reste bien moins cher avec son text-embedding-3-small à 0,02 dollar par million de tokens, soit dix fois moins.

Le modèle est disponible via l'API Gemini et Vertex AI, et compatible avec LangChain, LlamaIndex, Weaviate ou ChromaDB.

Le vrai argument de Google ici, c'est le multimodal. Si vous avez besoin d'indexer des catalogues produits avec photos et descriptions dans le même vecteur, ou de faire de la recherche dans des archives vidéo, il n'y a pas d'équivalent chez OpenAI pour le moment.

Mais pour du texte pur, la différence de prix est quand même importante. On attend de voir comment ça se comporte en production, et si les scores MTEB se confirment sur des cas d'usage réels.

Source : Blog Google

Cloudflare /crawl - Aspirez un site entier en un seul appel API

Par : Korben
11 mars 2026 à 14:47

Crawler un site entier, ça devrait pas être aussi compliqué. Et pourtant, entre les scripts maison qui cassent tous les 2 jours et les headless browsers qui bouffent de la RAM comme pas permis, c'est assez la galère ! Du coup, Cloudflare, dans sa grande bonté (lol) vient de sortir un endpoint /crawl (en open beta) dans la section Browser Rendering qui simplifie tout ça... vous balancez une URL dessus et hop, ça ASPIRE tout le site (oui oui).

En gros, vous envoyez une requête POST avec l'URL de départ, et le service se charge de découvrir les pages (via le sitemap, les liens internes, ou les deux), de les générer dans un navigateur headless, et de vous renvoyer le contenu en HTML, Markdown ou même en JSON structuré grâce à Workers AI. Le tout de manière asynchron ! Vous, vous récupérez juste un job ID et vous revenez plus tard chercher les résultats quand c'est prêt.

Créer votre token API

Avant toute chose, il vous faut un token API Cloudflare avec la permission "Browser Rendering - Edit". Rendez-vous dans votre dashboard Cloudflare, section API Tokens, et créez-en un nouveau. Notez aussi votre Account ID (visible dans l'URL du dashboard ou dans la section Overview de n'importe quel domaine).

Lancer un crawl

Là, ensuite c'est hyper simple. Un seul appel curl suffit :

curl -X POST "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl" \
 -H "Authorization: Bearer VOTRE_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"url": "https://example.com"}'

Et là, vous récupérez un job ID en retour (genre c7f8s2d9-a8e7-4b6e-...). Par défaut, le crawler va explorer 10 pages max avec une profondeur quasi illimitée. Mais bon, 10 pages c'est vite limité, du coup vous pouvez ajuster tout ça comme ceci :

curl -X POST "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl" \
 -H "Authorization: Bearer VOTRE_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
 "url": "https://example.com/docs",
 "limit": 50,
 "depth": 3,
 "formats": ["markdown"],
 "render": false,
 "options": {
 "includePatterns": ["https://example.com/docs/**"],
 "excludePatterns": ["**/changelog/**"]
 }
 }'

Le paramètre render: false permet de récupérer le HTML brut sans lancer de navigateur headless, c'est carrément plus rapide pour les sites statiques. Sachez quand même que pendant la beta, ce mode n'est pas facturé ! Youpi !

Récupérer les résultats

Une fois le crawl lancé, vous interrogez le job avec un GET :

curl "https://api.cloudflare.com/client/v4/accounts/VOTRE_ACCOUNT_ID/browser-rendering/crawl/VOTRE_JOB_ID" \
 -H "Authorization: Bearer VOTRE_TOKEN"

Vous obtenez alors le statut (running, completed, errored...) et la liste des pages crawlées avec leur contenu dans le format demandé. Si le résultat dépasse 10 Mo, un curseur de pagination est inclus pour récupérer la suite.

Les options qui tuent

Y'a quelques paramètres bien pensés pour les cas plus avancés :

  • modifiedSince et maxAge pour du crawling incrémental (ne re-crawler que les pages modifiées récemment)
  • source: "sitemaps" pour ne suivre que le sitemap au lieu de parser tous les liens
  • jsonOptions avec un prompt Workers AI pour extraire des données structurées automatiquement (genre récupérer le nom, le prix et le stock de 500 fiches produit d'un e-commerce en une seule passe)
  • rejectResourceTypes pour bloquer images, fonts et CSS et accélérer le crawl
  • authenticate pour les sites protégés par une auth HTTP basique

Attention quand même, y'a quelques subtilités à savoir. Un job peut tourner 7 jours max et les résultats sont conservés 14 jours seulement, du coup pensez à les récupérer vite. Le crawler respecte le robots.txt (y compris le crawl-delay), et si un site vous bloque, les URLs apparaissent comme "disallowed" dans les résultats. Sauf que ça ne vous dit pas pourquoi, faudra aller checker le robots.txt vous-même.

Voilà, cette "merveille" pour les scrappeurs fous est dispo sur les plans Free et Paid de Workers , et si vous voulez aller plus loin, Cloudflare propose aussi des endpoints pour les screenshots, les PDF et le scraping ciblé .

Voilà, un petit crawler inclus dans le plan Free de Workers, qui respecte le robots.txt et qui sort du Markdown ou du JSON structuré... je vais surveiller ça de près !

Microsoft Teams VDI optimization: migrating from WebRTC to SlimCore (VDI 2.0)

Par : IT Experts
9 mars 2026 à 16:29
SlimCore networking architecture (image Microsoft)
Microsoft is retiring the legacy WebRTC-based optimization for Teams in Virtual Desktop Infrastructure (VDI) and replacing it with a new architecture called SlimCore — also referred to as VDI 2.0 — introduced in Q4 2024. The change affects Windows endpoints connecting to Azure Virtual Desktop (AVD), Windows 365, and Citrix, with defined End of Support and End of Availability milestones. In parallel, Microsoft has announced a public tech preview of the new optimization for Omnissa Horizon. This article covers the architectural differences, supported platforms, new features, and the steps required to complete the migration.

Source

n8n MCP - Quand votre IA pilote vos workflows

Par : Korben
9 mars 2026 à 11:17

Le MCP, c'est devenu LE truc standard pour connecter des IA à vos outils. Sauf que voilà... brancher Claude sur n8n, en pratique, c'était encore un peu le bazar avec du JSON à copier-coller dans tous les sens. Mais heureusement, un dev a décidé de faire les choses proprement avec un vrai serveur MCP dédié.

n8n MCP , c'est un serveur MCP open source (sous licence MIT) qui donne à votre IA un accès direct à n8n avec plus de 1 000 nœuds supportés (Gmail, Slack, PostgreSQL, HTTP...), leurs propriétés, leurs opérations, bref tout le bazar. Vous décrivez ce que vous voulez, et youplaboom, l'IA construit le workflow à votre place. Comme ça plus besoin d'exporter du JSON, de l'importer, de corriger les erreurs cryptiques... c'est plié !

Et le truc chouette, c'est son système de mises à jour différentielles. Au lieu de renvoyer tout le workflow à chaque modif (et bouffer vos tokens comme un goinfre), le serveur ne transmet que ce qui a changé. Résultat, 80 à 90% de tokens en moins sur les grosses modifs. Pas mal du tout, hein ?!

Côté compatibilité, c'est large : Claude Desktop, ChatGPT, Cursor, Gemini CLI, Codex CLI... la liste est carrément longue. Via le service hébergé, c'est du OAuth zero-setup pour pas mal de clients, vous cliquez et c'est bon. Pour les IDE comme Cursor ou VS Code (avec une extension MCP), faut une clé API mais rien de bien sorcier. Après, ça ne marchera pas avec tous les clients MCP non plus, donc vérifiez la liste sur leur site avant de vous lancer.

D'ailleurs, si vous avez kiffé OneMCP qui simplifie la gestion des serveurs MCP, ici c'est totalement complémentaire. OneMCP gère la plomberie générale, n8n MCP se spécialise sur un truc précis à savoir donner à l'IA la connaissance COMPLÈTE de n8n (plus de 500 nœuds officiels et autant de nœuds communautaires) pour qu'elle puisse construire des workflows qui marchent du premier coup... enfin presque.

Y'a aussi une bibliothèque de plus de 2 700 templates de workflows prêts à l'emploi avec recherche sémantique. Genre vous dites "je veux un workflow qui surveille mes commits GitHub et m'envoie un récap Slack chaque soir" et l'IA pioche dans les templates existants pour vous pondre un truc fonctionnel.

Après pour l'installation, c'est soit le service hébergé (gratuit pour 100 appels par jour mais rien à configurer), soit en self-hosted via npx n8n-mcp (faut Node.js 18+) ou Docker (~280 Mo l'image, basée sur Alpine). Perso, le mode hébergé suffit largement pour tester, et si vous voulez aller plus loin c'est de la licence MIT donc vous faites ce que vous voulez.

Attention quand même, le projet (tout comme moi) recommande de ne JAMAIS laisser l'IA modifier vos workflows de production directement. Toujours copier, tester en dev, exporter un backup. C'est du bon sens mais ça vaut le coup de le rappeler parce que sinon, le jour où votre IA décide d'"optimiser" votre pipeline de facturation en supprimant des nœuds qu'elle juge inutiles... bah gros caca en perspective !

Et si vous voulez voir comment ça se marie avec d'autres serveurs MCP genre Chrome DevTools MCP , c'est tout à fait possible de combiner les deux pour que votre IA construise un workflow n8n ET debug le front dans Chrome en même temps. La stack IA-augmentée commence à devenir sérieusement sérieuse ! Oui je suis sérieux ^^ !

Bref, plutôt que de bidouiller avec du JSON à la main ou de lancer des OpenClaw sans sécurité en mode gros débilo de Linkedin..., bah vous demandez à Claude et lui fera le job proprement sous votre contrôle !

Enable Windows 365 Reserve on a Windows 365 Boot device

Par : IT Experts
2 mars 2026 à 16:36
Windows 365 Boot device in Intune admin center (image Microsoft)
Windows 365 Reserve and Windows 365 Boot are two complementary Microsoft cloud services that, when combined, let employees resume work on a preconfigured Cloud PC from any Windows 11 device without additional setup. Windows 365 Reserve provides short-term Cloud PC access for users whose primary physical device is unavailable. Windows 365 Boot redirects the Windows 11 sign-in experience directly to a Cloud PC, though administrators can configure policies to allow users to access the physical device's local OS if needed.

Source

Clés API Google - 3000 clés publiques donnent accès à Gemini

Par : Korben
26 février 2026 à 09:31

Les clés API Google que vous collez dans votre JavaScript pour afficher une carte Maps... hé bien elles ne sont plus si inoffensives. Car depuis que Gemini est entré dans la danse, ces mêmes clés donnent maintenant accès à vos fichiers privés et surtout à votre facture IA.

Et personne ne nous a prévenu...

En gros, Google utilise un format de clé unique, les fameuses AIza..., aussi bien pour Maps et Firebase (public, collé dans le HTML, tout le monde s'en fout) que pour Gemini (privé, accès aux fichiers, facturation). Le problème c'est que quand vous activez l'API Gemini sur un projet Google Cloud, TOUTES les clés existantes de ce projet héritent automatiquement de l'accès Gemini. Sans warning, sans notification, sans rien... Ouin !

Les chercheurs de TruffleSecurity ont ainsi trouvé presque 3000 clés API Google valides dans le dataset Common Crawl de novembre 2025. Des clés qui trainent dans du code JavaScript, des pages HTML, des repos GitHub publics... et qui fonctionnent sur l'endpoint Gemini. Il suffit d'un simple curl avec une clé Maps récupérée sur un site web, et hop, vous accédez à l'API Gemini du propriétaire. Fichiers privés, contenu en cache, facturation sur son compte.

Et parmi les victimes, on trouve des institutions financières, des boîtes de cybersécurité, et... Google eux-mêmes (oui oui, vraiment).

Le 21 novembre 2025, TruffleSecurity signale donc le problème et la réponse de Google le 25 novembre c'est : "intended behavior" (comportement normal)... Sauf que le 2 décembre, Google a reclassifié ça en bug, puis le 13 janvier 2026, ça passe finalement en Tier 1. On est donc passé du "c'est normal les frérots" à "ah oui quand même, oupsi oups", en 7 semaines.

Maintenant, pour ceux qui se demandent si leurs clés API Google sont concernées, direction console.cloud.google.com , section "APIs & Services" puis "Identifiants".

Si vous voyez l'API " Generative Language " de Gemini API activée sur un projet avec des clés non restreintes... attention, c'est le moment de faire le ménage. Ajoutez des restrictions IP ou HTTP referrer, et surtout, utilisez des comptes de service plutôt que des clés API pour tout ce qui touche à Gemini (sauf si vous aimez les surprises sur votre facture ^^).

Le truc tordu, c'est que la doc Firebase dit noir sur blanc que les clés API ne sont pas des secrets. Google Maps vous dit carrément de les coller dans votre HTML. Et maintenant, ces mêmes clés donnent accès à une IA qui peut lire vos fichiers. Du CWE-1188 pur et dur ! Et c'est pas la première fois que Google se fait taper sur les doigts pour ce genre de souci avec Gemini .

Du coup, Google a annoncé des nouvelles mesures, du scoped defaults, du blocage de clés fuités, des notifications proactives...etc. Reste donc à voir si ça arrivera avant que les presque 3000 clés exposées soient exploitées par des gens moins bien intentionnés.

Bref, dix ans à dire que c'est public, et hop, aujourd'hui c'est devenu top secret. Bien joué Google !!

Source

Configure RDP Shortpath with Group Policy and Intune to optimize connections to Azure Virtual Desktop and Windows 365

Par : IT Experts
3 février 2026 à 16:09
Enable the rdp shortpath listener for session hosts in intune (image microsoft)
Microsoft announced the general availability (GA) of centralized RDP Shortpath configuration using Intune and Group Policy (GPO). RDP Shortpath is a UDP-based direct transport protocol that establishes connections between Remote Desktop clients and session hosts, reducing latency and improving reliability for Azure Virtual Desktop and Windows 365 Cloud PCs. You can now centrally configure this feature using Group Policy and Microsoft Intune, eliminating the need for manual per-host configuration.

Source

❌
❌