摘要:使用 TVBox 的朋友可能经常遇到痛点:网上找的接口没几天就失效了,或者是直播源卡顿、画质差。与其到处求人找源,不如自己动手丰衣足食!
今天 赛博61区 教大家一套“一劳永逸”的方案:利用 GitHub 免费托管核心文件,并配合 GitHub Actions 每天定时自动抓取大佬维护的直播源。一次配置,永久自动更新,从此实现“看电视自由”!
一、 为什么我们要自建?
首先你要理解 TVBox 的运行原理,原版 TVBox 是一个空壳,什么都看不了。想要让它跑起来,需要三个东西配合:
- APP 本体:就像一台没有频道的电视机,需要外部内容才能显示。APP 本体是整个 TVBox 的框架,就像电视机的硬件结构,负责启动、显示界面、以及与用户交互等基本功能,但它本身并不包含任何实际的节目内容。
- Jar 文件:这就像是电视的“节目源”或“频道”。每个频道都包含不同的节目内容。Jar 文件是 APP 中的主要代码和资源包,它定义了 TVBox 的功能,像是播放视频、处理互动等。它就像是通过电视机接收到的各种节目,它的内容由程序员提前设计好。
- JSON 文件:这是类似电视节目的"节目单"。JSON 文件存储了关于频道(功能)和节目的信息,比如频道的名称、类型、要播放的内容等。TVBox 会根据这些信息来加载和显示对应的内容。就像电视的频道调度表,JSON 文件提供了关于如何显示哪些内容、顺序等的详细配置。
我们要解决的问题:
网上的接口通常把 Jar 和 JSON 放在别人的服务器上。一旦大佬删库跑路,你的电视就“瘫痪”了。
我们的方案:
把 Jar 和 JSON 搬回我们自己的 GitHub 仓库里存着。只要 GitHub 不倒闭,你的电视就能一直看! 重点是永远不用向平台交会员费了。
二、 第一步:创建 GitHub“基地”
首先我们需要一个仓库来存放所有的文件。
- 登录 GitHub,没有帐号的,先注册一个帐号

- 点击右上角的
+号,选择 New repository。
- Repository name:输入
CyberTV(或者你喜欢的名字)。 - Public:一定要选公开,否则电视读取不到。
- 勾选 Add a README file,点击 Create。

三、 第二步:托管核心文件
这是保证点播功能(看电影电视剧)稳定的关键。
获取核心 Jar 包
- 为了兼容性,我们使用目前最稳的“饭太硬”同款核心。
- 已同步到我的GitHub,请放心下载
上传到仓库
- 在仓库页面点击 Add file -> Upload files。

- 选择刚下载的文件


- 上传进度完成后点击提交 (Commit)。

- (建议:可以建一个
jar文件夹存放,显得更整洁)
- 在仓库页面点击 Add file -> Upload files。
编写配置文件 (config.json)
- 在仓库点击 Add file -> Create new file。

