Telegraph-Image 是一个很有意思的项目,将媒体资源上传到 Telegram,之后获取直链作为图床(不仅限于图片)。正好最近有存音视频的需求,那么搭建一个玩玩。
准备工作
该项目运行于 Cloudflare Pages,所以无需准备服务器。
你需要:
- cloudflare 账号
- github 账号
- telegram 账号
- 科学上网环境
- 域名(可选)
- 手、大脑
实操
基础搭建
- fork 官方仓库


- 打开 CloudFlare,进入 Workers 和 Pages 页面,点击 创建应用程序

- 点击下方的 开始使用,以此来创建 Pages,点击 "导入现有 Git 存储库",选择刚才创建的 fork 仓库,之后无脑下一步。
我第一次创建的时候不小心创建成了 worker,搞了半天不知道问题在哪里🤣
- 接下来要获取运行必备的环境变量信息
环境变量 示例值 TG_Bot_Token123468:AAxxxGKrn5TG_Chat_ID-1234567
打开 Telegram,搜索 @BotFather,或者点开链接跳转。打开该机器人的聊天窗口,输入/newbot,按照提示进行自定义配置。保存好最后输出的 TG_Bot_Token
新建一个频道(Channel),公开私人都行,在频道管理中将刚才你创建的 bot 设置为管理员

之后在该频道里随便发一条消息,并转发给 @VersaToolsBot。@VersaToolsBot 输出的 频道ID 即为 TG_Chat_ID 变量值
- 来到 Pages 的设置页面,在 变量和密钥 里配置必备环境变量,如图。之后在 部署 页面中 重新部署 即可正常运行

至此,若网络环境支持,打开自动绑定的域名(pages.dev 结尾),就能看到上传页面了
可选优化
域名&优选
由于官方提供的 pages.dev 域名在某些地区被墙,所以最好配置成自己的域名。在 自定义域 页面即可配置

另外,默认分配的节点速度较慢,所以需要优选 IP 进行加速。我这里采用的方法是我认为最简单的 DNS 分流解析,国内解析到优选 CNAME,国外不变。解析服务我使用的是华为云国际,其分区域解析功能是免费的

关于优选 CNAME,我使用的是自维护的 cloudflare.liang.one。网上还有很多类似服务,如 微测网 提供的 *.cloudflare.182682.xyz,NB优选 的 *.cloudflare.19931110.xyz
可选功能配置
Telegraph-Image 项目还提供了很多 可选功能,需要通过 配置环境变量 和 绑定相关资源 开启
可选环境变量:
| 环境变量 | 示例值 | 说明 |
|---|---|---|
BASIC_USER | admin | 后台管理页面(/admin)的登录用户名。不设置则后台无需登录。 |
BASIC_PASS | admin-password | 后台管理页面的登录密码,需要和 BASIC_USER 同时设置。 |
UPLOAD_BASIC_USER | uploader | 上传入口的 Basic Auth 用户名。不设置则保持公开上传。 |
UPLOAD_BASIC_PASS | strong-password | 上传入口的 Basic Auth 密码,需要和 UPLOAD_BASIC_USER 同时设置。 |
ENABLE_SHORT_URLS | true | 开启后(需绑定 KV)上传将返回形如 /file/AbC123 的短链接,原有长链接依然有效。 |
SHORT_URL_LENGTH | 6 | 短链接 ID 长度(4-16,默认 6),仅在开启短链接时生效。 |
MODERATION_PROVIDER | cloudflare-ai | 图片审查服务:cloudflare-ai(Workers AI,推荐)、moderatecontent(旧版)或 none。不设置时自动检测:有 ModerateContentApiKey 用 moderatecontent,有 AI 绑定用 Workers AI。 |
MODERATION_AI_MODEL | @cf/meta/llama-3.2-11b-vision-instruct | cloudflare-ai 审查所使用的 Workers AI 模型。不设置时按内置的现役视觉模型降级链依次尝试,Cloudflare 下线某个模型时会自动降级而不是失效。 |
CF_ACCOUNT_ID / CF_API_TOKEN | abc123 / token | 可选,两者同时设置即开启实时模型发现:审查模型链改为从 Cloudflare 的现役模型目录实时构建(结果在 KV 中缓存 6 小时),已下线的模型自动剔除、新上线的视觉模型自动加入。Token 只需要 "Workers AI: Read" 一项权限。 |
ModerateContentApiKey | abc123 | 旧版图片审查,值为 moderatecontent.com 的 API key。该服务已停止新用户注册,新部署请改用 Workers AI。 |
ALLOWED_REFERERS | myblog.com,*.example.com | 防盗链:允许引用你文件的域名白名单(逗号分隔)。不设置则不限制;空 Referer(直接访问、API 客户端)和你自己的域名始终放行。 |
STORAGE_PROVIDER | telegram | 上传文件的存储后端:telegram(默认)或 r2(需绑定 img_r2)。每个文件都会记住自己存在哪里,切换后旧文件依然可以正常加载。 |
SITE_NAME | My Images | 首页顶部显示的站点名称(通过 GET /api/config 下发给前端)。 |
SITE_TITLE | My Images | Home | 首页的浏览器标签页标题。 |
SITE_BACKGROUND | https://.../bg.jpg | 首页背景图 URL。 |
HIDE_ADMIN_ENTRY | true | 隐藏首页上的后台入口链接(/admin 页面本身仍可访问)。 |
WhiteList_Mode | true | 白名单模式:只有加入白名单的图片才能被加载。 |
disable_telemetry | true | 退出远端遥测。 |
绑定(设置->函数):
| 类型 | 变量名称 | 说明 |
|---|---|---|
| KV 命名空间 | img_url | 绑定一个提前创建好的 KV 命名空间,即可开启后台图片管理;短链接功能也依赖此绑定 |
| R2 存储桶 | img_r2 | 绑定一个提前创建好的 R2 存储桶,配合 STORAGE_PROVIDER=r2 使用 |
| Workers AI | AI | 绑定 Workers AI 即可启用内置图片审查 |
我拿后台管理举例,后台管理功能需要绑定 KV,所以先在 Cloudflare 中创建 KV。然后在 Pages 的设置页面中,点击添加 绑定。变量名称填入 img_url。绑定好 KV 后,再添加管理员账号密码相关环境变量 BASIC_USER 和 BASIC_PASS,之后重新部署即可开启需要身份验证的后台功能。




结尾
更多信息请查看官方仓库 Telegraph-Image
cloudflare 大善人、telegram 大善人


评论区
评论加载中...