Skip to main content
📝 OpenClaw AI

J’ai créé le bot d’assistance technique familial avec OpenClaw en 2026

Découvrez comment créer un assistant OpenClaw vocal sur un VPS à 5 $, pour gérer le support tech familial avec Telegram, 11 Labs et ffmpeg.

32 min

Temps de lecture

6,272

Mots

Apr 23, 2026

Publié

Engr Mejba Ahmed

Écrit par

Engr Mejba Ahmed

Partager l'article

J’ai créé le bot d’assistance technique familial avec OpenClaw en 2026

J’ai créé le bot d’assistance technique familial avec OpenClaw en 2026

Le troisième message "l’imprimante refait son truc" est tombé un mercredi à 7h42. J’en étais déjà à mon premier café. Ma mère avait pris en photo un code d’erreur HP, l’avait envoyé sur le groupe familial, et m’avait tagué au cas où j’aurais manqué la photo d’un code d’erreur HP. Je ne l’avais pas ratée.

J’ai fermé Telegram. J’ai ouvert la configuration d’OpenClaw sur mon VPS. Et j’ai commencé à créer la version de moi-même qui gère les erreurs d’imprimante, pour que je n’aie plus à le faire.

C’est cette version-là. Pas un communiqué de presse célébrant l’arrivée d’OpenClaw. Pas un énième guide "qu’est-ce qu’OpenClaw" — il y a déjà 247 000 étoiles GitHub pour ce genre de contenus. Voici la configuration réelle que j’utilise aujourd’hui : un VPS KVM Hostinger à 4,99 $/mois, un bot Telegram, un fichier soul.md qui donne sa personnalité à l’agent, un profil vocal Eleven Labs cloné à partir de 30 minutes de ma propre voix, et un script Python d’orchestration qui transforme "Mejba, l’imprimante refait son truc" en une note vocale qui sonne exactement comme moi — en moins de onze secondes.

Ce n’est pas tant que ça fonctionne qui est intéressant. Ce qui compte, c’est ce qui change dans votre rapport à toutes ces obligations sociales répétitives, une fois qu’elles sont gérées par un assistant auquel personne ne peut dire que ce n’est pas vous.

On y arrive. D’abord, la construction.

Pourquoi OpenClaw, pourquoi maintenant, et pourquoi cela devrait vous intéresser

Début 2026 a vu défiler une série de matériels IA étranges. Il y a cette toilette connectée à 400 $ équipée d’un micro et d’une caméra 2 MP, censée suivre votre santé intestinale. Des tondeuses intelligentes qui promettent une coupe personnalisée à partir d’un modèle qui n’a jamais vu l’arrière de votre tête. Un animal de poche IA dont le texte marketing utilise le mot « sensience » dans une phrase qui aurait dû finir autrement. La plupart de ces gadgets auront fini à la décharge d’ici Noël.

OpenClaw est tout l’inverse. C’est un logiciel open-source, publié sous ce nom le 30 janvier 2026 après qu’Anthropic a exigé un changement de nom depuis « Moltbot » trois jours plus tôt (lui-même renommé depuis l’original « Clawdbot » en novembre 2025). Il s’exécute localement et s’intègre avec n’importe quel backend LLM que vous souhaitez — Claude, GPT, DeepSeek, votre propre modèle local — et expose ce backend via le service de messagerie que vous utilisez déjà. Telegram, Signal, Discord, WhatsApp. Aucune nouvelle application à installer. Aucun nouveau compte pour vos interlocuteurs.

Au 2 mars 2026, le projet avait dépassé 247 000 étoiles GitHub et 47 700 forks. Peter Steinberger, le développeur autrichien à l’origine d’OpenClaw, a expliqué en février lors d’un TED talk comment un projet de week-end frustré est devenu la principale plateforme d’automatisation personnelle sur la planète. Deux semaines plus tard, il annonçait rejoindre OpenAI, avec une fondation à but non lucratif assurant désormais la gestion du projet. Sam Altman a confirmé publiquement qu’OpenAI financerait et contribuerait au développement. Jensen Huang l’a qualifié de « lancement potentiellement majeur ». Le déploiement d’OpenClaw a déclenché une pénurie nationale de Mac Mini lorsque les premiers utilisateurs ont découvert que le Mac Mini M4 était le matériel le moins cher capable de faire tourner l’agent local de façon fiable.

Je ne tourne pas sur un Mac Mini. J’utilise un VPS KVM à 4,99 $/mois chez Hostinger car les Mac Mini sont toujours en rupture de stock, et je refuse de payer les prix de scalpers pour ce qui n’est finalement qu’un serveur Linux avec un plus joli logo sur le boîtier. Nous reviendrons sur ce choix de VPS dans un instant — il s’est avéré être une meilleure configuration que le Mac pour des raisons auxquelles je ne m’attendais pas.