- 新建一个
config.json文件。
- 复制粘贴下列代码,
用户名和仓库名改成自己的。 - 关键点:
spider(爬虫) 的地址要指向我们刚才上传的 jar。为了防屏蔽和加速,我们使用ghproxy代理。 - 配置文件来自饭太硬 大佬,仅供参考。
- 在仓库点击 Add file -> Create new file。
{
"spider": "https://ghproxy.net/https://raw.githubusercontent.com/你的用户名/你的仓库名/main/jar/fan.jar",
"wallpaper": "https://深色壁纸.xxooo.cf/",
"sites": [
{
"key": "Douban",
"name": "豆瓣热播 | 饭太硬核心",
"type": 3,
"api": "csp_DouDouGuard",
"indexes": 1,
"searchable": 0,
"quickSearch": 0,
"changeable": 0
},
{
"key": "MDrive",
"name": "🗂我的云盘➖配置",
"type": 3,
"api": "csp_MyDriveGuard",
"changeable": 0,
"indexes": 0,
"searchable": 1,
"style": {
"type": "oval"
},
"ext": {
"Cloud-drive": "http://www.饭太硬.com/tv/tvfan/Cloud-drive.txt"
}
},
{
"key": "Wogg",
"name": "👺玩偶哥哥➖4K弹幕",
"type": 3,
"api": "csp_WoGGGuard",
"timeout": 30,
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://www.饭太硬.com/tv/tvfan/Cloud-drive.txt",
"from": "4k|auto"
}
},
{
"key": "YGP",
"name": "🚀预告药神➖预告片",
"type": 3,
"api": "csp_YGPGuard",
"searchable": 0,
"quickSearch": 0,
"changeable": 0
},
{
"key": "alllive",
"name": "🎧一直播➖直播",
"type": 3,
"api": "csp_AllliveGuard",
"searchable": 1,
"quickSearch": 0,
"changeable": 0,
"ext": "uqGL1fpJNAUH7axYx5bf4OWuvyk="
},
{
"key": "seed",
"name": "🔜刚劲刚➖三盘",
"type": 3,
"api": "csp_SeedhubGuard",
"ext": "5++kwLhNYm9UrO9wh7Dl7eKamTee4s/5",
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"indexes": 0,
"style": {
"type": "list"
}
},
{
"key": "ZPan",
"name": "🎬刚盘搜➖三盘",
"type": 3,
"api": "csp_S_zpsGuard",
"searchable": 1,
"quickSearch": 0,
"changeable": 0,
"ext": {
"siteUrl": "https://api.jkai.de/"
},
"indexes": 0,
"style": {
"type": "list"
}
},
{
"key": "Libvio",
"name": "🌃立播➖秒播",
"type": 3,
"api": "csp_LibvioGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": {
"Cloud-drive": "http://www.饭太硬.com/tv/tvfan/Cloud-drive.txt",
"from": "4k|auto"
}
},
{
"key": "T4",
"name": "🧡太冻➖秒播",
"type": 3,
"api": "csp_T4Guard",
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"ext": "rfOIzPkSUkANv6AT2prC8en3+TzKx9TnlT8vaY37HhtYfAQe6C5xqrVuJPhQwYV6r3eRdMBGm3Qm6Th+BushR86B6KqJGXDsHazHw7alBG/7zUxkN1tK/NypRxnpBNoeUtpw4jcCCGhytI75yO4g4zG6SOPA0RSwhksM0IF2friAkrHCWoW3v+0mdw6sjz4t4XB1Df7yL/R5cfaA/5LQYq3I8OkvMrJMU9Q1P7JXwx7NSF2zTyH/ANVmZ4u5m567DW1KVG7OuQjXPjZiOXTYk0+wjpfBRTf19yIq6q/C76k2Fs80joAMPw0ueDR+QHxtuDcTom2rmHkI1Fonkzi6BotbpUcbSi4PiIgmfdbvVwhGZ+i4nvt+IYa48l5aLA7PLgDiERpuOs31aHaXlgFswT87XyTb8QaF4CuzKWJuXptwNTjvXAS9KHdxH49Ay+hfBAB2bCvUf4CMoldF2wZUv0mI2qY966erFpOFg+FOc7t88EUH8j8ACXQtHJiKC9RQ+SaLIF0="
},
{
"key": "NewCz",
"name": "💫厂长➖秒播",
"type": 3,
"api": "csp_NewCzGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "LiteApple",
"name": "🍎小苹果➖秒播",
"type": 3,
"api": "csp_LiteAppleGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "Jpys",
"name": "🈺文才➖秒播",
"type": 3,
"api": "csp_JpysGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "YCy",
"name": "⚒原创➖秒播",
"type": 3,
"api": "csp_YCyzGuard",
"timeout": 15,
"playerType": 1,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "Bttwoo",
"name": "🍄比特➖秒播",
"type": 3,
"api": "csp_BttwooGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "Jqq",
"name": "🆙金圈➖多线",
"type": 3,
"api": "csp_JqqGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "AppTT",
"name": "🔥热播➖多线",
"type": 3,
"api": "csp_AppTTGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "uqGL1bNENExT7/hGxpSE5qU="
},
{
"key": "AppSx",
"name": "🧿下饭➖多线",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "rfOX1voDIQhH8epBwpmIsuStr2HSytK11WwwcM/+XB8SbkBB4XYk/L52LroCiYRhoDrRLJ4ZkCh5q2RxCb5yUs6B5aCQVGSkR6zDgKLrFSDulg=="
},
{
"key": "AppSx_Maomao",
"name": "😽猫猫➖多线",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "rfOX1voDIQhH8epBwtCFsub0/WmdmYi/k2NkJsm7Vk4dJQZft2UtrrwhKK52i/dDilKkU5Nz+V0bwkYsVuU="
},
{
"key": "AppSx_HeiMu",
"name": "🤑黑木➖多线",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "rfOX1voDIQhH8epBwtCFsra0umqGnpe+lWNtKs6yVR1PMxpf9CY77fshTPNP+c5lnl6CWfxm7XYO7C1p"
},
{
"key": "AppSx_Mozi",
"name": "🍇末子➖多线",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "rfOb1uAWbkRHp7hdxprG9un3+TDC2t/rlTwlcMr+ChdbeV8Q9y9xsKxqfbtO0M05tGWcacFVm2c45jhyH6t1Rt6A6PjICGqxV+uN1uOqS2/x0Vp5J0Vfo8usQADpHg=="
},
{
"key": "Nmys",
"name": "🤱糯米➖多线",
"type": 3,
"api": "csp_NmyswvGuard",
"timeout": 15,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "Auete",
"name": "🏝奥特➖多线",
"type": 3,
"api": "csp_AueteGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "JPJ",
"name": "👬基片➖P2P",
"type": 3,
"api": "csp_JPJGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
"changeable": 0
},
{
"key": "SixV",
"name": "🧶新6V➖磁力",
"type": 3,
"api": "csp_SixVGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"ext": "https://www.xb6v.com/"
},
{
"key": "Dm84",
"name": "🚌巴士➖动漫",
"type": 3,
"api": "csp_Dm84Guard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "Anime1",
"name": "🐤日漫➖动漫",
"type": 3,
"api": "csp_Anime1Guard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
},
{
"key": "Zbz",
"name": "⚽超全➖看球",
"type": 3,
"api": "csp_ZbzGuard",
"searchable": 0,
"quickSearch": 0,
"changeable": 0,
"style": {
"type": "list"
},
"ext": "uqGL1fpJNAUf8fdTwZCE5qSp+Q=="
},
{
"key": "88",
"name": "⚽88➖看球",
"type": 3,
"api": "csp_Sir88Guard",
"timeout": 10,
"searchable": 0,
"changeable": 0,
"style": {
"type": "list"
}
},
{
"key": "Kanqiu",
"name": "⚽手机➖看球",
"type": 3,
"api": "csp_KanqiuGuard",
"timeout": 10,
"searchable": 0,
"changeable": 0,
"style": {
"type": "list"
}
},
{
"key": "MTV1",
"name": "🎧️听听➖音乐",
"type": 3,
"api": "csp_MusicGuard",
"style": {
"type": "rect",
"ratio": 1
},
"searchable": 1,
"quickSearch": 0,
"changeable": 0
},
{
"key": "MTV",
"name": "🎹明星➖MV",
"type": 3,
"api": "csp_BiliGuard",
"style": {
"type": "rect",
"ratio": 1.597
},
"searchable": 0,
"quickSearch": 0,
"changeable": 0,
"ext": {
"json": "https://nos.netease.com/ysf/5af5fbe12a88b7c45aa1c21e6551826c.txt"
}
},
{
"key": "YiSo",
"name": "😹易搜➖三盘",
"type": 3,
"api": "csp_YiSoGuard",
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "http://www.饭太硬.com/tv/tvfan/Cloud-drive.txt",
"from": "4k|auto",
"yiSoCookie": "satoken=4437cb8c-a260-411b-9a0d-1fa622ab422f"
}
},
{
"key": "Bili",
"name": "🅱哔哔合集➖弹幕",
"type": 3,
"api": "csp_BiliGuard",
"style": {
"type": "rect",
"ratio": 1.597
},
"searchable": 1,
"quickSearch": 0,
"changeable": 0,
"ext": {
"json": "https://nos.netease.com/ysf/0075389dca9afadd4614e9713765ff17.txt"
}
},
{
"key": "fan",
"name": "导航 www.饭太硬.com",
"type": 3,
"api": "csp_XPathGuard",
"searchable": 1,
"quickSearch": 0,
"changeable": 0
},
{
"key": "cc",
"name": "请勿相信视频中广告",
"type": 3,
"api": "csp_XPathGuard",
"searchable": 1,
"quickSearch": 0,
"changeable": 0
}
],
"logo": "https://bdcache1-f1.v3mh.com/image/25-12-16/6941612717007.gif",
"lives": [
{
"name": "写鸭",
"type": 0,
"url": "https://bc.188766.xyz/?ip=&mishitong=true&mima=mianfeibuhuaqian&json=true",
"timeout": 10,
"ua": "bingcha/1.1(mianfeifenxiang)"
},
{
"name": "develop202",
"type": 0,
"url": "https://raw.githubusercontent.com/develop202/migu_video/refs/heads/main/interface.txt",
"playerType": 2,
"epg": "http://epg.51ymt.top:8000/api/diyp/?ch={name}&date={date}"
},
{
"name": "IPv6",
"type": 0,
"url": "https://nos.netease.com/ysf/3d75a78a0fc7ede372c03598d6d10367.m3u",
"playerType": 2
},
{
"name": "虎牙一起看",
"type": 0,
"url": "https://sub.ottiptv.cc/huyayqk.m3u",
"playerType": 2,
"timeout": 10,
"ua": "okHttp/Mod-1.4.0.0"
},
{
"name": "斗鱼一起看",
"type": 0,
"url": "https://sub.ottiptv.cc/douyuyqk.m3u",
"playerType": 2,
"timeout": 10,
"ua": "okHttp/Mod-1.4.0.0"
},
{
"name": "B站直链",
"type": 0,
"url": "https://sub.ottiptv.cc/bililive.m3u",
"playerType": 2,
"timeout": 10,
"ua": "okHttp/Mod-1.4.0.0"
},
{
"name": "YY轮播",
"type": 0,
"url": "https://sub.ottiptv.cc/yylunbo.m3u",
"playerType": 2,
"timeout": 10,
"ua": "okHttp/Mod-1.4.0.0"
}
]
}四、 第三步:配置自动化机器人 🚀
这是本教程的灵魂。直播源失效快,我们通过GitHub Actions脚本每天自动抓取其他大佬维护的高清源,同步到自己仓库,避免手动更新的麻烦。
1. 开启仓库写入权限
默认情况下 Actions 不能修改文件,必须授权。
- 进入仓库 Settings -> 左侧 Actions -> General。


