Resources
1Install
npx skillscat add glebis/claude-skills/telegram-post Install via the SkillsCat registry.
Telegram Post Skill
Create, preview, and send formatted Telegram posts from draft markdown files. Built for @klodkot and Gleb Kalinin's other Telegram channels.
Note: Channel configurations (footers, tags, language defaults) are specific to Gleb's channels. To use for your own channels, edit CHANNEL_CONFIG in scripts/post.py.
Configured channels: @klodkot, @mentalhealthtech, @toolbuildingape, @opytnymputem
When to Use
Use this skill when:
- User asks to create a draft for a Telegram channel
- User asks to "post to Telegram" or "send to saved messages" from a draft file
- User wants to preview a draft before sending
- Draft files in
Channels/*/drafts/need to be sent
Commands
create -- Create a new draft
# Default: klodkot channel
python3 scripts/post.py create "remotion-video-creation" --topic "Remotion Agent Skill" --source "https://example.com"
# Other channel
python3 scripts/post.py create "therapy-app-review" -c mental-health-tech --topic "Therapy apps"
# With video
python3 scripts/post.py create "demo-post" --video demo.mp4 --source "https://example.com"Creates Channels/{channel}/drafts/YYYYMMDD-{slug}.md with proper frontmatter. Returns file path and tags reference for the channel.
Options:
--channel, -c: Channel name (default: klodkot). Uselistto see all--topic, -t: Topic for frontmatter--source, -s: Source URL--video, -v: Video filename (just name, not path)--language, -l: Override channel default (ru/en)
send -- Send a draft
# Preview first (always do this)
python3 scripts/post.py send "Channels/klodkot/drafts/20260209-post.md" --dry-run
# Send to Saved Messages (default)
python3 scripts/post.py send "Channels/klodkot/drafts/20260209-post.md"
# Send to specific chat
python3 scripts/post.py send "draft.md" --chat "@klodkot"
python3 scripts/post.py send "draft.md" -c "Tool Building Ape"list -- List available channels
python3 scripts/post.py listReturns: klodkot, mental-health-tech, tool-building-ape, opytnym-putem with language and tags info.
Draft File Format
---
created_date: '[[YYYYMMDD]]'
type: draft
channel: klodkot
status: draft
language: ru
topic: Topic description
source: https://example.com
video: demo.mp4
---
## Post Title
Content with **bold** and *italic* and [links](url).
---
Second part (separate message).Video Path Resolution
The video: field should be just the filename (e.g., demo.mp4), NOT attachments/demo.mp4. Resolution order:
- Relative to draft file directory
../attachments/(sibling to drafts folder)Channels/klodkot/attachments/- Vault root
Markdown to Telegram HTML Conversion
| Markdown | Telegram |
|---|---|
## Header |
<b>Header</b> |
**bold** |
<b>bold</b> |
*italic* |
<i>italic</i> |
_italic_ |
<i>italic</i> |
[text](url) |
<a href> link |
* item / - item |
arrow format |
# Title |
stripped |
Safety
- Formatting check: If stray
*,**,#, or[]()remain after conversion, the script refuses to send and reportsformatting_warnings --dry-runpreviews without sending- Default target is Saved Messages, not channel -- prevents accidental publishes
Typical Workflow
# 1. Create draft
python3 scripts/post.py create "remotion-skills" --topic "Remotion" --source "https://..."
# 2. Edit the draft in Obsidian (fill in content, add tags from tags reference)
# 3. Preview
python3 scripts/post.py send "Channels/klodkot/drafts/20260211-remotion-skills.md" --dry-run
# 4. Send to saved messages for final review
python3 scripts/post.py send "Channels/klodkot/drafts/20260211-remotion-skills.md"
# 5. When ready, send to channel
python3 scripts/post.py send "Channels/klodkot/drafts/20260211-remotion-skills.md" -c "@klodkot"Post-Publish (automatic when sending to channel)
When target is a channel (@klodkot, @mentalhealthtech), after successful send:
- Updates frontmatter:
type: published,published_date,telegram_message_id - Moves file from
drafts/topublished/ - Adds entry to channel index (
klodkot.md)
Does NOT trigger for Saved Messages (default target) -- safe for preview sends.
Key Features
- HTML formatting via
parse_mode='html'(Telethon direct, not subprocess) - Video with caption on first message (not separate reply)
- Channel footers auto-appended (klodkot, mental-health-tech)
- Multi-part splitting by
---markers, respects 4096 char limit - Channel-aware draft creation with correct paths, language, tags reference
- Post-publish auto moves draft to published, updates frontmatter + index
Dependencies
- Uses
telegramskill credentials (~/.telegram_dl/) - Python 3.10+, telethon