ryandeangraves-telegram-media
Telegram 媒体处理:下载、转码、发送图片/视频/音频与文档。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~ryandeangraves-telegram-mediacURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~ryandeangraves-telegram-media/file -o ryandeangraves-telegram-media.md## 概述(中文)
Telegram 媒体处理:下载、转码、发送图片/视频/音频与文档。
## 技能正文
# 技能:telegram-media
## 关键规则 — 禁止伪造
**你必须用 shell/exec 工具实际执行每条命令。** 切勿假装已发送照片、语音或图表。命令失败时向 Boss Man 报告真实错误。
## 目的
通过 Telegram 发送富媒体——照片、图表、语音消息与文档。涵盖按需图表生成、ElevenLabs TTS 语音片段与文件投递。
## 何时使用
- Boss Man 说「给我看 BTC 图表」或「把图表发给我」
- Boss Man 要求以语音笔记形式收听某内容
- 通过 Telegram 发送生成的图片、PDF 或文件
- 「生成一段说 X 的语音」
- 任何通过 Telegram 发送媒体(非纯文本)的请求
## 环境
所有命令从 `~/clawd` 运行,`load_env.py` 加载含 `TELEGRAM_TOKEN`、`TELEGRAM_CHAT_ID`、`ELEVEN_API_KEY`、`ELEVEN_VOICE_ID` 的 `.env`。
Boss Man 的 chat ID:`7887978276`
## 通过 Telegram 发送照片/图表
```bash
cd ~/clawd && python3 -c "
import os, sys, requests
sys.path.insert(0, '.')
import load_env
TOKEN = os.getenv('TELEGRAM_TOKEN')
CHAT = os.getenv('TELEGRAM_CHAT_ID', '7887978276')
with open('PHOTO_PATH', 'rb') as f:
r = requests.post(f'https://api.telegram.org/bot{TOKEN}/sendPhoto',
data={'chat_id': CHAT, 'caption': 'CAPTION_HERE'},
files={'photo': f}, timeout=30)
print(r.json())
"
```
将 `PHOTO_PATH` 替换为实际路径,`CAPTION_HERE` 替换为标题。
## 通过 Telegram 发送文档/文件
```bash
cd ~/clawd && python3 -c "
import os, sys, requests
sys.path.insert(0, '.')
import load_env
TOKEN = os.getenv('TELEGRAM_TOKEN')
CHAT = os.getenv('TELEGRAM_CHAT_ID', '7887978276')
with open('FILE_PATH', 'rb') as f:
r = requests.post(f'https://api.telegram.org/bot{TOKEN}/sendDocument',
data={'chat_id': CHAT, 'caption': 'CAPTION_HERE'},
files={'document': f}, timeout=30)
print(r.json())
"
```
## 生成并发送图表
### 完整套件(所有资产)
为所有跟踪资产生成 K 线 + 斐波那契 + SMA + RSI 图表。
```bash
cd ~/clawd && python3 crypto_charts.py
```
图表保存到 `~/clawd/charts/` 为 PNG(如 `chart_btc.png`、`chart_eth.png` 等)。
### 单资产图表
```bash
cd ~/clawd && python3 crypto_charts.py --coin bitcoin
```
### 发送已生成图表
生成后发送:
```bash
cd ~/clawd && python3 -c "
import os, sys, requests
sys.path.insert(0, '.')
import load_env
TOKEN = os.getenv('TELEGRAM_TOKEN')
CHAT = os.getenv('TELEGRAM_CHAT_ID', '7887978276')
with open('charts/chart_btc.png', 'rb') as f:
r = requests.post(f'https://api.telegram.org/bot{TOKEN}/sendPhoto',
data={'chat_id': CHAT, 'caption': 'BTC — Daily TA Chart'},
files={'photo': f}, timeout=30)
print(r.json())
"
```
## ElevenLabs TTS — 生成语音笔记
### 生成语音片段
```bash
cd ~/clawd && python3 -c "
import os, sys, requests
sys.path.insert(0, '.')
import load_env
API_KEY = os.getenv('ELEVEN_API_KEY') or os.getenv('ELEVENLABS_API_KEY')
VOICE_ID = os.getenv('ELEVEN_VOICE_ID', '1SM7GgM6IMuvQlz2BwM3')
text = '''TEXT_TO_SPEAK'''
r = requests.post(
f'https://api.xi-labs.com/v1/text-to-speech/{VOICE_ID}',
headers={'xi-api-key': API_KEY, 'Content-Type': 'application/json'},
json={'text': text, 'model_id': 'eleven_multilingual_v2',
'voice_settings': {'stability': 0.5, 'similarity_boost': 0.75}},
timeout=30)
if r.status_code == 200:
with open('/tmp/frank_voice.mp3', 'wb') as f:
f.write(r.content)
print('Voice clip saved to /tmp/frank_voice.mp3')
else:
print(f'TTS error: {r.status_code} {r.text[:200]}')
"
```
## 规则
- **真实执行每条命令** — 使用 shell/exec 工具,切勿假装已发送媒体。
- 始终打印 API 响应以确认投递
- 发送前须先生成图表——若不存在或过期先运行 `crypto_charts.py`
- TTS 将 `TEXT_TO_SPEAK` 替换为实际文本(ElevenLabs 建议 <5000 字符)
- Boss Man 说「给我看图表」— 生成最新并全部发送
- Boss Man 说「发语音笔记讲 X」— 生成分析 TTS 后发送