- 拉到最底部的 Workflow permissions。
- 勾选 Read and write permissions 并保存。

2. 创建自动工作流
- 新建一个
yml文件。 - 文件名输入:
.github/workflows/update.yml(注意路径一个字都不能错)。
- 填入以下代码:
(注:可以将https://raw.githubusercontent.com/fanmingming/live/main/tv/m3u/ipv6.m3u改成你自己收集的直播源)
name: 自动更新直播源
# 触发机制:每天北京时间早上 6:00 (UTC 22:00) 自动运行
on:
schedule:
- cron: '0 22 * * *'
# 允许手动点按钮触发
workflow_dispatch:
permissions:
contents: write
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v3
- name: 创建目录
run: mkdir -p live
- name: 下载最新直播源 (抓取范明明 IPv6 源)
# 这里使用 wget 下载外部源,并重命名保存到 live 文件夹
run: |
wget https://raw.githubusercontent.com/fanmingming/live/main/tv/m3u/ipv6.m3u -O live/my_live.m3u
- name: 提交更改到仓库
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Actions"
git add live/my_live.m3u
# 如果文件有变化才提交
git commit -m "Auto update live source" || exit 0
git push3. 手动运行一次
- 保存后,点击仓库顶部的 Actions 标签。

- 左侧点击 自动更新直播源

- 右侧点击 Run workflow。

- 等待几十秒,当变成绿色 ✅,说明成功!你的仓库里会自动多出一个
live/my_live.m3u文件。

五、 第四步:串联配置与上机
最后,我们要告诉 config.json 去读取这个自动更新的直播文件。
修改 config.json

- 找到
"lives"部分,填入你的自动化源地址。用户名和仓库名改成自己的。
- 找到
"lives": [
{
"name": "🚀自动更新源",
"type": 0,
"url": "https://ghproxy.net/https://raw.githubusercontent.com/你的用户名/CyberTV/main/live/my_live.m3u",
"playerType": 1
},
](注:只需替换选中部分)
获取订阅链接
- 你的最终 TVBox 订阅链接为:
https://ghproxy.net/https://raw.githubusercontent.com/你的用户名/CyberTV/main/config.json
- 你的最终 TVBox 订阅链接为:
TVBox 设置
- 打开 TVBox -> 设置 -> 配置地址 -> 输入上面的链接 -> 确定。

- 打开 TVBox -> 设置 -> 配置地址 -> 输入上面的链接 -> 确定。
- 加载资源

六、 避坑指南 & 总结
- 大小写敏感:GitHub 严格区分大小写,
CyberTV和cybertv是两个地址,填错会报错 404。 - 网络问题:TVBox 内尽量使用
ghproxy.net或cdn.jsdelivr.net加速链接,不要直接用raw.github...,否则国内很难连上。 - 关于账号风控:新注册的 GitHub 账号如果频繁运行 Actions 可能会被标记。如果遇到 Actions 被禁用,可以直接在
config.json中引用咖啡伴侣大佬的原始链接作为备用方案。
通过这套方案,点播源的 Jar 包在自己手里(稳),直播源每天自动更新(新),堪称目前最完美的 TVBox 养老方案!
版权声明:本文由 赛博61区 原创发布,转载请注明出处。