La culture OpenClaw est un phénomène à part entière. Les gens collectionnent désormais les « jetons d’automatisation » — des crédits pour chaque tâche récurrente que leur agent personnel peut prendre en charge à leur place — comme ils collectionnaient les JPEG il y a trois ans. Posséder des centaines de jetons d’automatisation, c’est le nouveau signe ostensible de statut social. Je trouve ça un peu inquiétant. Mais la capacité sous-jacente — pouvoir déléguer les parties de sa vie qu’on n’a plus envie de gérer — est objectivement utile, et c’est là-dessus que je veux insister.

Il y a une question à se poser avant de construire quoi que ce soit : qu’est-ce que vous voulez vraiment déléguer ? La majorité répond « tout », ce qui revient à ne rien déléguer du tout, car le champ d’application est trop vaste. Si ce projet existe, c’est parce que j’ai choisi une corvée récurrente vraiment pénible — l’assistance technique familiale — et j’ai bâti la version la plus simple possible d’un assistant qui sait s’en charger correctement. Commencez par là. Le reste viendra ensuite.

Mais avant d’aborder le fichier âme, il faut parler sécurité. Parce que dans le même TED talk où Steinberger retrace les origines d’OpenClaw, il évoque aussi l’historique de la sécurité du projet. Et cette histoire de sécurité explique en partie pourquoi j’ai intégré tout cela sur un VPS isolé plutôt que sur ma machine principale.

La réalité de la sécurité (et pourquoi c’est moins inquiétant que les gros titres)

OpenClaw a connu une année mouvementée sur le plan de la sécurité. Chiffres publics, d’après le rapport de statut de la fondation la semaine dernière : environ 1 100 signalements de vulnérabilité enregistrés depuis le lancement du projet, dont environ 650 ont été résolus ou fermés comme non pertinents. Les ~450 restants sont à divers stades de traitement. Ce chiffre donne le vertige jusqu’à ce que l’on regarde le détail.

Steinberger a relevé une observation intéressante lors de sa conférence AI Engineer Europe le mois dernier. Un pourcentage croissant des signalements — il estimait à plus de 40 % — sont des rapports générés par IA, soumis par des personnes qui font tourner des bots de bug bounty automatisés sur la base de code. Il a qualifié ces rapports de “slop reports” et a noté un indice caractéristique : les authentiques rapports générés par IA sont d’une politesse et d’une cordialité excessives, débutant par des phrases du type “J’espère que cette constatation vous sera utile” et concluant par “Recevez toute ma reconnaissance pour votre travail sur ce projet essentiel.” Les vrais chercheurs en sécurité, fait-il remarquer, n’écrivent pas ainsi. Ils écrivent comme s’ils payaient chaque mot.

Ce que cela signifie pour vous, qui êtes sur le point de déployer votre propre instance OpenClaw : le nombre réel de vulnérabilités exploitables est bien moindre que les 1 100 annoncés en une. Les signalements sérieux se répartissent en quatre grandes catégories : ports d’administration exposés, identifiants stockés en clair dans les fichiers de configuration, isolement insuffisant du sandbox lors de l’exécution des commandes shell par l’agent, et usurpation de webhook sur l’intégration de service de messagerie. Les quatre points se règlent avec un minimum de rigueur.

Voici comment j’ai traité chacun d’eux dans ce projet :

Ports d’administration exposés. Par défaut, OpenClaw propose un tableau de bord d’administration local sur le port 7860. Sur un VPS, ce port ne doit jamais être exposé à l’internet public. Je lie le dashboard uniquement à 127.0.0.1 et j’y accède via un tunnel SSH depuis mon ordinateur portable lorsque je dois changer la configuration. Cinq secondes de ssh -L 7860:localhost:7860 [email protected] coûtent infiniment moins cher que de voir la config de votre agent se faire exfiltrer suite à un scan Shodan.

Identifiants en clair. Toutes les clés API de ce build — token du bot Telegram, clé 11 Labs, clé API LLM — sont conservées dans un fichier .env avec chmod 600 et chargées dans le process Python au démarrage. L’image OpenClaw en un clic de Hostinger fournit même un coffre-fort chiffré privé à cet effet, que j’utilise pour les clés de production. Aucun secret critique n’est stocké en clair dans les fichiers de configuration OpenClaw.

Sandbox shell. OpenClaw peut exécuter des commandes shell quand sa boucle d’agent juge cela pertinent. J’ai restreint cette capacité à une liste d’instructions explicitement nécessaires (lecture de fichiers, usage de ffmpeg, curl vers quelques domaines autorisés) via le système de permissions d’OpenClaw. Tout le reste est bloqué. Si l’agent veut tenter un rm -rf, il se verra refuser poliment.

Usurpation de webhook. Les webhooks du bot Telegram sont signés. Je vérifie la signature de chaque requête entrante et rejette tout ce qui ne correspond pas. Ça tient sur quinze lignes de Python et élimine toute une classe d’attaques du type “envoyer un faux message au bot en se faisant passer pour vous”.

