Agent 智能体

Reel-watcher-telegram-Agent|Telegram 短视频解析与本机构建智能体

Reel-watcher-telegram-Agent

在自有电脑上运行的 Telegram 机器人,解析 Instagram、TikTok、YouTube 视频中的工具与命令,并在手机逐步批准下于本机规划与构建。

获取与使用

需要部署

按官方资料自行安装或部署

使用难度待核验
国内可用性待核验

2026-11-08 更新 · 本站尚未实测

项目介绍

Agent 智能体 · 2026-11-08 更新 · 本站尚未实测

Reel-watcher-telegram-Agent(README 中称 Reel Agent)是一个运行在用户自己电脑上的 Telegram 机器人。按 README 描述,它接收 Instagram reel、TikTok、YouTube 链接或截图,转录音频、对画面做 OCR,抽取视频中出现的工具、链接、仓库和命令,再由本地或兼容 OpenAI 接口的模型生成摘要,并可在用户手机逐条批准的前提下,在本机规划与构建。

需要先说明一个定位问题:它确实是 AI 智能体类项目(README 与仓库 topics 均使用 ai-agent 表述),但它的核心形态是自托管 Telegram 机器人 + 视频解析 Skill,而非 MCP 服务器。本次采集的 mcp_config、server_config 均为 GitHub HTTP 404,未取得任何 MCP 端点资料,因此不应把它当作 MCP 服务收录。

待核查说明

本文所述功能均来自 README 与仓库元数据,未进行实际安装与运行测试;未取得 MCP 配置与服务器配置资料,不对其 MCP 能力作任何判断。

核心能力

点击能力名称查看输入、输出和原文依据。

  • 视频解析:README 称使用 ffmpeg 抽帧、faster-whisper 转写、RapidOCR 或 Tesseract 识别屏幕文字,并通过 extract.py 抽取命令、仓库、包、MCP 服务器与链接及其出现位置。
  • 摘要生成:使用任意 OpenAI 兼容服务(Ollama、llama.cpp、LM Studio、vLLM)撰写摘要;可选接入 Gemini 观看带声音的整段视频。
  • 真实性核验:/deeper N 通过 GitHub、npm、PyPI 公开 API 查询视频中提到的仓库与包。
  • 规划与构建:/plan N 生成计划,/build N [model] 在独立 git 仓库目录中执行;据 README,每条 shell 命令都先发到手机等待 /yes、/no 或 /always。
  • 提醒与库管理:/remind、/todo、/find、/save 等命令。
  • 云端接管(可选):README 称可用 Cloudflare Worker 在电脑离线时接管同一机器人,属可选功能。

实际应用场景

适用场景

适合希望把刷到的短视频教程转成可执行步骤、并愿意在自己机器上逐步审批命令的个人用户;也适合只使用视频解析 Skill 做资料归纳的场景。不适用于需要多人协作、企业权限管理或完全托管云服务的场景——README 未提供这类能力。

安装与接入

README 给出两条主要路径。

其一,使用开放模型、任意操作系统:需要 Python 3.11+、Git、Ollama(或任意 OpenAI 兼容服务)以及手机上的 Telegram,README 标注无需 API Key。原文命令为:

完整安装步骤与环境变量配置请参阅原仓库 README;本页不提供未经逐项核对的组合命令。

首次运行后需在 .env 中配置 TELEGRAM_BOT_TOKEN,并与机器人完成配对。

其二,Windows + Claude Code:README 称需要 Windows 10 或 11、Claude Pro 或 Max 订阅,安装命令为 winget install OpenJS.NodeJS.LTS 后执行 npx reel-agent。

另有独立使用的视频解析脚本 python .claude/skills/reel-watch/scripts/reel.py "<链接或文件>"。注意:README 提到以 Claude Code 插件和 OpenClaw skill 形式安装,但这些命令属于第三方客户端生态,本次未单独核验其可用性,待核查。

使用条件与限制

是否需要部署
需自行准备运行环境,具体要求见正文
是否需要注册
账号和认证要求见正文;未明确说明的项目仍待核验
是否需要 API Key
待核验
费用与额度
费用边界见正文,项目许可不代表模型或托管服务免费
所需权限
待核验
许可证与服务条款
待核验

