telegram/SKILL.md
This skill should be used when fetching, searching, downloading, sending, editing, or publishing messages on Telegram. Use for queries like "show my Telegram messages", "search Telegram for...", "get unread messages", "send a message to...", "edit that message", "publish this draft to klodkot", or "add Telegram messages to my notes".
npx skillsauth add glebis/claude-skills telegramInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch, search, download, send, and publish Telegram messages with flexible filtering and output options.
Authentication must be configured in ~/.telegram_dl/. Run setup command to check status or get instructions:
python3 scripts/telegram_fetch.py setup
If not configured, follow these steps:
python telegram_dl.py and follow interactive promptspython3 scripts/telegram_fetch.py setupRun the script at scripts/telegram_fetch.py with appropriate commands:
# List available chats
python3 scripts/telegram_fetch.py list
# Get recent messages
python3 scripts/telegram_fetch.py recent --limit 20
# Search messages
python3 scripts/telegram_fetch.py search "meeting"
# Get unread messages
python3 scripts/telegram_fetch.py unread
To see available Telegram chats:
python3 scripts/telegram_fetch.py list
python3 scripts/telegram_fetch.py list --limit 50
python3 scripts/telegram_fetch.py list --search "AI"
python3 scripts/telegram_fetch.py list --search "claude code глеб + саши" --exact
Options:
--search "text": Filter by substring match (case-insensitive)--exact: Require exact name match instead of substring (use with --search)--limit N: Max chats to retrieve (default: 30, increase if chat not found)Important: If you're looking for a specific chat by exact name and it's not found, increase --limit to 100 or 200, as the chat may not be in the most recent 30.
Returns JSON with chat IDs, names, types, and unread counts.
To get recent messages:
# From all chats (last 50 messages across top 10 chats)
python3 scripts/telegram_fetch.py recent
# From specific chat
python3 scripts/telegram_fetch.py recent --chat "Tool Building Ape"
python3 scripts/telegram_fetch.py recent --chat-id 123456789
# With limits
python3 scripts/telegram_fetch.py recent --limit 100
python3 scripts/telegram_fetch.py recent --days 7
To search message content:
# Global search across all chats
python3 scripts/telegram_fetch.py search "project deadline"
# Search in specific chat
python3 scripts/telegram_fetch.py search "meeting" --chat-id 123456789
# Limit results
python3 scripts/telegram_fetch.py search "important" --limit 20
To get only unread messages:
python3 scripts/telegram_fetch.py unread
python3 scripts/telegram_fetch.py unread --chat-id 123456789
To send a message to a chat:
# Send to existing chat by name
python3 scripts/telegram_fetch.py send --chat "John Doe" --text "Hello!"
# Send to username (works even without prior conversation)
python3 scripts/telegram_fetch.py send --chat "@username" --text "Hello!"
# Reply to a specific message (use message ID from recent/search output)
python3 scripts/telegram_fetch.py send --chat "Tool Building Ape" --text "Thanks!" --reply-to 12345
# Send to a forum topic (for groups with topics enabled)
python3 scripts/telegram_fetch.py send --chat "Group Name" --text "Hello topic!" --topic 12
# Send with markdown formatting (converts **bold**, _italic_, [links](url) to Telegram HTML)
python3 scripts/telegram_fetch.py send --chat "@username" --text "**Bold** and _italic_ text" --markdown
Formatting (--markdown flag):
--markdown: text is sent as-is (plain text, no formatting)--markdown: converts markdown to Telegram HTML (**bold** -> bold, _italic_ -> italic, [text](url) -> link, ## Header -> bold, * item -> arrow list)--markdown when sending draft content that contains markdown formattingpublish command handles markdown conversion automatically; the send command does NOT unless --markdown is specifiedTo send images, documents, or videos:
# Send an image
python3 scripts/telegram_fetch.py send --chat "John Doe" --file "/path/to/image.jpg"
# Send document with caption
python3 scripts/telegram_fetch.py send --chat "@username" --file "report.pdf" --text "Here's the report"
# Reply with media
python3 scripts/telegram_fetch.py send --chat "Group" --file "screenshot.png" --reply-to 12345
Chat resolution order:
@username - Resolves Telegram username directlyReturns JSON with send status, resolved chat name, message ID, and file info (for media).
To edit an existing message:
# Edit a message by ID
python3 scripts/telegram_fetch.py edit --chat "@mentalhealthtech" --message-id 76 --text "Updated text"
# Edit in a group/channel
python3 scripts/telegram_fetch.py edit --chat "Mental health tech" --message-id 123 --text "Corrected content"
Note: You can only edit your own messages. Telegram formatting (bold, etc.) is preserved.
Returns JSON with edit status and message ID.
To download media files from a chat:
# Download last 5 attachments from a chat (default)
python3 scripts/telegram_fetch.py download --chat "Tool Building Ape"
# Download last 10 attachments
python3 scripts/telegram_fetch.py download --chat "Project Group" --limit 10
# Download to custom directory
python3 scripts/telegram_fetch.py download --chat "@username" --output "/path/to/folder"
# Download from specific message
python3 scripts/telegram_fetch.py download --chat "John Doe" --message-id 12345
Default output: ~/Downloads/telegram_attachments/
Returns JSON with download results (file names, paths, sizes).
To get messages from a specific forum thread (topics in groups):
# Fetch from thread 174 in Claude Code Lab
python3 scripts/telegram_fetch.py thread --chat-id -1003237581133 --thread-id 174
# Fetch with custom limit
python3 scripts/telegram_fetch.py thread --chat-id -1003237581133 --thread-id 174 --limit 50
# Save to file
python3 scripts/telegram_fetch.py thread --chat-id -1003237581133 --thread-id 174 -o ~/thread.md
# Append to daily note
python3 scripts/telegram_fetch.py thread --chat-id -1003237581133 --thread-id 174 --to-daily
# JSON output
python3 scripts/telegram_fetch.py thread --chat-id -1003237581133 --thread-id 174 --json
Messages are sorted newest first (reverse chronological order).
How to find thread ID:
https://t.me/c/CHAT_ID/THREAD_IDrecent command on the chat to see message IDs in threadsReturns markdown or JSON with all messages from the specified thread.
To publish a draft from the klodkot channel to Telegram:
# Dry run (preview without sending)
python3 scripts/telegram_fetch.py publish --draft "Channels/klodkot/drafts/20260122-anthropic-consciousness-question.md" --dry-run
# Publish to channel
python3 scripts/telegram_fetch.py publish --draft "Channels/klodkot/drafts/20260122-anthropic-consciousness-question.md"
Workflow:
video: field and wikilinksChannels/klodkot/attachments/ or Sources/published_date, telegram_message_iddrafts/ to published/Media handling:
video: filename.mp4[[filename.mp4]], [[image.png|alt text]]Safety:
--dry-run shows preview without sendingReturns: JSON with publish status, message ID, warnings (if any)
By default, outputs formatted markdown suitable for Claude to read and summarize.
Add --json flag for structured data:
python3 scripts/telegram_fetch.py recent --json
Add messages to today's daily note in the vault:
python3 scripts/telegram_fetch.py recent --to-daily
python3 scripts/telegram_fetch.py search "project" --to-daily
Appends to ~/Brains/brain/Daily/YYYYMMDD.md
Add messages to a specific person's note:
python3 scripts/telegram_fetch.py recent --chat "John Doe" --to-person "John Doe"
Creates or appends to ~/Brains/brain/{PersonName}.md
Save messages directly to file without consuming context tokens:
# Save 100 messages to markdown file
python3 scripts/telegram_fetch.py recent --chat "AGENCY: Community" --limit 100 -o ~/chat_archive.md
# Save with media files downloaded to same folder
python3 scripts/telegram_fetch.py recent --chat "Project Group" --limit 50 -o ~/project/archive.md --with-media
# Save search results to file
python3 scripts/telegram_fetch.py search "meeting" -o ~/meetings.md
Returns JSON with save status (file path, message count, media download results) - minimal token usage.
When user asks:
recent --limit 20recent --days 1search "project"unread + filter outputrecent --to-dailylistlist --search "X" --exact --limit 200send --chat "John" --text "Hello!"send --chat "@username" --text "..."send --chat "..." --text "Thanks!" --reply-to <id>send --chat "John" --file "/path/to/image.jpg"send --chat "..." --file "report.pdf" --text "Here's the report"send --chat "Group" --text "..." --topic 12download --chat "Tool Building Ape"download --chat "Project Group" --limit 10recent --chat "AGENCY: Community" --limit 100 -o ~/agency.mdrecent --chat "Group" -o ~/archive.md --with-mediaedit --chat "..." --message-id <id> --text "new text"edit --chat "..." --message-id 123 --text "corrected text"setupsetup (returns instructions if not configured)publish --draft "Channels/klodkot/drafts/...md"publish --draft "..." --dry-runThe script includes built-in rate limiting (0.1s between messages) and handles Telegram's FloodWaitError automatically with backoff.
Requires Python packages:
telethon - Telegram API clientpyyaml - YAML parsing for draft frontmatterInstall with: pip install telethon pyyaml
data-ai
--- name: disk-cleanup description: Scan and clean macOS caches, package-manager data, crash dumps, and app caches to reclaim disk space. Deterministic — a config registry (targets.json) plus two scripts (survey.py read-only, clean.py executor) do all the measuring and deleting; the agent only relays a compressed summary and makes the few human-judgment calls. IMPORTANT — use this skill whenever the user's request on macOS involves: freeing disk space, cleaning/clearing caches, "disk is full", "
development
Generate and edit images using Google's Gemini image generation models (Nano Banana family). Supports style presets, platform-specific sizing (YouTube/slides/blog), variants, image editing via inlineData, reference images for style transfer, and organized output with metadata. Default model is Nano Banana 2 (gemini-3.1-flash-image-preview). Key is auto-decrypted via SOPS.
development
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".