零成本搭建IPTV直播源自动更新系统

☁️ 零成本搭建 IPTV 直播源自动更新系统

—— 基于 GitHub Actions × Cloudflare Pages 的全自动化方案

核心思想:一次配置,永久自动。告别手动找源的烦恼。

所需资源:GitHub 账号(免费)+ Cloudflare 账号(免费)—— 零成本,纯免费


📑 目录


76a91780452500.webp

1. 技术架构与运行原理

本方案选用开源项目 iptv-sources 作为核心引擎,其完整的运行链路如下:

flowchart LR
    A[GitHub Actions<br>定时触发] --> B[Node.js 抓取脚本]
    B --> C[多公开源采集]
    C --> D[HTTP 可用性检测]
    D --> E[失效剔除 · 有效保留]
    E --> F[渲染 M3U/TXT]
    F --> G[Cloudflare Pages<br>全球 CDN 分发]
    G --> H[终端播放器]

💡 核心优势:整个流程完全自动化,用户只需完成一次初始配置即可长期使用。每年可节省数百元的服务器租赁费用,同时 CDN 加速带来的低延迟特性使播放体验优于自建服务器。


2. 前置准备事项

2.1 GitHub 账号

访问 github.com 完成注册。免费套餐每月提供 2000 分钟 的 Actions 执行时长,对每两小时运行一次的场景而言绰绰有余。

2.2 Cloudflare 账号

dash.cloudflare.com 注册。Pages 服务的免费层包含:

  • 每月 500 次 构建请求
  • 无限带宽 与全球节点 CDN 加速
  • 足以支撑家庭用户的全部访问需求

3. 分步部署指南

3.1 Fork 项目仓库

登录 GitHub 后访问 iptv-sources 项目主页,点击右上角的 Fork 按钮将仓库复制至个人账号下。这一操作会创建一份完全属于你自己的项目副本,后续所有修改均在此副本上进行。

3.2 连接 Cloudflare Pages

# 操作路径
Cloudflare Dashboard → Workers & Pages → Pages → Create a Pages → Connect to Git

按提示授权 Cloudflare 读取 GitHub 仓库列表,选中刚刚 Fork 的项目:

配置项 填写值
项目名称 自定义,如 my-iptv-source
生产分支 main
构建命令 pnpm build:static
输出目录 m3u

完成设置后点击 Save and Deploy

3.3 配置 GitHub Secrets

为了让 GitHub Actions 能自动将生成的文件部署到 Cloudflare,需要配置认证凭据:

① 获取 Cloudflare API Token

Cloudflare Dashboard → My Profile → API Tokens → Create Token
# 选择 "Edit Cloudflare Workers" 模板
# 权限: Account.Workers:* 、 Account.Pages:* 、 Zone.Settings:*

② 获取 Account ID

在 Cloudflare Dashboard 右侧找到 Account ID 并复制。

③ 添加 Secrets

进入 GitHub 仓库的 Settings → Secrets and variables → Actions → New repository secret,依次添加:

Secret 名称
CLOUDFLARE_API_TOKEN 上一步创建的 API Token
CLOUDFLARE_ACCOUNT_ID 你的 Account ID
PROJECT_NAME Cloudflare Pages 中的项目名称

3.4 手动触发首次构建

# GitHub 仓库页面操作
Actions 标签 → Deploy to Cloudflare → Run workflow → main 分支 → Run workflow

工作流执行时间约 3-5 分钟。执行完成后,访问以下链接验证结果:

https://你的项目名.pages.dev/youhun.m3u
https://你的项目名.pages.dev/all.m3u

4. 个性化定制选项

4.1 频道分类调整

项目根目录下的 config.ts 文件提供了丰富的定制能力:

功能 说明
频道分组 将央视、卫视、地方台分别归类
白名单/黑名单 指定需要收录或排除的频道
输出格式 支持 M3U / TXT / JSON

4.2 更新频率配置

.github/workflows/deploy.yml 中修改 cron 表达式:

# 每 2 小时执行一次(默认)
cron: '0 */2 * * *'

# 每 6 小时执行一次
cron: '0 */6 * * *'

# 每天凌晨 4 点执行一次
cron: '0 4 * * *'

⚠️ 注意:考虑到源站可能对高频请求有限制机制,建议更新间隔设置在 2 小时以上


5. 播放器对接方法

部署完成后获得的 M3U 地址可被绝大多数主流播放器识别:

播放器 配置方法
VLC 媒体 → 打开网络串流 → 粘贴 M3U 地址
PotPlayer Ctrl+U → 粘贴 M3U 地址
Kodi 安装 PVR IPTV Simple Client → 填入 M3U + EPG 地址
TVBox 设置 → 配置地址 → 填入 M3U 地址

6. 常见问题排查

问题 解决方案
M3U 地址返回 404 首次部署后 Actions 可能还未执行,手动触发一次即可
pages.dev 域名被屏蔽 绑定自定义域名,或在 Cloudflare 中开启代理功能
免费额度够用吗? Pages 每月 500 次构建 + Actions 每月 2000 分钟,完全足够
部分频道无法播放 网络环境差异导致,可尝试开启 IPv6

🎯 一次配置 · 永久自动 · 全家人共享

—— 告别到处找源的烦恼,拥抱稳定的电视直播体验

0 0

评论区 (2)

发表评论

共有 2 条评论

avatar
追剧小能手1 个月前

这方案太实用了!以前手动找源累死,现在每两小时自动更新,连服务器钱都省了。用Cloudflare CDN播放确实流畅,再也不卡顿了。

avatar
夜雨声烦不烦1 个月前

文中说GitHub Actions每月2000分钟“绰绰有余”,但每两小时跑一次,一个月就360次,每次如果超过5分钟不就用超了?而且代码里有没有设置缓存避免重复抓取?希望作者能展开算算实际资源消耗,别让小白踩坑。