权限费用与限制

  • 费用:README 的 FAQ 称代码采用 MIT、配合开放模型运行在本地时不收费;但 Gemini 免费额度、Claude Pro/Max 订阅、Codex 使用 OpenAI 账户、Cloudflare 免费计划等均依赖第三方,其当前价格与配额需向官方核验,本文不给出具体价格。
  • 权限:机器人只响应已配对的单个 Telegram 账号;构建过程中的 shell 命令需手机逐条批准,README 明确声明不存在无人值守执行模式。
  • 数据流向:使用本地模型时数据留在本机;若添加 Gemini 密钥,视频会发往 Google,README 提示免费额度数据可能被用于改进产品;选择 Claude 或 Codex 时相关请求会发往 Anthropic 或 OpenAI。
  • 平台限制:README 称 python reelbot.py 可在任意系统运行完整机器人,而 Claude Code 调度器(.\bot、setup.py、开机自启)目前仅限 Windows,macOS/Linux 移植见 issue #13。国内网络对 Telegram、Gemini、Cloudflare 的可达性未在资料中说明,待核查。

国内使用情况

网友核验 用户经验分享

与站长实测独立,不代表官方认证或本站已实测。

我要核验
0 位参与者0 份有效分项记录

最近核验:暂无有效核验。参与人数按当前项目有效身份去重;不同核验项分别统计,不合并成用户总结果。仅统计审核通过且未过期的记录。

分项统计、有效期与样本量
核验项目有效人数成功 / 部分 / 失败 / 无法判断成功率最近核验 / 有效期
官方网站访问00 / 0 / 0 / 0样本不足暂无 / 7 天
GitHub 仓库访问00 / 0 / 0 / 0样本不足暂无 / 7 天
安装与运行00 / 0 / 0 / 0样本不足暂无 / 30 天
官方服务国内连接 / MCP 连接00 / 0 / 0 / 0样本不足暂无 / 30 天
国内网络情况00 / 0 / 0 / 0样本不足暂无 / 7 天
国内模型兼容性00 / 0 / 0 / 0样本不足暂无 / 30 天
自定义 API00 / 0 / 0 / 0样本不足暂无 / 30 天
海外服务依赖
00 / 0 / 0 / 0样本不足暂无 / 30 天
海外账号要求
00 / 0 / 0 / 0样本不足暂无 / 30 天
中文界面
00 / 0 / 0 / 0样本不足暂无 / 30 天
客户端兼容性00 / 0 / 0 / 0样本不足暂无 / 30 天
账号及费用信息
00 / 0 / 0 / 0样本不足暂无 / 30 天

成功率 = 成功 ÷(成功 + 部分成功 + 失败);无法判断不计入分母。至少 5 份可判断结果才显示成功率。账号、费用、海外依赖与语言等事实项,成功表示核查结论与资料吻合,具体观察另行统计;不表示免费或没有海外依赖。不同网络、客户端和版本的结果不能直接等同。

最近有效核验

暂无审核通过且未过期的网友核验。欢迎提交真实使用记录。

查看全部有效核验 →

国内实测状态:国内可用性待核验。协议兼容和官方资料说明不等于国内网络可用。

官方网站访问
尚未实测 待核验
GitHub 仓库访问
尚未实测 待核验
官方服务国内连接
尚未实测 待核验
国内网络情况
尚未实测 待核验
国内模型兼容性
尚未实测 待核验
自定义 API
尚未实测 待核验
海外服务依赖
尚未实测 待核验
海外账号要求
尚未实测 待核验
中文界面
尚未实测 待核验
国内最后核验时间
尚未实测

许可与国内使用

仓库 LICENSE 文件为 MIT License,允许使用、修改与分发,需保留版权与许可声明。项目声明与 Anthropic、Google、Cloudflare、Telegram 均无关联。

国内使用方面,README 未提供任何镜像、代理或本地化说明;Telegram 机器人注册、视频源抓取(yt-dlp)以及可选的 Gemini、Cloudflare、Claude 服务在境内是否可用,均待核验,不应假定可直接使用。建议先在可访问上述服务的环境中完成部署与配对验证,再评估实际可行性。

项目资料与来源

官方网站 ↗

GitHub 仓库 ↗

官方文档 ↗

字段依据与待核验事项

access:来源确认 · git clone https://github.com/HNF-FRN/Reel-watcher-telegram-Agent.git reel-agent && cd reel-agent

project_type:来源确认 · Reel Agent is a Telegram bot that runs on your own computer.

原始 README(折叠技术参考)
<p align="center">
  <img src="docs/assets/banner.png" alt="Reel Agent: send a reel from your phone, get a breakdown in a minute, plan it, build it, and approve every step." width="100%">
</p>

<p align="center">
  <a href="https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/actions/workflows/tests.yml"><img alt="tests" src="https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/actions/workflows/tests.yml/badge.svg"></a>
  <img alt="Windows, macOS, Linux" src="https://img.shields.io/badge/Runs%20on-Windows%20%7C%20macOS%20%7C%20Linux-141414?style=flat-square">
  <img alt="Python 3.11+" src="https://img.shields.io/badge/Python-3.11%2B-141414?style=flat-square">
  <img alt="Telegram bot" src="https://img.shields.io/badge/Interface-Telegram-141414?style=flat-square">
  <img alt="Open models" src="https://img.shields.io/badge/Models-open%20(Ollama)%20or%20Claude%20%2F%20Gemini-141414?style=flat-square">
  <img alt="MIT license" src="https://img.shields.io/badge/License-MIT-141414?style=flat-square">
