Telegram News Skill (Read-Only)

Read Telegram channels and groups for financial news and market research using tdl (read-only).

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/telegram-reader.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit himself65/finance-skills/plugins/social-readers/skills/telegram-reader#main ~/.claude/skills/telegram-reader

For one project only, change the path to .claude/skills/telegram-reader.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Telegram News Skill (Read-Only)

Show the full text224 lines
namedescription
telegram-reader> Read Telegram channels and groups for financial news and market research using tdl (read-only). Use this skill whenever the user wants to read Telegram channels, export messages from financial Telegram groups, list their Telegram chats, search for news in Telegram channels, or gather market intelligence from Telegram. Triggers include: "check my Telegram", "read Telegram channel", "Telegram news", what's new in my Telegram channels", "export messages from", "list my Telegram chats", financial news on Telegram", "crypto Telegram", "market news Telegram", any mention of Telegram in context of reading financial news, crypto signals, or market research. This skill is READ-ONLY — it does NOT support sending messages, joining channels, or any write operations.

Telegram News Skill (Read-Only)

Reads Telegram channels and groups for financial news and market research using tdl, a Telegram CLI tool.

This skill is read-only. It is designed for financial research: reading channel messages, monitoring financial news channels, and exporting message history. It does NOT support sending messages, joining/leaving channels, or any write operations.


Step 1: Ensure tdl Is Installed

Current environment status:

!`(command -v tdl && tdl version 2>&1 | head -3 || echo "TDL_NOT_INSTALLED") 2>/dev/null`

If the status above shows a version number, tdl is installed — skip to Step 2.

If TDL_NOT_INSTALLED, install tdl based on the user's platform:

Platform Install Command
macOS / Linux curl -sSL https://docs.iyear.me/tdl/install.sh | sudo bash
macOS (Homebrew) brew install telegram-downloader
Linux (Termux) pkg install tdl
Linux (AUR) yay -S tdl
Linux (Nix) nix-env -iA nixos.tdl
Go (any platform) go install github.com/iyear/tdl@latest

Ask the user which installation method they prefer. Default to Homebrew on macOS, curl script on Linux.


Step 2: Ensure tdl Is Authenticated

Current auth status:

!`(tdl chat ls --limit 1 2>&1 >/dev/null && echo "AUTH_OK" || echo "AUTH_NEEDED") 2>/dev/null`

If AUTH_OK, skip to Step 3.

If AUTH_NEEDED, guide the user through login. Login requires interactive input — the user must enter their phone number and verification code manually.

Login methods

Method A: QR Code (recommended — fastest)

tdl login -T qr

A QR code will be displayed in the terminal. The user scans it with their Telegram mobile app (Settings > Devices > Link Desktop Device).

Method B: Phone + Code

tdl login -T code

The user enters their phone number, then the verification code sent to their Telegram app.

Method C: Import from Telegram Desktop

If the user has Telegram Desktop installed and logged in:

tdl login

This imports the session from the existing desktop client. The desktop client must be from the official website, NOT from the App Store or Microsoft Store.

Namespaces

By default, tdl uses a default namespace. To manage multiple accounts:

tdl login -n work -T qr      # Login to "work" namespace
tdl chat ls -n work           # Use "work" namespace for commands
Important login notes
  • Login is a one-time operation. The session persists on disk after successful login.
  • If login fails, ask the user to check their internet connection and try again.
  • Never ask for or handle Telegram passwords/2FA codes programmatically — always let the user enter them interactively.

Step 3: Identify What the User Needs

Match the user's request to one of the read operations below.

User Request Command Key Flags
List all chats/channels tdl chat ls -o json, -f "FILTER"
List only channels tdl chat ls -f "Type contains 'channel'" -o json
Export recent messages tdl chat export -c CHAT -T last -i N --all, --with-content
Export messages by time range tdl chat export -c CHAT -T time -i START,END --all, --with-content
Export messages by ID range tdl chat export -c CHAT -T id -i FROM,TO --all, --with-content
Export from a topic/thread tdl chat export -c CHAT --topic TOPIC_ID --all, --with-content
Search for a channel by name tdl chat ls -f "VisibleName contains 'NAME'" -o json
Chat identifiers

