Lazy loaded image
项目开发
📺TV站点部署
Words 678Read Time 2 min
2025-7-19
2026-1-13
type
summary
status
category
tags
slug
date
password
icon
状态
子标签
标签
日期
Jan 13, 2026 08:03 AM
CONTENT
 

1.0

技术栈

前端HTML5 + CSS3 + JavaScript (ES6+)
样式Tailwind CSS
视频HLS.js + ArtPlayer
后端Node.js + Serverless Functions
存储localStorage 本地存储
代理服务端 HLS 代理和处理
 
 

API

标准的 苹果 CMS V10 API 格式 or 兼容大部分CMS资源站点:
搜索接口https://example.com/api.php/provide/vod/?ac=videolist&wd=关键词
详情接口https://example.com/api.php/provide/vod/?ac=detail&ids=视频ID

添加自定义源

在设置面板中选择"自定义接口",输入接口地址:
 

播放器快捷键

  • 空格键: 播放/暂停
  • 左右箭头: 快退/快进
  • 上下箭头: 音量增加/减小
  • M 键: 静音/取消静音
  • F 键: 全屏/退出全屏
  • Esc 键: 退出全屏
 
 
 

成品

notion image
 
 
 
 

 

2.0

技术栈

分类
主要依赖
前端框架
Next.js 14 · App Router
UI & 样式
语言
TypeScript 4
播放器
代码质量
ESLint · Prettier · Jest
部署
Docker · Vercel · CloudFlare pages
 

环境变量

变量
说明
可选值
默认值
USERNAME
redis 部署时的管理员账号
任意字符串
(空)
PASSWORD
默认部署时为唯一访问密码,redis 部署时为管理员密码
任意字符串
(空)
SITE_NAME
站点名称
任意字符串
MoonTV
ANNOUNCEMENT
站点公告
任意字符串
本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。
NEXT_PUBLIC_STORAGE_TYPE
播放记录/收藏的存储方式
localstorage(本地浏览器存储)、redis(仅 docker 支持)
localstorage
REDIS_URL
redis 连接 url,若 NEXT_PUBLIC_STORAGE_TYPE 为 redis 则必填
连接 url
NEXT_PUBLIC_ENABLE_REGISTER
是否开放注册,仅在 redis 部署时生效
true / false
false
NEXT_PUBLIC_SEARCH_MAX_PAGE
搜索接口可拉取的最大页数
1-50
5
NEXT_PUBLIC_IMAGE_PROXY
默认的浏览器端图片代理
url prefix
(空)
 

部署比较

看哪个功能更贴合实用场景
现阶段的版本只支持管理员配置功能,即
支持在运行时动态变更服务配置
设置环境变量 USERNAME 和 PASSWORD 即为站长用户,站长可设置用户为管理员
站长或管理员访问 /admin 即可进行管理员配置

Vecel静态部署

先爬取部分高质量视频源,编辑完config,再部署
 

Cloudflare+D1数据库部署

 
 

成品

notion image
 
 
 
 
 
 
 

 

Roadmap

  1. 两个并行,看后期更新的功能情况
    1. tag分类自定义:libre > moon
    2. 源切换:moon > libre
  1. 无法靠一个站稳定,需要后期维护
 

 

Output

notion image
速度还挺快的
 
 
 
 
 

 
 
 
上一篇
Vibe Coding
下一篇
浏览器脚本备份