</p>

<p align="center">
  <a href="#quick-start">Quick start</a> ·
  <a href="#the-open-core">The open core</a> ·
  <a href="#how-it-works">How it works</a> ·
  <a href="#when-your-pc-is-off">When your PC is off</a> ·
  <a href="#commands">Commands</a> ·
  <a href="docs/Reel%20Agent%20Setup%20Guide.pdf">Setup guide (PDF)</a> ·
  <a href="#privacy-and-safety">Privacy</a> ·
  <a href="#faq">FAQ</a> ·
  <a href="https://hnf-frn.github.io/Reel-watcher-telegram-Agent/">Website</a>
</p>

<p align="center">
  <a href="https://github.com/ebertti/awesome-telegram"><img alt="Featured in awesome-telegram" src="https://img.shields.io/badge/Featured%20in-awesome--telegram-fc60a8?style=flat-square&logo=awesomelists&logoColor=white"></a>
  <a href="https://github.com/slavakurilyak/awesome-ai-agents#reel-agent"><img alt="Featured in awesome-ai-agents" src="https://img.shields.io/badge/Featured%20in-awesome--ai--agents-fc60a8?style=flat-square&logo=awesomelists&logoColor=white"></a>
  <a href="https://github.com/Jenqyang/Awesome-AI-Agents"><img alt="Featured in Awesome-AI-Agents" src="https://img.shields.io/badge/Featured%20in-Awesome--AI--Agents-fc60a8?style=flat-square&logo=awesomelists&logoColor=white"></a>
</p>

---

> **Saw an AI tool in a reel and thought "I should set that up"?** Forward the reel to your bot. It tells you what the video really shows, then builds it on your PC while you approve every step from your phone.

**Reel Agent** is a Telegram bot that runs on your own computer. Send it an Instagram reel, a TikTok, a YouTube link or a screenshot. It watches the video, tells you exactly what it shows (the tools, links, repos and commands), and can plan and build it on your computer with the model you choose, asking you on your phone before it runs a single command.

It works entirely with open software: Whisper hears the video, OCR reads the screen, a local model (Ollama or any OpenAI-compatible server) writes the summary and does the plans and builds, and a plain Python bot routes your messages. No API key and no hosted AI service: apart from Telegram and fetching the video, everything happens on your machine. If you have them, Gemini, Claude Code and Codex plug in as options, and an optional cloud stand-in keeps the bot answering while your PC is off.

<table>
<tr>
<td width="46%" valign="top">
<img src="docs/assets/chat-demo.gif" alt="A Telegram conversation playing out: a reel link, the bot's breakdown card with one-tap next steps, a tapped build command, an approval request for 'git init', and the yes." width="100%">
</td>
<td valign="top">

### What it does

