Hear every voice in your language
Live AI dubbing and bilingual subtitles for any video. Free, open source and private by design.
Telegram inside Claude Code: read chats and channels in a pane, get AI summaries of unread posts. No API key, no bot.
Translation pending
PluginsTypeScript · PythonGitHub @34823Self-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Installable projects can be verified without a deployment domain. Use GitHub sign-in for a personal repository, or the repository verification file above for an organization repository.
Ask about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗The Python backend also has an independent frontend: python terminal.py (use the Python environment
where Playwright is installed). It uses the same TG_PANE_DATA configuration and Telegram session.
No Claude process or AI model is required. The original Claude plugin remains unchanged.
Folders → chats → history: arrow keys/Enter or mouse, Esc goes back, / filters chat names,
r refreshes, wheel/PgUp/PgDown scroll history, i writes, Enter on a message replies.
Sending requires a second explicit y confirmation; Esc cancels. Private history is never marked read
merely by viewing it. L opens the existing QR/password login flow. q exits.
This is a basic frontend, not full plugin parity: message reactions/edit/delete/forward,
media viewing, digests and message-text search remain available only in the original plugin.
Requests refresh at most once a minute while open, FLOOD_WAIT pauses for ten minutes,
and an unresponsive CDP browser is restarted at most once every five minutes.
No failed send is automatically retried. Offline UI tests: python -m unittest discover -s tests -p 'test_*.py'.
Read your Telegram chats and channels beside the conversation, and ask Claude to retell the unread posts by topic. No API key, no bot — it works through your own logged-in Telegram Web.
Quick start (details in Install):
/plugin install tg-pane --marketplace 34823/tg-pane
Then /tg-pane, scan the QR code with your phone — done.
/clear and after a restart. [Private 3] [Categories 41] [Refresh] cache 15:48
[← Folders] Interesting 34 [Summary] [Mark all read]
Markets News (7) 09:00 Club chat [Mark read (2)] [Summary]
Club chat (2) 08:12 ▲ older
Markets Wed — 8.10 —
… Pete: who's coming to training? 08:12
There is no Telegram API key and no bot: the mod drives Telegram Web (web.telegram.org/k) logged in to your account, in a headless Chromium on your machine, and reads it through Telegram Web's own internal API — the same calls its interface makes. Nothing leaves your machine except what Telegram Web itself sends. The browser is touched only while the pane is open and in use (counters once a minute, the open chat once a minute, a pause after 10 idle minutes and whenever Telegram answers FLOOD_WAIT). The mod writes to Telegram only when you press a button for it: a message or a reply you type, an edit or a delete of your own message, a reaction, a forward.
The backend is a few Python scripts in backend/ (Playwright). They also work on their own:
| Script | What it does |
|---|---|
tgbrowser.py start|stop|status|login | the headless Chromium; login prints the QR code in the terminal and asks for the cloud password |
tgcache.py [folder…] | unread counters and previews of your folders into the cache |
tgchat.py <peer> [N] [--read] [--before|--around|--after <mid>] [--query <words>] | a chat's history as JSON; --query searches inside the chat |
tgmsg.py --peer <peer> [--reply <mid>] "<text>" | send one message (as an answer, if asked), check it went out |
tgsearch.py "<words>" [N] | search the text of messages in all chats, JSON |
tgact.py react|edit|delete|forward|transcribe <peer> <mid> [value] | one action on one message, checked by reading it again |
tgmedia.py <peer> <mid> | downloads one message's picture (photo, image, video preview) to the data folder as PNG, only when you press «open» |
tgunread.py "<folder>" | --peer <id> | --private [--mark-only] [--since day|week|month] | unread posts as text for a model; channels and groups are marked read, private chats (and --private) never; --since — everything posted in the period, nothing marked read |
The plugin is a pane (hooks/register.tsx) plus the Python scripts in backend/ (Playwright).
python3) with one of the scripts in backend/
(tgbrowser.py, tgcache.py, tgchat.py, tgmsg.py, tgunread.py, tgsearch.py, tgact.py, tgmedia.py, tgview.py) and its arguments; the command is
<python> <plugin folder>/backend/<script> <args>, no shell. tgbrowser.py starts a headless Chromium
(Playwright's, with a debugging port on 127.0.0.1:9444 only) with its own profile in the data folder.
Nothing else is started.web.telegram.org/k) in that browser, logged in to your account: folders, unread counters,
chat history, and the browser profile — which is your Telegram session. The pane also reads HOME (only to find the
default data folder) and keeps its cache, lock and config.json in the data folder. It does not read your project files.$.prompt.submit)
that tells Claude to run tgunread.py and retell the result (the unread choice for a channel or a group also marks it read; day / week / month never marks anything; private chats have no summary). The unread posts of that folder or chat then become part of the
Claude Code conversation and go to the model like any other text there. Press nothing, and nothing is passed on.session.start registers the /tg-pane command and starts timers that run only while the pane is open;
command.run for tg-pane opens the pane; session.end / classic.SessionStart / ui.close reopen or close it after /clear;
ui.render draws it. No hook changes a prompt, a tool call, a setting or another plugin's behaviour.In Claude Code (a terminal session):
/plugin install tg-pane --marketplace 34823/tg-pane
Answer y to add the marketplace, pick a scope, set the options (all have defaults).
Python with Playwright and its Chromium (once):
python3 -m pip install playwright
python3 -m playwright install chromium
Another Python (a venv) — put its path into the Python option (/config).
/tg-pane. The first time it starts the browser and shows a QR code: Telegram on your phone → Settings →
Devices → Link Desktop Device, and scan it. If the account has a cloud password, the pane shows the command to
run in a terminal (the password is typed there, never into the pane).
/config)| Option | Default | |
|---|---|---|
| Python | python3 | the Python that has Playwright |
| Data folder | ~/.local/share/tg-pane | browser profile (your Telegram session — keep it private), cache, lock; config.json there may set port (9444) and tz for the scripts run by hand |
| Private chats folder | empty | a Telegram folder for the Private tab; empty — every chat with a person or a bot |
| Language | en | en or ru, the pane and summaries |
| Mark channels read on open | on | as Telegram does; private chats and groups are never marked read by just looking |
| Time zone | system | IANA name for message times; empty and the system is on UTC — the pane asks once |
--no-sandbox.claude plugin validate .
claude plugin test .
claude --plugin-dir .
If it is useful, a ⭐ on the repo helps others find it (contributing, security). Ideas and questions — Discussions; bugs — Issues (a 👍 on an issue shows what matters most).
MIT license.