Hear every voice in your language
실시간 AI 더빙과 양언어 자막을 제공, 무료·오픈소스·프라이버시 보장
Telegram을 Claude Code에 통합해 채팅·채널을 한 창에 표시하고, 읽지 않은 글을 AI가 요약합니다 API 키·봇 없이
Telegram inside Claude Code: read chats and channels in a pane, get AI summaries of unread posts. No API key, no bot.
플러그인TypeScript · PythonGitHub @34823직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.