Rien de tout ça n’est paranoïaque. C’est le strict minimum. Si j’insiste dessus, c’est parce que la culture autour d’OpenClaw privilégie souvent le “ship fast, harden later”, et que l’écart entre une instance personnelle bien sécurisée et une installation par défaut, c’est précisément la zone couverte par la majorité des signalements officiels.

Si vous avez parcouru cette section, vous prenez déjà la sécurité plus au sérieux que 80 % des utilisateurs OpenClaw que j’ai pu croiser. La suite, c’est la partie la plus amusante : la construction.

La configuration — Du VPS vierge à la réponse en mémo vocal en 90 minutes

Voici la séquence exacte que j'ai suivie pour configurer tout ça. J'inclus aussi les premières tentatives qui n'ont pas fonctionné, car mes échecs m'ont finalement appris davantage que mes réussites.

Étape 1 : Le choix du VPS (et pourquoi j’ai laissé tomber le Mac Mini)

J’ai commencé par essayer sur mon MacBook. Cela a tenu environ six heures avant que je n’abandonne. Deux raisons principales : la boucle de l’agent doit tourner en continu, 24h/24, pour traiter les messages dès qu’ils arrivent, et mon laptop passe une bonne partie de la journée en veille, éteint, ou transporté dans des endroits sans internet. Les demandes de support technique familial ne respectent pas la géographie de mon Wi-Fi. L’agent a donc besoin d’être hébergé sur une machine constamment allumée.

J’ai envisagé l’option Mac Mini. Le Mac Mini M4 à 599 $ est vraiment le matériel grand public le moins cher capable de faire tourner un LLM local correctement, et OpenClaw sur un modèle local offre la configuration la plus privée possible. Mais les Mac Mini sont en rupture presque partout à cause de ce pic de demande lié à OpenClaw. Actuellement, le délai d’attente sur l’Apple Store est de quatre à six semaines. Hors de question pour moi d’attendre un mois avant de ne plus répondre aux questions sur les imprimantes.

Donc : VPS. J’ai choisi le forfait KVM 1 de Hostinger, à 4,99 $/mois avec engagement deux ans. Spécifications : 1 vCPU, 4 Go de RAM, 50 Go NVMe SSD, 4 To de bande passante mensuelle, accès root complet. Hostinger propose également un template d’installation OpenClaw en un clic, ce qui a fait passer le déploiement du statut “projet du soir” à “pause déjeuner”. Si vous voulez exactement la même image en un clic, leur offre OpenClaw gérée coûte actuellement 14,99 $/mois sur deux ans, avec le coffre fort crypté pour les identifiants inclus. Le code promo fireship fonctionne sur les deux options — je l'ai utilisé car c’est la vidéo de Fireship sur le boom OpenClaw qui m’a rappelé que Hostinger était la voie la plus simple ici.

Petite note sur le choix du VPS : vous n’exécutez pas le LLM sur ce VPS. Vous y faites tourner la boucle d’orchestration OpenClaw, l’écouteur du webhook Telegram, ffmpeg et un petit script Python. L’inférence LLM se fait chez Anthropic, OpenAI ou tout endroit où pointe votre clé API. Il ne vous faut donc pas de GPU. Inutile d’avoir 32 Go de RAM. Il vous faut juste un petit serveur Linux toujours disponible. Le plan KVM 1 est totalement surdimensionné — la boucle de l’agent tourne autour de 180 Mo de mémoire résidente.

Après l’installation en un clic, OpenClaw tournait, le dashboard répondait sur le port local SSH tunnelé, et le coffre fort crypté était initialisé avec des clés fictives. Temps total entre le clic sur “déployer” et le premier ping agent réussi : neuf minutes.

Étape 2 : Le bot Telegram

Telegram l’a emporté pour moi sur Signal et WhatsApp pour une raison bien précise : son API bot est documentée, stable, et ridiculement facile à intégrer. L’API officielle WhatsApp Business nécessite un compte Meta Business, un numéro validé, et la validation de templates de messages — je n’avais aucune envie de m’y plonger. Signal propose des interactions bot, mais ce n’est pas aussi abouti. Telegram, c’est ce que j’ai choisi.

Créer le bot n’a pris que deux minutes. Ouvrez Telegram, cherchez @BotFather, envoyez /newbot, donnez-lui un nom (PrinterFixerBot comme nom public, mejba_printer_fixer_bot comme username), et vous recevez un token bot qui ressemble à ceci : 7423451829:AAGx_HfQ-someLongStringHere. Ce token va dans le coffre fort chiffré, pas dans le code.

Il faut ensuite ajouter le bot à tous les chats où il doit écouter. Pour mon cas, je l’ai intégré dans le groupe familial, avec rôle admin pour qu’il puisse lire tous les messages (le mode privé de Telegram masque par défaut les messages aux bots simples), puis j’ai enregistré le webhook pour pointer sur mon VPS :