- **Watches any reel, on your computer.** Whisper transcribes it, OCR reads every screen, and the exact commands, repos, packages and links are pulled out with where they appeared. A local model writes the summary. Optional: Gemini watches with sound.
- **Never invents a command.** Everything quoted comes from OCR and the transcript, not from a model, and risky commands (`curl … | sh`, `--dangerously-…`) are flagged.
- **Checks before you build.** `/deeper 4` looks up every repo and package the reel names on GitHub, npm and PyPI: real, maintained, licensed?
- **Builds from your phone.** `/plan 4`, then `/build 4 local`. Each build lives in its own git repository, so `/diff` and `/undo` always work.
- **Asks before every command.** You get the exact command and answer `/yes 4`, `/no 4 <reason>` or `/always 4`.
- **Lets you pick the model.** An open model on your computer (`local`), or Haiku, Sonnet, Opus, Fable or Codex, per task or per build.
- **Reminds you.** `/remind tomorrow 9:00 …` pings your phone on time.
- **Keeps going when your PC is off.** Optional and free: a Cloudflare Worker takes over the same bot within a minute or two, and hands it back when the PC starts. [How](#when-your-pc-is-off).

</td>
</tr>
</table>

## Quick start

### Open models, any OS

**You need:** Python 3.11+, Git, [Ollama](https://ollama.com) (or any OpenAI-compatible server: llama.cpp, LM Studio, vLLM) and Telegram on your phone. No Claude, no API key.

```bash
git clone https://github.com/HNF-FRN/Reel-watcher-telegram-Agent.git reel-agent && cd reel-agent
pip install -r requirements.txt -r requirements-open.txt   # video download, ffmpeg, Whisper, OCR
ollama pull qwen3:8b                                        # writes summaries, plans and builds
echo "TELEGRAM_BOT_TOKEN=<token from @BotFather>" >> .env   # on Windows, add this line to .env in an editor
python reelbot.py
```

Message your bot: it answers with a pairing code. Run `python reelbot.py pair <code>`, then send `/menu` and a reel. Plans and builds use the open model when Claude Code isn't installed (`/model build local` makes it the default anyway). A vision model such as `qwen2.5vl:7b` also looks at the frames when it writes the summary; settings are in [`.env.example`](.env.example).

### Windows, with Claude Code

**You need:** Windows 10 or 11, a [Claude](https://claude.ai) Pro or Max plan, and Telegram on your phone. Claude Code becomes the dispatcher (plain-English requests, research agents) and builds with Claude; everything above still works with it. The full walkthrough, with screenshots of every step, is in the **[setup guide (PDF)](docs/Reel%20Agent%20Setup%20Guide.pdf)**.

```powershell
winget install OpenJS.NodeJS.LTS     # skip if you have Node.js; then open a NEW PowerShell window
npx reel-agent
```

That one command does the rest, asking before each change:

1. **Tools:** installs Python, Git and Claude Code if they're missing, and signs you in to Claude.
2. **Download:** gets Reel Agent into `~/reel-agent` (or updates it).
3. **Guided setup:** your bot token from [@BotFather](https://t.me/BotFather) (`/newbot`), a Gemini key, packages, reminders and start-at-login.
4. **Start and pair:** starts the bot, waits for your first Telegram message and approves your account from the code the bot sends you.

Send `/menu` from your phone. That's it. Later, `npx reel-agent status`, `update` or `doctor` work from any terminal.

<details>
<summary>Prefer to do it by hand?</summary>

```powershell
winget install Python.Python.3.13 OpenJS.NodeJS.LTS Git.Git
irm https://claude.ai/install.ps1 | iex          # Claude Code; run `claude` once to sign in
git clone https://github.com/HNF-FRN/Reel-watcher-telegram-Agent.git reel-agent
cd reel-agent
.\setup                                           # guided setup
.\bot start                                       # a window opens; keep it open
```

Message your bot; it replies with a pairing code. In the bot window, type `/telegram:access pair <code>`, then `/telegram:access policy allowlist`.

</details>

> [!TIP]
> Optional: add a free Gemini key from [Google AI Studio](https://aistudio.google.com/apikey) when setup asks for it. Gemini then watches the whole video with sound, which helps with videos that show more than they say or write.

### Just the video watcher (Windows, macOS, Linux)

The watcher works on its own, without the bot. From a terminal:

```bash
pip install -r requirements.txt -r requirements-open.txt
python .claude/skills/reel-watch/scripts/reel.py "<reel, TikTok, YouTube or X link, or a video file>"
```

It prints the breakdown and saves it, with the frames and `manifest.json` (every link, repo and command with where it was seen), under `reels/`. `npx reel-agent watch <link>` does the same. In Claude Code it is also a plugin (`/plugin marketplace add HNF-FRN/Reel-watcher-telegram-Agent`, then `/plugin install reel-watch@reel-agent`), and on OpenClaw a skill (`openclaw skills install @hnf-frn/reel-watch`, [ClawHub](https://clawhub.ai/hnf-frn/skills/reel-watch)). Set `GEMINI_API_KEY` if you want Gemini to watch instead.

## The open core

Every step has an open path that runs on your computer; the closed services are optional add-ons.

| Step | Open, on your computer | Optional |
|---|---|---|
| Talk to you | [`reelbot.py`](.claude/skills/reel-watch/scripts/reelbot.py): Telegram long polling, fixed command routing, no model in the loop | A Claude Code session as dispatcher |
| Watch a video | [`reel.py`](.claude/skills/reel-watch/scripts/reel.py) + [`analyze.py`](.claude/skills/reel-watch/scripts/analyze.py): ffmpeg frames, faster-whisper, RapidOCR or Tesseract ([`ocr.py`](.claude/skills/reel-watch/scripts/ocr.py)) | Gemini watches with sound |
| Pull out what to act on | [`extract.py`](.claude/skills/reel-watch/scripts/extract.py): commands, repos, packages, MCP servers, links, gated offers, risky commands; no model, so nothing is invented | |
| Summarise | any OpenAI-compatible server ([`llm.py`](.claude/skills/reel-watch/scripts/llm.py)): Ollama, llama.cpp, LM Studio, vLLM | |
| Check what it names | [`verify.py`](.claude/skills/reel-watch/scripts/verify.py): GitHub, npm and PyPI public APIs | |
| Plan and build | [`agent.py`](.claude/skills/reel-watch/scripts/agent.py): a small tool-calling agent for open models, behind [`runner.py`](.claude/skills/reel-watch/scripts/runner.py)'s phone approvals | Claude Code, Codex |
| Remind | [`remind.py`](reminders/remind.py) | Windows Task Scheduler, cloud stand-in |

**Tested in public CI on every push** ([tests.yml](.github/workflows/tests.yml)):

- unit tests on Windows, macOS and Linux;
- the whole bot, end to end, against a fake Telegram and a fake model: pairing, a screenshot watched and answered with a card, a plan, and a build whose command waits for `/yes` from the "phone";
- the open engine on a generated video (on-screen commands, a voice-over), with Tesseract and with RapidOCR;
- the same with a real open-weight model on the runner's CPU (`qwen2.5:3b` through Ollama), which writes the summary and then builds and runs a script through the approval flow.

Each run uploads the breakdowns and the build log it produced, so you can read exactly what came out.

## How it works

One **dispatcher** receives every message and immediately hands the work to a background worker, so it's always free for the next one: `reelbot.py` (any OS, fixed rules) or a Claude Code session with the Telegram channel (Windows). If you add the cloud stand-in, it waits in the background and only takes the bot while the PC can't.

```mermaid
flowchart LR
    phone(["📱 You<br/>Telegram"])

    subgraph pc["Your computer"]
        direction LR
        bot["Dispatcher<br/>reelbot.py or Claude Code"]
        watch["Reel watchers<br/>one per reel"]
        build["Builds<br/>one per build, own git repo"]
        lib[("Library<br/>reels · jobs · settings")]
        rem["Reminders"]
        engine["Open engine<br/>Whisper · OCR · local model"]
        gem["Gemini<br/>optional"]
        models["local (open model)<br/>Claude · Codex"]

        bot --> watch
        bot --> build
        bot --> lib
        bot --> rem
        watch --> engine
        watch -. "if a key is set" .-> gem
        build --> models
    end

    subgraph cloud["Cloud stand-in · optional, free"]
        direction LR
        worker["Cloudflare Worker<br/>same bot, same commands"]
        routine["Claude routine<br/>links · plans · builds"]
        worker --> routine
    end

    phone -- "reels, commands" --> bot
    watch -- "breakdown" --> phone
    build -- "🔐 approvals · ✅ results" --> phone
    rem -- "⏰ reminders" --> phone
    phone -. "only while the PC is off" .-> worker
    lib <-. "library + reminders stay in sync" .-> worker
```

### Building, with you in the loop

Every build runs as its own process in `../builds/<N>-<name>/`: an open model driven by [`agent.py`](.claude/skills/reel-watch/scripts/agent.py), or headless Claude or Codex. A small runner answers the build's permission prompts itself: file edits inside its own folder are allowed (never its `.git` or approval files), and **every shell command is sent to your phone first**. The open-model agent can't read or write outside the build folder at all.

```mermaid
sequenceDiagram
    autonumber
    actor You
    participant Bot as Dispatcher
    participant Run as Build runner
    participant AI as Model (open or Claude)

    You->>Bot: /build 4 local
    Bot->>Run: start build in ..\builds\4-name
    Run->>AI: task + reel notes (marked untrusted)
    AI->>Run: edit files in its folder
    Note over Run: allowed in normal mode
    AI->>Run: wants to run "npm install"
    Run->>You: 🔐 #4 wants to run: npm install
    You->>Bot: /yes 4
    Bot->>Run: approved
    Run->>AI: go ahead
    AI->>Run: done, with a summary
    Run->>You: ✅ #4 build done · /diff 4 · /undo 4
```

## When your PC is off

<p align="center">
  <img src="docs/assets/cloud-failover.png" alt="Two panels. PC on: your phone talks to the PC bot, which watches with Gemini, builds with Claude and reminds you, while a cloud stand-in waits. PC off: your phone talks to a Cloud Worker that watches, builds through a Claude routine and reminds you, with the library synced. Below, a timeline: PC goes off, a message waits about 40 seconds, the cloud takes over, the PC starts and takes the bot back." width="100%">
</p>

Cloud mode is optional, and made for the Claude Code bot (`reelbot.py` takes the bot back when it starts, but doesn't yet copy in what the cloud did). It gives the same Telegram bot a stand-in on Cloudflare's free plan. **Nothing extra runs on your PC:** no heartbeat, no background process, no scheduled task. When a message sits uncollected for about 40 seconds (because the PC is asleep, shut down, offline, or the bot window is closed), the stand-in takes the bot and tells you so. When the PC bot starts again, it takes the bot back by itself and copies in everything the cloud did.

<table>
<tr>
<td width="40%" valign="top">
<img src="docs/assets/chat-cloud-mode.png" alt="A Telegram conversation late at night: a video sent to the bot, the message that the cloud took over, the video's breakdown, a reminder set for the morning, and the next morning a message that the PC bot is back." width="100%">
</td>
<td valign="top">

### What you get while the PC is off

- **Answered in the cloud, free:** videos, photos and YouTube links you send (watched by Gemini), plus `/jobs`, `/r`, `/find`, `/new`, `/save`, `/remind`, `/todo`, `/reminders`, `/done`, `/snooze` and `/pc`.
- **One Claude routine run each:** Instagram and TikTok links, `/plan`, `/build` (approve with `/yes N`), and plain-text requests. Routines use your Claude plan and have a daily cap.
- **Waits for the PC:** `/tell`, `/diff`, `/deploy`, `/quota` and settings. The bot says so instead of spending a run.

**One library.** Reel and reminder numbers carry on from the PC's, so `/r 3` means the same reel on either side.

**Reminders go out once.** The PC sends them as usual; if it's off at that moment, the cloud sends them.

**Builds stay private.** A cloud build can't touch a switched-off PC, so it pushes a branch and a draft pull request to a private repository of yours.

</td>
</tr>
</table>

The handover, step by step:

```mermaid
sequenceDiagram
    autonumber
    actor You
    participant TG as Telegram
    participant PC as PC bot
    participant W as Cloud Worker

    Note over PC: the PC goes to sleep
    You->>TG: a reel
    loop every minute
        W->>TG: anything waiting?
    end
    TG-->>W: 1 message, uncollected for 40 s
    W->>TG: send messages to me from now on
    TG->>W: the reel
    W->>You: ☁️ the cloud took over · #7 watching it…
    W->>You: #7 🎬 breakdown
    Note over PC: the PC wakes up
    PC->>TG: take the bot back (its plugin does this on start)
    PC->>W: copy in #7 and any reminders
    W->>You: 🖥 your PC bot is back
```

**Set it up** once you have the bot running on the PC (about 20 minutes). You need a free Cloudflare account (no card) and a Claude Pro or Max plan with routines. Full steps: **[cloud/README.md](cloud/README.md)**, or chapter 10 of the [setup guide](docs/Reel%20Agent%20Setup%20Guide.pdf).

```powershell
cd cloud; npm install; npx wrangler login     # 1. deploy the Worker and its database (see cloud/README.md)
# 2. create the Claude routine from cloud/ROUTINE.md
python cloud\pc_link.py setup https://reel-agent-telegram.<you>.workers.dev   # 3. connect the PC
```

## Commands

Type **`/`** in the chat for the menu, or send `/manual` for the full manual. `4 make it a skill` plans reel #4 with your words as the brief; with the Claude Code dispatcher, any plain words work too: *"build 4 with opus"*, *"what's running?"*.

| Reels | Builds | Status & settings |
|---|---|---|
| *send a link or video* → breakdown | `/plan N [model]`: a plan, no changes | `/tasks` · `/pending` |
| `/jobs` · `/find words` · `/r N` | `/build N [model] [safe]` | `/quota`: local model, Gemini, Claude |
| `/deeper N`: is what it names real? | `/yes N` · `/no N why` · `/always N` | `/models` · `/model build local` |
| `/save N` · `/dismiss N` · `/new <idea>` | `/tell N <message>`: steer it | `/mode safe` · `/limit 45` |
| `/retry N` · `/rewatch N deep` | `/diff N` · `/undo N` · `/deploy N` | `/remind` · `/todo` · `/reminders` |

With cloud mode: `/pc` says whether the PC or the cloud has the bot, and `/failover off` (or `on`) stops or allows the takeover.

At the computer, from the project folder:

| Command | Does |
|---|---|
| `python reelbot.py` | Run the bot without Claude Code (any OS); `pair <code>` approves your account, `check` tests the token |
| `.\bot status` | Running? One Telegram connection, owned by the bot? What's building? |
| `.\bot start` · `.\bot stop` · `.\bot restart` | Open, close or reload the bot |
| `.\bot fix` | Remove extra Telegram connections (the usual cause of a silent bot) |
| `.\bot update` | Update the video downloader and Claude Code |
| `.\setup --check` | Re-check the whole setup without changing anything |
| `python cloud\pc_link.py status` | Cloud mode: who has the bot, what's running in the cloud |

## Configuration

| What | Where | Default |
|---|---|---|
| Local model server | `REEL_LLM_URL`, `REEL_LLM_MODEL` in `.env` ([`.env.example`](.env.example)) | Ollama on this computer; a vision model for summaries, a tool-calling one for builds |
| OCR | `REEL_OCR=rapidocr\|tesseract\|off` | whichever is installed |
| Gemini key | `.env` (never committed) | none: the open engine watches |
| Model per task | `/model <watch\|research\|plan\|build> <model>` | Sonnet · Haiku · Opus · Sonnet, or `local` for plans and builds when Claude Code isn't installed |
| Build mode | `/mode safe\|normal` | normal: edits freely in its folder, asks before commands |
| Build time limit | `/limit <minutes>` | 60 (time spent waiting for you doesn't count) |
| Bot behaviour | `CLAUDE.md` (plain English), then `.\bot restart` | |
| Cloud mode | [`cloud/README.md`](cloud/README.md); `/failover on\|off` | off until set up |

## Project layout

```
reel-agent/
├─ reelbot.py                  the bot without Claude Code (any OS)
├─ setup.cmd · setup.py        guided setup (Windows, Claude Code)
├─ bot.cmd · bot.ps1           start / stop / status / fix / update (Claude Code dispatcher)
├─ start.ps1                   the Claude Code bot (auto-restarts if Claude exits)
├─ install-autostart.ps1       start at login + Sunday digest
├─ CLAUDE.md                   how the Claude Code dispatcher behaves
├─ MANUAL.md                   every command (sent on /manual)
├─ .claude/
│  ├─ agents/reel-worker.md    watches one reel (Claude Code dispatcher)
│  ├─ skills/reel-watch/scripts/
│  │  ├─ reelbot.py            dispatcher: fixed routing, pairing, cards
│  │  ├─ reel.py · analyze.py  watch: download, frames, Whisper, OCR (ocr.py), breakdown
│  │  ├─ extract.py            commands, repos, packages and links found, with where
│  │  ├─ llm.py · agent.py     any OpenAI-compatible model; the open-model build agent
│  │  ├─ build.py · runner.py  plans and builds, phone approvals, git per build
│  │  ├─ verify.py             /deeper: GitHub, npm and PyPI checks
│  │  └─ jobs.py · maintain.py · tg.py · tgfmt.py · common.py
│  ├─ settings.json            what runs without asking
│  └─ bot-settings.json        Telegram plugin on, for the Claude Code bot only
├─ reminders/remind.py         shared reminder list
├─ cloud/                      optional stand-in: Worker, routine prompt, PC sync (pc_link.py), tests
├─ test_*.py                   tests (the open engine and model ones run in CI: .github/workflows/tests.yml)
└─ docs/                       setup guide (PDF + source), README images (+ source)
```

Your own data (`.env`, `reels/`, reminder lists) is created on first use and ignored by git.

## Privacy and safety

- **Reel content is never obeyed.** Videos, captions, transcripts and model notes are treated as information only. `reelbot.py` has no model in its loop at all, and builds receive reel notes as reference material explicitly marked untrusted. Only your own Telegram messages give instructions.
- **Nothing quoted is made up.** Commands, repos and links in a breakdown come from OCR and the transcript, never from a model, with where each was seen.
- **Only you can use it.** The bot answers the one Telegram account you pair, and strangers get no reply. Before you pair, a message gets a pairing code that does nothing until you approve it at the computer. The cloud stand-in checks the same account.
- **No command runs without your yes.** There is deliberately no mode that runs shell commands unattended. `/always N` allows one command word for one build. Cloud builds ask the same way.
- **Builds stay in their folder.** Writing elsewhere asks you first (the open-model agent can't reach outside its folder at all); installing elsewhere needs `/deploy N` plus a confirmation. No build can touch its own `.git` or approval files. Every build is a git repo you can diff and undo.
- **Your secrets stay yours.** The bot token lives in your user profile or `.env`, git ignores both, and the Claude Code bot is blocked from reading them. With cloud mode, their copies live in your Cloudflare account's encrypted secrets, and the Claude routine never sees them.
- **Where data goes:** with the open engine and a local model, videos, breakdowns, plans and builds stay on your computer. Videos go to Google Gemini only if you add a key (free-tier data may be used by Google to improve its products), and plans and builds go to Anthropic or OpenAI only if you pick Claude or Codex. `/deeper` asks GitHub, npm and PyPI about the names it checks. With cloud mode, a copy of your reel library and reminders is kept in your own Cloudflare database.

## Troubleshooting

| Symptom | Fix |
|---|---|
| Bot doesn't answer | `.\bot status`. If it says **PROBLEM**, run `.\bot fix`. Another Claude session had the Telegram plugin on. |
| First message gets no pairing code | `.\bot status` says **not connected** while the bot runs. Usually the token file had Windows line endings; `.\bot restart` fixes it. Full walkthrough: [docs/fix-no-pairing-code.md](docs/fix-no-pairing-code.md). |
| "running scripts is disabled" | Use `.\bot` and `.\setup`: they work regardless of the execution policy. |
| "I couldn't grab that one" | Save the video on your phone and send the file itself. `.\bot update` often helps too. |
| Breakdowns say Gemini's quota is used up | The open engine watched it instead; Gemini's free quota resets at midnight Pacific (`/quota`). |
| Breakdowns say "No model answered" | Start Ollama (`ollama serve`) with a model pulled, or set `REEL_LLM_URL` in `.env`. The breakdown is complete without one; only the summary is plainer. |
| A `local` build stops with "does not support tools" | That model can't call tools: pick one that can, e.g. `/build 4 local:qwen3:8b`, or set `REEL_LLM_MODEL`. |
| `reelbot.py` says another program is reading the bot | The Claude Code bot (or another `reelbot.py`) is running with the same token: stop one of them. |
| PC off and no answer after 3 minutes | Cloud mode isn't set up, or `/failover off` is on. With the PC back on, `python cloud\pc_link.py status`. |
| "Claude routine limit reached" | The cloud used today's routine runs. Cheap commands and video watching still work; the rest resets tomorrow. |

More in chapter 11 of the [setup guide](docs/Reel%20Agent%20Setup%20Guide.pdf).

## Updating

```bash
git pull
pip install -U -r requirements.txt -r requirements-open.txt    # then restart python reelbot.py
```

With the Claude Code bot on Windows:

```powershell
git pull
.\bot update
.\bot restart
cd cloud; npm install; npm run deploy     # only if you use cloud mode
```

Your key, token, reels and reminders are never touched by an update.

## FAQ

**Is it free?** Yes, with open models: the code is MIT and everything runs on your computer. Optional extras cost what they cost elsewhere: Gemini has a free tier, Claude Code needs a Claude Pro or Max plan, Codex uses your OpenAI account, and cloud mode fits Cloudflare's free plan.

**Does it work on Mac or Linux?** Yes: `python reelbot.py` runs the whole bot (watching, plans, builds with approvals, reminders) on any OS. The Claude Code dispatcher (`.\bot`, `setup.py`, autostart) is Windows-only for now; [#13](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/issues/13) tracks porting it.

**Which open models work?** Anything an OpenAI-compatible server serves. For builds the model has to call tools: `qwen3:8b` and bigger work well on a laptop, and CI runs a build with `qwen2.5:3b` on a plain CPU. A vision model (`qwen2.5vl:7b`, `gemma3`) also reads the frames for the summary.

**Can a malicious reel take over my PC?** Reel content is treated as information, never as instructions, and no shell command runs without your `/yes`. See [Privacy and safety](#privacy-and-safety) and the [security policy](SECURITY.md).

**Do I need Gemini?** No. The open engine transcribes the audio with Whisper, reads every screen with OCR and pulls out the exact commands and repos; a local model writes the summary. Gemini, if you add a key, watches the whole video with sound, which helps with videos that show more than they say or write.

**Which sites work?** Instagram, TikTok, YouTube (including Shorts) and screenshots are tested. Downloads go through `yt-dlp`, so many others probably work; [#14](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/issues/14) is checking which.

**Can I use it without building anything?** Yes. The library alone is useful: every tool and trick you scroll past, searchable with `/find`, `/saved` and `/tag`.

## Contributing

Start with a [`good first issue`](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/labels/good%20first%20issue) or the [macOS and Linux port](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/issues/13). [CONTRIBUTING.md](CONTRIBUTING.md) shows where everything lives and how to run the tests. Built something from a reel? Post it in [Show and tell](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/discussions/categories/show-and-tell).

## Support

If Reel Agent is useful to you, **a ⭐ on GitHub** is the best way to help other people find it. Bugs, ideas and questions are welcome in [Issues](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/issues) and [Discussions](https://github.com/HNF-FRN/Reel-watcher-telegram-Agent/discussions).

## License

[MIT](LICENSE). Free to use, change and share. Reel Agent is an independent project and is not affiliated with Anthropic, Google, Cloudflare or Telegram.
历史前置条件说明(补充参考)

Python 3.11+;Git;Ollama 或其他 OpenAI 兼容服务(本地模型);Telegram 账号与 BotFather 创建的 Bot Token;手机端 Telegram;可选 Gemini API Key;Claude Code 路径需 Node.js、Claude Pro/Max 订阅及 Windows 10/11;云端接管需 Cloudflare 账号与 Claude 例程。第三方服务费用与配额待向官方核验;国内网络可达性待核查。

项目来源与清单版权许可

https://github.com/HNF-FRN/Reel-watcher-telegram-Agent

整理来源:https://github.com/slavakurilyak/awesome-ai-agents

清单版权与许可:

MIT License

Copyright (c) 2024 Slava Kurilyak

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.