The -c flag accepts multiple formats:

Format Example
Username (with @) -c @channel_name
Username (without @) -c channel_name
Numeric chat ID -c 123456789
Public link -c https://t.me/channel_name
Phone number -c "+1 123456789"
Saved Messages -c "" (empty)

Step 4: Execute the Command

Listing chats
# List all chats
tdl chat ls

# JSON output for processing
tdl chat ls -o json

# Filter for channels only
tdl chat ls -f "Type contains 'channel'"

# Search by name
tdl chat ls -f "VisibleName contains 'Bloomberg'"
Exporting messages

Always use --all --with-content to get text messages (not just media):

# Last 20 messages from a channel
tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json

# Messages from a time range (Unix timestamps)
tdl chat export -c @channel_name -T time -i 1710288000,1710374400 --all --with-content -o /tmp/tdl-export.json

# Messages by ID range
tdl chat export -c @channel_name -T id -i 100,200 --all --with-content -o /tmp/tdl-export.json
Key rules
  1. Check auth first — run tdl chat ls --limit 1 before other commands to verify the session is valid
  2. Always use --all --with-content when exporting messages for reading — without these flags, tdl only exports media messages
  3. Use -o FILE to save exports to a file, then read the JSON — this is more reliable than parsing stdout
  4. Start with small exports — use -T last -i 20 unless the user asks for more
  5. Use filters on chat ls to help users find the right channel before exporting
  6. NEVER execute write operations — this skill is read-only; do not send messages, join channels, or modify anything
  7. Convert timestamps — when the user gives dates, convert to Unix timestamps for the -T time filter
Working with exported JSON

After exporting, read the JSON file and extract the relevant information:

# Export messages
tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json

# Read and process the export
cat /tmp/tdl-export.json

The export JSON contains message objects with fields like id, date, message (text content), from_id, views, and media metadata.


Step 5: Present the Results

After fetching data, present it clearly for financial research:

  1. Summarize key messages — highlight the most relevant news or market updates
  2. Include timestamps — show when each message was posted
  3. Group by topic — if multiple channels, organize by theme (macro, earnings, crypto, etc.)
  4. Flag actionable information — note breaking news, price targets, earnings surprises
  5. Provide channel context — mention which channel/group each message came from
  6. For channel lists, show channel name, member count, and type

Step 6: Diagnostics

If something isn't working:

Error Cause Fix
not authorized or session errors Not logged in or session expired Run tdl login -T qr to re-authenticate
FLOOD_WAIT_X Rate limited by Telegram Wait X seconds, then retry
CHANNEL_PRIVATE No access to channel User must join the channel in their Telegram app first
tdl: command not found tdl not installed Install using Step 1

Reference Files

  • references/commands.md — Complete tdl command reference for reading channels and exporting messages

Read the reference file when you need exact command syntax or detailed flag documentation.

