Synthèse automatique
Skill qui pilote `tg`, un CLI en lecture seule parlant le protocole MTProto de Telegram, pour lister les conversations, récupérer des messages et télécharger des médias.
Points forts
- Lecture seule par conception : aucune commande n'envoie de message ni ne modifie les données Telegram, les seules écritures étant locales (sessions et médias téléchargés).
- Contourne les limites de l'API Bot en s'appuyant directement sur MTProto, ce qui permet de lire l'historique de comptes utilisateur.
- Sortie JSON compatible avec jq, ce qui facilite le filtrage et l'extraction automatisée.
- Identifiants api_id/api_hash stockés dans le trousseau système plutôt que dans des variables d'environnement, avec des garde-fous explicites sur les fichiers de session.
Limites
- L'authentification initiale (`tg auth`) est interactive (numéro de téléphone + code OTP) et ne peut pas être automatisée.
- Nécessite des identifiants api_id/api_hash créés manuellement sur my.telegram.org/apps.
- Aucune prise en charge de l'envoi de messages ou de la modification de groupes/canaux, ce qui exclut les cas d'usage d'automatisation en écriture.
- Les fichiers de session dans ~/.tg-mtproto-cli/sessions/ contiennent des clés d'authentification sensibles à ne pas exposer.
À utiliser lorsqu'il faut lire, exporter ou archiver des conversations et médias Telegram depuis un compte utilisateur, par exemple pour alimenter un pipeline d'analyse.
À éviter si l'objectif est d'envoyer des messages, de gérer des groupes ou d'automatiser des actions d'écriture sur Telegram, ou si aucune session authentifiée ne peut être créée sur la machine.
Analyse de sécurité
PrudenceThe skill is read-only by design and does not instruct destructive actions, but it handles highly sensitive personal data (Telegram messages, media) and requires storing API credentials in the keychain. Network and filesystem writes are limited to downloading media and session files, which is legitimate for the stated purpose but still involves risk if misused. Rating as caution due to the sensitive nature of the data and reliance on an external tool.
- •Accesses sensitive personal data (Telegram chats, media)
- •Stores API credentials in system keychain
- •Network access to Telegram servers
- •Downloads media files locally, which could be large or contain sensitive content
- •Uses a third-party CLI tool not widely audited
Exemples
List my Telegram groups and supergroups, then show me the last 50 messages from the one called 'Data Engineering'.Fetch the last 200 messages from @somechannel using tg and output them as JSON so I can grep for mentions of 'pricing'.Download all media from chat -1001234567890 into ./telegram-media using the tg CLI.name: tg-cli description: > Read-only Telegram CLI via MTProto. Lists chats, fetches messages, downloads media, manages local accounts/sessions. Does not send messages or modify Telegram data. Use when the user asks to read Telegram chats, fetch messages, download media, or automate Telegram data extraction. required_binaries:
- name: tg package: tg-mtproto-cli install: npm install -g tg-mtproto-cli registry: https://www.npmjs.com/package/tg-mtproto-cli source: https://github.com/cyberash-dev/tg-mtproto-cli
- name: jq optional: true install: brew install jq credentials:
- name: Telegram API credentials
fields: [api_id, api_hash]
obtain: https://my.telegram.org/apps
storage: system keychain (macOS Keychain / Windows Credential Vault / Linux Secret Service)
input: interactive prompt via
tg auth - name: Phone number + OTP
storage: not persisted
input: interactive prompt via
tg auth(one-time, creates session) runtime_permissions: network: outbound TCP to Telegram DC servers (MTProto protocol) filesystem:- read/write: ~/.tg-mtproto-cli/sessions/*.session (SQLite auth sessions)
- write: media files to --out dir or cwd (tg download only) keychain: read/write account metadata and API credentials shell: false browser: false
tg — Telegram CLI via MTProto
CLI tool for reading Telegram data directly via MTProto protocol. No Bot API, no limits.
Required binaries
| Binary | Install | Purpose |
|---|---|---|
| tg | npm install -g tg-mtproto-cli | Core CLI |
| jq (optional) | brew install jq or apt install jq | JSON filtering in workflow examples |
Source and provenance:
Verify after install:
tg --version
npm ls -g tg-mtproto-cli
Required credentials
| Credential | How to obtain | Storage |
|---|---|---|
| Telegram api_id + api_hash | my.telegram.org/apps | System keychain (macOS Keychain / Windows Credential Vault / Linux Secret Service) |
| Phone number + OTP code | Interactive prompt during tg auth | Not persisted; used once for session creation |
Credentials are entered interactively via tg auth. No environment variables required.
Runtime surface
| Resource | Access | Details |
|---|---|---|
| Network | Outbound TCP to Telegram DC servers | MTProto protocol, required for all commands |
| Session files | Read/write ~/.tg-mtproto-cli/sessions/*.session | SQLite databases with auth keys; created by tg auth |
| System keychain | Read/write | Stores api_id, api_hash, account metadata, default account |
| Filesystem | Write (only tg download) | Saves media to --out dir or current directory |
Guardrails
- The CLI is read-only by design — it has no commands to send messages, create chats, modify groups, or perform any write operations on Telegram. The only write targets are local: session files and downloaded media.
tg downloadwrites files only to the explicitly specified--outdirectory or cwd.- Session files contain sensitive auth material — do not read, copy, or expose
~/.tg-mtproto-cli/sessions/contents. - Do not log or display
api_id/api_hashvalues. - If
tg authis needed, inform the user — it requires interactive input (phone, OTP) and cannot be automated.
Chat identification
Chats can be referenced by:
- Username:
@usernameorusername - Numeric ID:
-1001234567890(groups/supergroups use negative IDs) - Phone:
+1234567890(for private chats)
To find a chat's numeric ID, use tg chats --json | jq '.[] | {id, title}'.
Commands reference
List chats
tg chats [--type private|group|supergroup|channel] [--limit 50] [--offset 0]
Read messages
tg messages <chat> [-n 100] [--all] [--topic <id>] [--after <datetime>]
| Flag | Description |
|---|---|
| -n <count> | Number of messages (default: 100) |
| --all | Entire history (shows progress) |
| --topic <id> | Forum topic (get IDs via tg topics <chat>) |
| --after <datetime> | Only messages after this time |
--after formats: 2026-02-22, 2026-02-22T10:00, 10:00 (today).
When --after + -n are combined: filter by date first, then take last N.
List forum topics
tg topics <chat>
Returns topic IDs needed for --topic flag.
Download media
tg download <chat> <messageId> [--out <dir>]
Downloads the media attachment from a specific message. Get message IDs from tg messages output (shown as #<id>).
Account management
tg auth # authenticate (interactive)
tg logout [alias] # remove session
tg accounts # list accounts
tg accounts rename <old> <new> # rename alias
tg default <alias> # set default
Global flags
| Flag | Effect |
|---|---|
| --account <alias> | Use specific account instead of default |
| --json | JSON output (for scripting/piping) |
JSON output
All commands support --json for structured output. Dates are ISO 8601.
tg chats --json
tg messages @chat -n 10 --json
tg download @chat 42 --json
Message JSON schema
{
"id": 42,
"chatId": -1001234567890,
"senderName": "John",
"text": "Hello",
"date": "2026-02-22T10:15:00.000Z",
"media": { "type": "photo", "fileName": null, "mimeType": "image/jpeg", "size": 262525 },
"replyToId": null,
"isOutgoing": false
}
media is null when no attachment. media.type: photo, video, document, audio, voice, sticker.
Common workflows
Extract text from a chat since a date
tg messages @channel --after 2026-02-01 --json | jq -r '.[].text // empty'
Find messages with photos
tg messages @chat -n 500 --json | jq '[.[] | select(.media.type == "photo")]'
Download all photos from recent messages
for id in $(tg messages @chat -n 50 --json | jq -r '.[] | select(.media.type == "photo") | .id'); do
tg download @chat "$id" --out ./photos
done
Read a forum topic
tg topics -1001234567890 # find topic ID
tg messages -1001234567890 --topic 42 -n 20
Multi-account usage
tg chats --account work
tg messages @chat -n 10 --account personal
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Runtime error (invalid args, chat not found) |
| 2 | Auth required (no account, expired session) — run tg auth |
Troubleshooting
- "No default account" → run
tg author use--account <alias> - "Session expired" → run
tg authto re-authenticate - Chat not found → use numeric ID from
tg chats --json - Empty messages → check chat ID sign (groups are negative)
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/telegram-cli-via-mtproto-mrwakfam' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/telegram-cli-via-mtproto-mrwakfam/download' --output '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md.part' && mv '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md.part' '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md' && test -s '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/tg-cli' && cp -R '.skill-downloads/telegram-cli-via-mtproto-mrwakfam' '.claude/skills/tg-cli'Codex
test -f '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md' && test -s '.skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/tg-cli' && cp -R '.skill-downloads/telegram-cli-via-mtproto-mrwakfam' '.agents/skills/tg-cli'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/telegram-cli-via-mtproto-mrwakfam'openskills read 'telegram-cli-via-mtproto-mrwakfam'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/telegram-cli-via-mtproto-mrwakfam/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.