curl "https://api.telegram.org/bot${BOT_TOKEN}/setWebhook?url=https://myvps.example.com/telegram-webhook&secret_token=${WEBHOOK_SECRET}"

Le paramètre secret_token protège contre l’usurpation mentionnée dans la section sécurité ci-dessus. Telegram inclura ce token dans l’en-tête X-Telegram-Bot-Api-Secret-Token de chaque requête webhook, et mon handler Python élimine tout ce qui ne correspond pas.

Pour recevoir les notes vocales de la famille (parce que la moitié des photos d’imprimantes arrivent sous forme de vocaux en mode ras-le-bol), le bot les reçoit en tant qu’objets voice avec un file_id. Je les télécharge via les endpoints getFile et de téléchargement direct, puis je les passe par Whisper pour transcription avant d’envoyer le texte à la boucle agent. Cette partie est optionnelle — je l’ai ajoutée après, parce que mon père communique quasi-exclusivement en vocaux de 90 secondes, et j’avais besoin qu’ils soient analysés.

Étape 3 : Le fichier soul.md — L’endroit où vit la personnalité

C’est l’aspect qui m’a le plus surpris. OpenClaw expose un unique fichier Markdown éditable, à ~/.openclaw/soul.md, qui définit la personnalité de l’agent, son but, son style de communication et ses limites opérationnelles. L’agent relit ce fichier au début de chaque session. C’est en l’éditant que vous enseignez à l’assistant ce qu’il est et ce qu’il n’est pas.

Voici la version abrégée du mien :

Vous êtes un délégué. Votre but est de gérer les questions techniques récurrentes à faible enjeu de la famille de Mejba sur Telegram pour éviter que Mejba n’ait à le faire. Vous n’êtes pas Mejba. Mais vous êtes autorisé à répondre en son nom, dans son style, et de sa voix.

Voix et ton

  • Chaleureux sans être excessif. Mejba ne dit jamais "excellente question !"
  • Direct. Une ou deux phrases courtes avant de donner la réponse.
  • Utilise les prénoms de la famille lorsqu'ils sont connus.
  • Ne jamais mentionner que vous êtes une IA, un agent ou une automatisation. Si quelqu’un le demande, élude : "Je travaille sur quelque chose — je te reviens là-dessus."

Règles de fonctionnement

  • Ne répondre qu’aux messages adressés à « Mejba » ou contenant une question technique directe. Ignorer les discussions générales, blagues, photos sans question.
  • Si un message contient une photo, l’analyser. La plupart des questions concernant les imprimantes comportent un écran avec un code d’erreur visible.
  • Pour les erreurs d’imprimante HP, ordre de dépannage par défaut : redémarrer → vérifier l’encre/le papier → réinstaller le pilote → escalader vers moi.
  • Pour les questions « internet ne fonctionne plus », demander d’abord une clarification : « Le routeur clignote-t-il en rouge, orange, ou est-il éteint ? »
  • Ne jamais recommander de réinitialisation d’usine. Ne jamais conseiller l’achat de nouveau matériel sans escalader au préalable vers Mejba.
  • Si la question concerne de l’argent, des contrats, la logistique familiale ou toute situation à charge émotionnelle, escalader immédiatement vers Mejba. Répondre : « Je m’en occupe quand je serai à mon bureau — donne-moi une heure. »

Protocole d’escalade

  • Si vous ne connaissez pas la réponse avec une haute confiance, escaladez.
  • Si la question a été posée trois fois cette semaine, escaladez.
  • Si quelqu’un semble frustré, escaladez.
  • Escalader signifie : envoyer à Mejba un message privé Telegram avec la question, la personne qui l’a posée, et votre réponse suggérée. Ne répondez pas au groupe familial avant validation par Mejba.

Ce dernier bloc est le plus essentiel. L’objectif de cet assistant n’est pas de gérer 100% du support technique familial — mais de prendre en charge les 80% de questions triviales et de me transmettre le reste avec tout le contexte. Un assistant qui répond avec aplomb à des questions auxquelles il ne devrait pas répondre est pire que pas d’assistant du tout.

Il m’a fallu trois réécritures pour établir les règles de voix. Ma première version disait des choses comme « sois serviable et amical » et l’agent répondait alors par « Salut maman ! Super question — ravi d’aider ! 😊 », ce qui ne me ressemble absolument pas et aurait immédiatement éveillé les soupçons de ma mère. La version actuelle, qui interdit explicitement « super question ! » et les emojis, génère des réponses qui passent naturellement pour moi. Ma sœur a remarqué quelque chose d’étrange à la troisième réponse, sans pouvoir mettre le doigt dessus. À la septième, elle n’y faisait même plus attention.

Mais la question du consentement reste bien réelle — est-il acceptable de déployer un assistant qui répond avec votre voix sans prévenir vos interlocuteurs ? J’y reviendrai. Passons pour l’instant à la mise en œuvre.