1---
2name: telegram-reader
3description: >
4 Read Telegram channels and groups for financial news and market research using tdl (read-only).
5 Use this skill whenever the user wants to read Telegram channels, export messages from financial
6 Telegram groups, list their Telegram chats, search for news in Telegram channels, or gather
7 market intelligence from Telegram.
8 Triggers include: "check my Telegram", "read Telegram channel", "Telegram news",
9 "what's new in my Telegram channels", "export messages from", "list my Telegram chats",
10 "financial news on Telegram", "crypto Telegram", "market news Telegram",
11 any mention of Telegram in context of reading financial news, crypto signals, or market research.
12 This skill is READ-ONLY — it does NOT support sending messages, joining channels, or any write operations.
13---
14 
15# Telegram News Skill (Read-Only)
16 
17Reads Telegram channels and groups for financial news and market research using [tdl](https://github.com/iyear/tdl), a Telegram CLI tool.
18 
19**This skill is read-only.** It is designed for financial research: reading channel messages, monitoring financial news channels, and exporting message history. It does NOT support sending messages, joining/leaving channels, or any write operations.
20 
21---
22 
23## Step 1: Ensure tdl Is Installed
24 
25**Current environment status:**
26 
27```
28!`(command -v tdl && tdl version 2>&1 | head -3 || echo "TDL_NOT_INSTALLED") 2>/dev/null`
29```
30 
31If the status above shows a version number, tdl is installed — skip to Step 2.
32 
33If `TDL_NOT_INSTALLED`, install tdl based on the user's platform:
34 
35| Platform | Install Command |
36|----------|----------------|
37| macOS / Linux | `curl -sSL https://docs.iyear.me/tdl/install.sh \| sudo bash` |
38| macOS (Homebrew) | `brew install telegram-downloader` |
39| Linux (Termux) | `pkg install tdl` |
40| Linux (AUR) | `yay -S tdl` |
41| Linux (Nix) | `nix-env -iA nixos.tdl` |
42| Go (any platform) | `go install github.com/iyear/tdl@latest` |
43 
44Ask the user which installation method they prefer. Default to Homebrew on macOS, curl script on Linux.
45 
46---
47 
48## Step 2: Ensure tdl Is Authenticated
49 
50**Current auth status:**
51 
52```
53!`(tdl chat ls --limit 1 2>&1 >/dev/null && echo "AUTH_OK" || echo "AUTH_NEEDED") 2>/dev/null`
54```
55 
56If `AUTH_OK`, skip to Step 3.
57 
58If `AUTH_NEEDED`, guide the user through login. **Login requires interactive input** — the user must enter their phone number and verification code manually.
59 
60### Login methods
61 
62**Method A: QR Code (recommended — fastest)**
63 
64```bash
65tdl login -T qr
66```
67 
68A QR code will be displayed in the terminal. The user scans it with their Telegram mobile app (Settings > Devices > Link Desktop Device).
69 
70**Method B: Phone + Code**
71 
72```bash
73tdl login -T code
74```
75 
76The user enters their phone number, then the verification code sent to their Telegram app.
77 
78**Method C: Import from Telegram Desktop**
79 
80If the user has Telegram Desktop installed and logged in:
81 
82```bash
83tdl login
84```
85 
86This imports the session from the existing desktop client. The desktop client must be from the [official website](https://desktop.telegram.org/), NOT from the App Store or Microsoft Store.
87 
88### Namespaces
89 
90By default, tdl uses a `default` namespace. To manage multiple accounts:
91 
92```bash
93tdl login -n work -T qr # Login to "work" namespace
94tdl chat ls -n work # Use "work" namespace for commands
95```
96 
97### Important login notes
98 
99- Login is a **one-time** operation. The session persists on disk after successful login.
100- If login fails, ask the user to check their internet connection and try again.
101- **Never ask for or handle Telegram passwords/2FA codes programmatically** — always let the user enter them interactively.
102 
103---
104 
105## Step 3: Identify What the User Needs
106 
107Match the user's request to one of the read operations below.
108 
109| User Request | Command | Key Flags |
110|---|---|---|
111| List all chats/channels | `tdl chat ls` | `-o json`, `-f "FILTER"` |
112| List only channels | `tdl chat ls -f "Type contains 'channel'"` | `-o json` |
113| Export recent messages | `tdl chat export -c CHAT -T last -i N` | `--all`, `--with-content` |
114| Export messages by time range | `tdl chat export -c CHAT -T time -i START,END` | `--all`, `--with-content` |
115| Export messages by ID range | `tdl chat export -c CHAT -T id -i FROM,TO` | `--all`, `--with-content` |
116| Export from a topic/thread | `tdl chat export -c CHAT --topic TOPIC_ID` | `--all`, `--with-content` |
117| Search for a channel by name | `tdl chat ls -f "VisibleName contains 'NAME'"` | `-o json` |
118 
119### Chat identifiers
120 
121The `-c` flag accepts multiple formats:
122 
123| Format | Example |
124|--------|---------|
125| Username (with @) | `-c @channel_name` |
126| Username (without @) | `-c channel_name` |
127| Numeric chat ID | `-c 123456789` |
128| Public link | `-c https://t.me/channel_name` |
129| Phone number | `-c "+1 123456789"` |
130| Saved Messages | `-c ""` (empty) |
131 
132---
133 
134## Step 4: Execute the Command
135 
136### Listing chats
137 
138```bash
139# List all chats
140tdl chat ls
141 
142# JSON output for processing
143tdl chat ls -o json
144 
145# Filter for channels only
146tdl chat ls -f "Type contains 'channel'"
147 
148# Search by name
149tdl chat ls -f "VisibleName contains 'Bloomberg'"
150```
151 
152### Exporting messages
153 
154Always use `--all --with-content` to get text messages (not just media):
155 
156```bash
157# Last 20 messages from a channel
158tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json
159 
160# Messages from a time range (Unix timestamps)
161tdl chat export -c @channel_name -T time -i 1710288000,1710374400 --all --with-content -o /tmp/tdl-export.json
162 
163# Messages by ID range
164tdl chat export -c @channel_name -T id -i 100,200 --all --with-content -o /tmp/tdl-export.json
165```
166 
167### Key rules
168 
1691. **Check auth first** — run `tdl chat ls --limit 1` before other commands to verify the session is valid
1702. **Always use `--all --with-content`** when exporting messages for reading — without these flags, tdl only exports media messages
1713. **Use `-o FILE`** to save exports to a file, then read the JSON — this is more reliable than parsing stdout
1724. **Start with small exports** — use `-T last -i 20` unless the user asks for more
1735. **Use filters on `chat ls`** to help users find the right channel before exporting
1746. **NEVER execute write operations** — this skill is read-only; do not send messages, join channels, or modify anything
1757. **Convert timestamps** — when the user gives dates, convert to Unix timestamps for the `-T time` filter
176 
177### Working with exported JSON
178 
179After exporting, read the JSON file and extract the relevant information:
180 
181```bash
182# Export messages
183tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json
184 
185# Read and process the export
186cat /tmp/tdl-export.json
187```
188 
189The export JSON contains message objects with fields like `id`, `date`, `message` (text content), `from_id`, `views`, and media metadata.
190 
191---
192 
193## Step 5: Present the Results
194 
195After fetching data, present it clearly for financial research:
196 
1971. **Summarize key messages** — highlight the most relevant news or market updates
1982. **Include timestamps** — show when each message was posted
1993. **Group by topic** — if multiple channels, organize by theme (macro, earnings, crypto, etc.)
2004. **Flag actionable information** — note breaking news, price targets, earnings surprises
2015. **Provide channel context** — mention which channel/group each message came from
2026. **For channel lists**, show channel name, member count, and type
203 
204---
205 
206## Step 6: Diagnostics
207 
208If something isn't working:
209 
210| Error | Cause | Fix |
211|-------|-------|-----|
212| `not authorized` or session errors | Not logged in or session expired | Run `tdl login -T qr` to re-authenticate |
213| `FLOOD_WAIT_X` | Rate limited by Telegram | Wait X seconds, then retry |
214| `CHANNEL_PRIVATE` | No access to channel | User must join the channel in their Telegram app first |
215| `tdl: command not found` | tdl not installed | Install using Step 1 |
216 
217---
218 
219## Reference Files
220 
221- `references/commands.md` — Complete tdl command reference for reading channels and exporting messages
222 
223Read the reference file when you need exact command syntax or detailed flag documentation.
224 

Discussion

Alternatives

Also in Market sizingSee all 277 in Product →