用 Vue+Express 搭建可控入口的直播应用骨架,并把 Deepgram 实时字幕作为自动化工作流起点,沉淀可检索可运营的内容资产。

用 Vue+Express 搭直播:AI 实时字幕与自动化入口
直播不是“开个推流地址就完事”。真正让直播变成业务能力的,是可控的访问入口、可复用的前端结构、以及能被嵌入工作流的 AI 能力(比如实时字幕、质检、内容标签、检索)。
我见过不少团队把直播做成“一次性活动页”:一个播放器、一个链接、一个临时口令。活动当天勉强能跑,活动结束后内容散落在各处,字幕和回放剪辑全靠人力补。更糟的是,入口校验写在前端,任何人打开 DevTools 都能把“秘密口令”扒出来。
这篇文章把 Deepgram 的教程思路(Vue 3 + Vue Router + Vuex + Express)改写成一个更贴近业务的案例:为小团队搭一个可扩展的直播 Web 应用骨架,把“访问控制 + AI 实时字幕”当作自动化工作流的一部分,放进「人工智能在媒体与内容产业」系列的叙事里:内容生产、分发、审核与再利用,不应该全靠手工。
先把业务问题讲清楚:直播需要“可运营的结构”
要点很直接:**直播应用的最低可运营形态(MVO)**至少包含两件事——
- 受控入口:你得决定谁能进来、什么时候能进来、进来后能看到什么。
- 可沉淀内容:直播产生的不只是视频流,还有语音内容。把语音转成文字,你才有后续的内容推荐、用户画像、内容审核、搜索与剪辑。
Deepgram 原文的重点是工程搭建:用 Vue 3 做前端结构,用 Vue Router 做路由与导航守卫,用 Vuex 管“允许访问”的状态,再用 Express 做后端接口,把秘密口令放到 .env 里。
从媒体与内容产业的角度看,这套结构的价值在于:把 AI 能力(实时字幕)放在一个可控的业务流程里。
一句话总结:播放器只是展示层;路由守卫、状态管理和后端接口,才是把直播接入业务工作流的“骨架”。
前端骨架:Vue Router + 导航守卫,把入口“关上”
要点先给结论:用 Vue Router 的 beforeEnter 导航守卫,你可以在路由层强制执行访问规则。这比在组件里做“按钮禁用”靠谱得多,因为用户直接输入 URL 也会触发守卫。
在这个案例里,我们有两个页面:
/:EnterCode(输入口令的落地页)/stream-channel:StreamChannel(直播播放与字幕页)
为什么导航守卫是直播应用的关键点
直播的常见业务场景包括:
- 付费会员场(口令/一次性码/登录态)
- 内部培训(只开放给员工或指定部门)
- 发布会媒体场(不同人群不同画面或不同延迟策略)
你可以先从“口令”开始,但别把口令写在前端。正确做法是:前端只负责收集输入与跳转;校验逻辑放在后端。
一个实用的守卫策略(比 demo 更像生产)
原文用 Vuex 的 allowAccess 控制能否进入 /stream-channel。你可以沿用这个结构,但建议加两个改进:
- 把
allowAccess替换成带过期时间的 token 状态(哪怕是简化版),避免用户打开一次后永久可进。 - 把 alert 改成 UI 提示(toast/inline error),避免打断式体验。
路由层的逻辑像这样:
- 若
store.state.allowAccess === true:放行 - 否则:重定向到 EnterCode
这一步解决的是“入口管控”。下一步才是“怎么安全地验证口令”。
状态管理:Vuex 不只是“存个变量”,它是流程开关
结论先说:在直播业务里,Vuex(或 Pinia)最常用的价值不是复杂数据流,而是把“流程节点”变成可测试、可追踪的状态机。
原文用 Vuex 实现了经典流转:
- 组件
dispatch action - action
commit mutation - mutation 修改
state.allowAccess
这在 demo 里看起来有点“杀鸡用牛刀”,但一旦你要接入 AI 实时字幕和内容自动化,它就变得非常必要。
把“允许访问”当作工作流的第一道闸
我建议把 allowAccess 视为工作流的第一道闸门,后续可以串更多自动化能力,例如:
- 进入频道后自动申请“字幕服务临时密钥”(后端签发)
- 自动启动麦克风捕获(用户授权后)
- 自动把字幕片段按 30 秒/1 分钟切片,发到后端做摘要与标签
当你开始做这些时,如果没有统一的状态管理,你会在组件间传 props 传到崩溃。
后端接口:Express + .env,把秘密留在服务器
结论很明确:任何“秘密口令/第三方 API key/签名密钥”都不应该出现在前端代码里。把它们放进 .env,用 Express 提供校验接口。
原文提供了一个 /secret-code 的 POST 端点:
- 前端把用户输入发过来
- 后端与
process.env.SECRET_CODE比对 - 返回 “Correct code” 或 “Incorrect code”
把 demo 升级成更安全、更像业务的做法
如果你要把这个应用真的用在客户场景里,我建议至少做到:
- 返回结构化 JSON,别返回字符串
- 例如
{ ok: true, reason: null }
- 例如
- 失败返回 401/403,别总是 200
- 这样前端和监控更清晰
- 加上简单的速率限制与日志(防暴力猜码)
- 口令最好是一次性码或短期码,避免泄露后长期可用
这些都不复杂,但能把“教程项目”拉到“可交付项目”的及格线。
把 Deepgram 放进自动化工作流:实时字幕只是起点
这篇 RSS 的下一步(系列后续)会把 Deepgram token 端点加进来,并在频道页实现字幕组件。这里先把“媒体与内容产业”的核心价值讲透:实时字幕不是为了好看,是为了把直播变成可计算的内容资产。
为什么 AI 实时字幕会直接影响增长与运营
几个非常现实的收益:
- 无障碍与合规:字幕提升可访问性;在不少地区/行业是硬要求。
- 内容再利用:字幕文本可以自动生成摘要、时间轴亮点、短视频脚本。
- 内容审核与风控:把敏感词、违规表述、品牌禁词做实时/准实时检测。
- 内容推荐与检索:文本是搜索与推荐系统的燃料,视频本身很难直接检索。
直播的 ROI 往往不在“直播当下”,而在直播之后的分发、剪辑与复盘。字幕让这些自动化成为可能。
一个小团队可落地的“字幕自动化流水线”(建议版)
你可以在现有架构上扩展出这样一条链路:
- 用户通过受控入口进入频道(Vue Router Guard + Vuex)
- 前端请求后端签发 Deepgram 临时 token(避免暴露主 key)
- 前端把音频流送到 Deepgram(WebSocket/SDK)
- 字幕片段写入后端(按时间切片存储)
- 自动生成:
- 直播摘要(用于落地页/公众号)
- 章节与时间轴(用于回放导航)
- 关键词/话题标签(用于内容推荐与用户画像)
这就是“AI 语音助手与自动化工作流”的典型模式:机器处理重复劳动,人只做决策与审核。
常见问题(团队最容易踩的坑)
1) 只用前端校验口令行不行?
不行。前端代码对用户完全透明,口令会被直接看到。正确做法是:后端校验 + .env 管理密钥。
2) Vuex 有必要吗?Pinia 更轻?
如果是新项目,我个人更偏向 Pinia;但在“教程迁移/团队已有栈”的情况下,Vuex 依然可用。关键不是库,而是你要有一个清晰的状态边界(访问态、token、字幕连接态、错误态)。
3) CORS、端口、开发环境怎么处理更省心?
开发期前后端分端口很常见。建议配一个代理(devServer proxy)或统一用同域反向代理,减少 CORS 复杂度。原文用 cors() 中间件是最直观的起步。
你现在可以做的下一步
如果你正在做直播、在线培训、发布会或任何“内容型业务”,我建议按这个顺序推进:
- 先把 Vue 的两页结构搭起来(入口页 + 频道页)
- 用 Router Guard 把入口锁住(别靠 UI)
- 用 Express 把口令与 token 管起来(
.env) - 接入 Deepgram 字幕,把字幕存下来(别只显示在页面上)
- 把字幕接到后续自动化:摘要、标签、检索、审核
直播应用的竞争力,越来越像“内容系统的能力”而不是“播放器的能力”。当你的字幕、标签、摘要、审核都能自动跑起来,内容团队的时间会被释放出来,去做更值钱的事:选题、叙事、分发策略和增长实验。
下一个更值得思考的问题是:当字幕和内容标签实时生成后,你的产品要如何把它们变成可运营的功能?