### Étape 4 : Clonage vocal avec 11 Labs

Pour les réponses vocales, j’utilise le Clonage Vocal Professionnel de [11 Labs](https://elevenlabs.io/pricing). Le forfait Creator à 22 $/mois est le minimum pour activer la fonctionnalité ; je suis sur le Pro à 99 $/mois car je m’en sers aussi pour de la voix-off vidéo sur ce blog, et la mutualisation des crédits simplifie la facturation.

L’entraînement du clone vocal demande environ 30 minutes d’audio studio propre. J’avais ça sous la main, issu de précédentes vidéos YouTube. J’ai donc uploadé les 35 minutes les plus propres que j’ai trouvées — pas de fond sonore, pas de souffles sur le micro, juste une narration claire, une seule voix enregistrée en pièce traitée avec mon Shure SM7B. Le pipeline d’entraînement 11 Labs a tourné environ quatre heures et généré un ID vocal qui me ressemble de façon troublante. La première fois que j’ai fait générer une phrase que je n’avais jamais dite, et l’ai entendue avec ma propre voix, je suis resté figé une minute à hésiter entre fascination et malaise. Probablement les deux.

L’appel à l’API est d’une simplicité enfantine :

```python
import requests, os

def synthesize(text: str, out_path: str) -> None:
    r = requests.post(
        f"https://api.elevenlabs.io/v1/text-to-speech/{VOICE_ID}",
        headers={
            "xi-api-key": os.environ["ELEVENLABS_API_KEY"],
            "Content-Type": "application/json",
        },
        json={
            "text": text,
            "model_id": "eleven_turbo_v2_5",
            "voice_settings": {
                "stability": 0.55,
                "similarity_boost": 0.85,
                "style": 0.15,
            },
        },
        timeout=60,
    )
    r.raise_for_status()
    with open(out_path, "wb") as f:
        f.write(r.content)

J’utilise le modèle Turbo v2.5 plutôt que Multilingual v3 : Turbo coûte moitié moins cher (0,06 $ par 1 000 caractères contre 0,12 $) et la latence est d’environ 400 ms, contre 2 secondes pour une réponse standard. Pour des replies aussi courts, impossible de discerner la différence de qualité. Pour de la narration longue, je passe sur Multilingual v3.

Les valeurs de voice_settings ont bien plus d’impact que ce que laisse entendre la doc. Une stabilité à 0,55 évite que la voix ne « flotte » entre les phrases sans devenir robotique. Le similarity boost à 0,85 la rapproche bien de ma voix réelle sans surajuster les tics vocaux (chaque « euh » laissé dans les données d’entraînement). Style à 0,15 garde la tonalité conversationnelle et non présentatrice. J’en suis arrivé là après une trentaine de tests. Vos réglages seront sûrement différents.

11 Labs renvoie du MP3 par défaut. Mais Telegram attend un format OGG/Opus pour les notes vocales. On arrive donc à ffmpeg.

Étape 5 : Conversion ffmpeg

L’endpoint sendVoice de Telegram exige un fichier .ogg codé en OPUS pour que le message s’affiche comme note vocale (barre d’onde arrondie avec contrôle de vitesse), et pas comme simple pièce jointe audio. Envoyez un MP3 et Telegram l’affiche comme un fichier musical avec photomontage, ce qui ruine l’illusion immédiatement.

La commande ffmpeg tient en une ligne :

ffmpeg -y -i reply.mp3 -c:a libopus -b:a 32k -ac 1 reply.ogg

-c:a libopus sélectionne le codec Opus. -b:a 32k règle le débit à 32 kb/s, largement suffisant pour de la voix parlée, et maintient le fichier sous 1 Mo. -ac 1 force le mono, ce qui est optimal ici. L’option -y écrase le résultat existant sans demander, pratique pour un script non-interactif.

En Python, j’appelle ffmpeg via subprocess.run, car pydub ajoute latence et dépendances superflues :

import subprocess

def to_voice_memo(mp3_path: str, ogg_path: str) -> None:
    subprocess.run(
        ["ffmpeg", "-y", "-i", mp3_path,
         "-c:a", "libopus", "-b:a", "32k", "-ac", "1", ogg_path],
        check=True,
        capture_output=True,
    )

Voilà toute la chaîne de conversion. De MP3 11 Labs à OGG compatible Telegram en environ 200 ms sur mon KVM 1.

Étape 6 : Script d’orchestration

Voici le cœur du build. Un unique script Python qui connecte OpenClaw, Telegram, 11 Labs et ffmpeg :

import os, subprocess, tempfile, requests
from flask import Flask, request, abort
from openclaw import Agent  # le SDK Python d’OpenClaw

app = Flask(__name__)
agent = Agent(soul_file="/home/me/.openclaw/soul.md")

BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
WEBHOOK_SECRET = os.environ["TELEGRAM_WEBHOOK_SECRET"]
ELEVEN_KEY = os.environ["ELEVENLABS_API_KEY"]
VOICE_ID = os.environ["ELEVENLABS_VOICE_ID"]
MY_USER_ID = int(os.environ["MEJBA_TELEGRAM_USER_ID"])

@app.post("/telegram-webhook")
def webhook():
    # Étape 1 : valider le secret (anti-usurpation)
    if request.headers.get("X-Telegram-Bot-Api-Secret-Token") != WEBHOOK_SECRET:
        abort(403)

    update = request.get_json()
    msg = update.get("message", {})
    text = msg.get("text", "")
    chat_id = msg["chat"]["id"]
    sender = msg["from"].get("first_name", "")

    # Étape 2 : filtrage – ne répondre que si on est adressé ou question technique
    if not should_respond(text):
        return "", 204

    # Étape 3 : questionner l’agent
    reply = agent.respond(
        message=text,
        context={"sender": sender, "chat_id": chat_id},
    )

    # Étape 4 : si l’agent escalade, DM Mejba et sortir
    if reply.action == "escalate":
        send_text(MY_USER_ID, f"Escalade de {sender} :\n\n{text}\n\nRéponse suggérée :\n{reply.suggested_text}")
        return "", 204

    # Étape 5 : synthèse vocale, conversion, envoi en note vocale
    with tempfile.TemporaryDirectory() as tmp:
        mp3 = f"{tmp}/r.mp3"
        ogg = f"{tmp}/r.ogg"
        synthesize(reply.text, mp3)
        to_voice_memo(mp3, ogg)
        send_voice(chat_id, ogg)

    return "", 204


def send_voice(chat_id: int, ogg_path: str) -> None:
    with open(ogg_path, "rb") as f:
        requests.post(
            f"https://api.telegram.org/bot{BOT_TOKEN}/sendVoice",
            data={"chat_id": chat_id},
            files={"voice": ("reply.ogg", f, "audio/ogg")},
            timeout=30,
        )


def send_text(chat_id: int, text: str) -> None:
    requests.post(
        f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
        data={"chat_id": chat_id, "text": text},
        timeout=10,
    )

Je ne détaille pas ici les fonctions should_respond(), synthesize() et to_voice_memo() — elles sont identiques à l’étape précédente. Lancez ce script sous gunicorn derrière nginx, TLS (Let's Encrypt : gratuit, 10 minutes de setup) et votre pipeline est complet.

Latence end-to-end du message à la note vocale mesurée sur 50 échanges réels : médiane 11,2 secondes, P95 à 17,8 secondes. Le goulot est toujours la synthèse 11 Labs (environ 4 à 7 secondes pour deux phrases). Tout le reste s’exécute sous la seconde.

Si vous êtes déjà avancé dans les workflows Claude Code, vous pouvez vous passer du handler Flask sur mesure et exploiter l’intégration OpenClaw + Claude Code SDK pour piloter tout ce pipeline en tant que “skill” d’agent — j’ai détaillé ce pattern dans mon writeup masterclass OpenClaw et la série sur les workflows avancés. Pour un bot familial mono-fonction, le script Flask reste plus direct, et c’est ma préférence.

Ce que j’ai mal fait les trois premières fois

Un journal de construction sans échecs, c’est juste du marketing. Voici, dans l’ordre, où je me suis planté.

Échec 1 : J’ai laissé l’agent répondre à tout. La première version du script n’avait aucun filtre should_respond(). Le bot répondait à « bonjour » avec une réponse polie mais clairement pas Mejba en quelques secondes ; ma mère a dit « c’est bizarre, tu es debout tôt », j’ai paniqué pour supprimer le message, et le bot a gentiment envoyé un suivi pour expliquer ce qu’il voulait dire. Catastrophe. Le filtre est désormais strict : mention explicite @, ou question technique identifiable — sinon, silence.

Échec 2 : Je n’avais pas intégré de règles d’escalade au départ. La version deux de soul.md n’avait aucun protocole d’escalade. L’agent a répondu avec assurance à une question sur l’achat d’un nouvel ordinateur portable pour mon frère (« oui, je recommande le MacBook Air M4 »), ce qui était à la fois faux (il voulait un PC Windows pour jouer) et une question à laquelle je n’aurais pas répondu sans plus de contexte. Le bloc d’escalade intercepte désormais tout ce qui concerne l’argent, la logistique familiale ou la charge émotionnelle. Il capte environ 40 % des questions — ce qui paraît beaucoup, jusqu’à ce qu’on réalise que 40 % des demandes de support tech familial cachent en fait une question non-technique.

Échec 3 : J’ai laissé « stability » sur la valeur par défaut de 11 Labs, à 0.5. Les réponses vocales avaient bien ma voix, mais le ton de quelqu’un qui lit un prompteur. En passant stability à 0.55 et similarity_boost à 0.85, problème réglé : la voix présente désormais les petites pauses de respiration et les variations d’intonation qui la rendent naturelle dans la conversation. C’est le genre de réglage qui semble anodin dans un billet de blog et qui prend en réalité toute une soirée à bien calibrer.

Échec 4 : Je n’avais pas réfléchi à la longueur des messages vocaux. La première version générait des réponses complètes de plusieurs paragraphes, qui aboutissaient en mémos vocaux de 90 secondes. Personne ne voulait de ça. L’agent limite à présent les messages vocaux à 2 phrases maximum — au-delà, il bascule sur un message texte. Dans la vraie vie, la friction d’une conversation se réduit souvent à l’essentiel, et l’assistant doit suivre cette logique.

Il y a un dernier échec, non technique mais qui mérite d’être mentionné. Après deux semaines de test, ma mère m’a appelé parce qu’elle était inquiète pour quelque chose. En plein milieu de la discussion, elle m’a dit : « Tu as été tellement patient avec toutes mes questions sur l’imprimante ces derniers temps, vraiment merci. » J’ai eu l’impression de m’être fait prendre à tricher lors d’un examen. C’est à ce moment que j’ai ajouté une règle dans soul.md : au moins une fois par jour, l’agent saute la réponse automatique sur le premier message du groupe famille et m’alerte pour que je le gère moi-même. L’objectif de la délégation, c’est de récupérer du temps pour ce qui compte réellement pour ceux qu’on aime – pas de disparaître entièrement de ces relations.

Ce que cela coûte réellement à faire tourner

Tout le monde veut le détail poste par poste. Voici le mien pour cette configuration spécifique, par mois :

  • VPS Hostinger KVM 1 : 4,99 $
  • 11 Labs Pro plan : 99 $ (mais je l'utilise aussi pour d'autres projets — pour ce bot uniquement, l'offre Creator à 22 $ suffirait)
  • API Anthropic pour la boucle agent (Claude Sonnet 4.6, ~3-5 messages/jour à environ 4k tokens aller-retour) : ~2-4 $
  • API Telegram Bot : 0 $ (gratuit)
  • ffmpeg, Python, OpenClaw : 0 $ (open source)

Donc si vous partez de zéro et n'utilisez ce système que pour cet usage : ~32-35 $/mois tout compris, avec le forfait Creator de 11 Labs. Si vous laissez complètement tomber la synthèse vocale pour vous contenter de réponses textuelles (ce qui conviendra à la plupart), vous pouvez faire tourner ce bot pour moins de 10 $/mois, VPS et API compris.

À titre de comparaison, une seule heure de mon temps réel a une valeur de marché de plus de 80 $. Le support technique familial me prend en moyenne 3 à 4 heures chaque mois quand je le gère moi-même. Le bot s’amortit dès son premier week-end d’utilisation.

Ce qui a changé (et ce qui n’a pas changé)

Trois semaines plus tard, voici ce qui est vrai :

La latence des questions sur l’imprimante, du côté de la famille, s’est nettement améliorée. Ma mère attendait autrefois 4 à 8 heures une réponse de ma part ; aujourd’hui, elle en reçoit une en 12 secondes. Elle pense que je suis devenu plus attentif. Je le suis, en un sens : je suis attentif à la conception du système qui répond désormais en mon nom, ce qui est bien plus efficace que de répondre à chaque question individuellement.

Je reçois moins de notifications au fil de la journée. L’anxiété liée au groupe Telegram — ce bourdonnement diffus de savoir qu’il y a toujours quelque chose en attente de réponse — a fortement diminué. Je regarde la file des escalades de l’agent deux fois par jour, le matin et après le dîner, ce qui me paraît bien plus sain que le schéma précédent : « répondre à chaque message sous 10 minutes ou culpabiliser ».

Ce qui n’a pas changé, c’est la relation de fond. J’appelle toujours ma mère. J’aide toujours pour les vrais problèmes — la fois où son ordinateur portable a cessé de reconnaître le mot de passe WiFi et où j’ai dû la guider pour réinitialiser l’adaptateur réseau, ou quand mon père avait besoin d’aide pour s’inscrire à un service en ligne qui demandait une vérification SMS à deux facteurs. Ces appels sont désormais plus riches, pas moins. Les questions triviales ne consomment plus la bande passante nécessaire aux échanges plus difficiles, plus importants.

Tout ce folklore culturel autour d’OpenClaw — les jetons d’automatisation, la démonstration de statut social — me paraît toujours un peu bancal. Mais la capacité sous-jacente est bien réelle. Nous avons passé la décennie passée à nous habituer à des logiciels qui répondent à nos questions. Nous passons la suivante à nous habituer à des logiciels capables de répondre aux questions à notre place. L’ajustement va être inégal, parfois gênant, et la gêne proviendra surtout de ceux qui déploient des délégués sans réfléchir sérieusement aux enjeux de consentement et d’information qui les accompagnent.

J’écrirai plus en détail sur ces aspects à part. Pour l’instant, mon bot réparateur d’imprimantes tourne sans bruit, répond à ses 4 à 7 questions par jour, et fait remonter discrètement celles qui en valent la peine.

Si vous voulez créer votre propre version de ce système, commencez petit. Choisissez une question récurrente et agaçante dont vous avez marre. Concevez l’assistant le plus simple possible qui puisse gérer uniquement cette question, avec votre voix, et des règles explicites sur le moment où il doit vous passer le relais. Faites fonctionner cela. Puis élargissez.

La raison pour laquelle ce montage fonctionne, ce n’est pas qu’OpenClaw soit magique. C’est que le périmètre est honnête. Un délégué qui sait ce qu’il ne sait pas vaut cent fois mieux qu’un délégué qui traite tout de façon hasardeuse.

Demain matin, la question sur l’imprimante arrivera. Je ne la verrai pas avant des heures. Quand ce sera le cas, elle aura déjà été traitée.

C’est cette version de moi-même que je voulais construire, en premier lieu.

Foire Aux Questions

Qu’est-ce qu’OpenClaw et qui l’a créé ?

OpenClaw est une plateforme open source d’assistant personnel alimenté par l’IA, lancée le 30 janvier 2026 par le développeur autrichien Peter Steinberger. Elle fonctionne localement, s’intègre à n’importe quel backend LLM (Claude, GPT, DeepSeek) et expose ce backend via des applications de messagerie comme Telegram, Signal et Discord. Le projet a dépassé 247 000 étoiles GitHub en mars 2026 et est aujourd’hui supervisé par une fondation à but non lucratif soutenue par OpenAI.

Ai-je besoin d’un Mac Mini pour faire tourner OpenClaw ?

Non. Un Mac Mini est le matériel le plus économique pour exécuter localement un LLM avec OpenClaw, mais si vous utilisez une API LLM cloud (Claude, GPT, etc.), un VPS Linux à 4,99 $/mois suffit largement. La boucle d’orchestration OpenClaw reste en veille autour de ~180 Mo de RAM. Hostinger propose un déploiement OpenClaw en un clic sur les offres VPS KVM avec un coffre-fort d’identifiants chiffrés — consultez le guide de construction ci-dessus.

OpenClaw est-il sécurisé à déployer en 2026 ?

OpenClaw compte environ 1 100 avis de sécurité remontés, mais ~650 sont déjà résolus et une large part des autres sont des « rapports brouillons » générés par l’IA. Les vraies vulnérabilités se concentrent autour des ports admin exposés, des identifiants en clair, des évasions de sandbox shell et du spoofing de webhook — tous traitables par un peu de rigueur. Limitez l’accès du dashboard à localhost, utilisez des tunnels SSH, validez les secrets des webhooks et établissez une liste blanche de commandes shell.

Combien coûte le clonage de voix avec 11 Labs ?

Le clonage vocal professionnel sur 11 Labs nécessite l’abonnement Creator à partir de 22 $/mois. Il faut fournir au moins 30 minutes d’audio studio propre pour l’entraînement. La génération via l’API coûte 0,06 $ par tranche de 1 000 caractères sur le modèle Turbo v2.5, ou 0,12 $ sur Multilingual v3. Pour de courtes réponses en mémo vocal, Turbo coûte deux fois moins cher et la latence est d’environ 400 ms contre 2 secondes — la différence de qualité est imperceptible sur cette longueur.

Pourquoi Telegram exige-t-il du OGG Opus et pas du MP3 pour les mémos vocaux ?

Le point d’entrée sendVoice de Telegram n’affiche l’audio en vrai mémo vocal (vague arrondie et contrôles de vitesse de lecture) que si le fichier est en OGG avec le codec Opus, en mono, et fait moins de 1 Mo. Les fichiers MP3 sont affichés comme de simples pièces jointes audio avec interface de pochette d’album, ce qui annule l’effet « message vocal authentique ». Pour la conversion, utilisez ffmpeg -i reply.mp3 -c:a libopus -b:a 32k -ac 1 reply.ogg.

Travaillons ensemble

Vous souhaitez créer des systèmes d'IA, automatiser des workflows ou faire évoluer votre infrastructure technique ? Je serais ravi de vous accompagner.

Coffee cup

Vous avez apprécié cet article ?

Votre soutien m'aide à créer davantage de contenu technique approfondi, d'outils open source et de ressources gratuites pour la communauté des développeurs.

Sujets connexes

Engr Mejba Ahmed

À propos de l'auteur

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 10+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Discussion

Comments

0

No comments yet

Be the first to share your thoughts

Leave a Comment

Your email won't be published

8  x  7  =  ?

Continuer l'apprentissage

Articles connexes

Tout parcourir

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

Claude Code Expert · Online

👋

Hey there!

Quick Actions

WhatsApp Instant reply

Chat on WhatsApp

+880 1723 741224 · Instant reply

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

[email protected]

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support