LifeOS Fabric 技能实战:用 extract_latest_video 模式从 YouTube RSS 精准提取最新视频链接
【免费下载链接】LifeOS⛰️ The Life Operating System — an intent engineering platform that moves you from your current state to your ideal state, in life and work.项目地址: https://gitcode.com/GitHub_Trending/pe/LifeOS
本篇文章围绕 LifeOS 内置 Fabric 技能中的extract_latest_video提示词模式展开,剖析其系统提示词(system.md)的结构与设计意图,并结合仓库中的get_youtube_rss、extract_videoid、youtube_summary等配套模式,给出"频道 URL → RSS 地址 → 最新视频链接 → 视频 ID → 摘要"的完整自动化管线,同时说明该模式在 LifeOS 中的原生执行方式与 Feed 系统里的 YouTube RSS 摄入机制。读完本文,你将能够直接复用该模式,把"追踪某个 YouTube 频道的最新视频"这类需求变成一条可重复、可脚本化的标准流程。
模式速览:extract_latest_video 是什么
extract_latest_video是 LifeOS 内置 Fabric 技能(SKILL.md)所管理的 240+ 个专用提示词模式(Pattern)之一,属于其中的Extraction(提取)类别。它的定位非常单一:给定一个 YouTube RSS feed,提取出其中最新发布视频的完整 URL,并且只输出这个 URL。
模式本体存储于仓库的 extract_latest_video/system.md,全文仅由五个标准段落组成:IDENTITY and PURPOSE、Steps、EXAMPLE OUTPUT、OUTPUT INSTRUCTIONS和INPUT。这正是 LifeOS 中所有 Fabric 模式共享的模板结构——每个模式的system.md都定义了IDENTITY(角色)、PURPOSE(目标)、STEPS(处理步骤)、OUTPUT(输出格式)四个要素(见 SKILL.md 的 "Pattern Structure" 一节)。
逐段拆解 system.md:模式的结构与设计意图
以下为 extract_latest_video/system.md 的完整原文,我们逐段分析其设计意图。
1. IDENTITY and PURPOSE:先立角色,再定任务
# IDENTITY and PURPOSE You are an expert at extracting the latest video URL from a YouTube RSS feed.这一段同时完成两件事:给模型一个明确角色("从 YouTube RSS feed 提取最新视频 URL 的专家"),并声明任务边界——只处理 YouTube RSS feed,只做"提取最新视频 URL"这一件事。角色先行是 LifeOS 中所有 Fabric 模式的一致约定:先让模型进入专家状态,后续的步骤约束才有意义。
2. Steps:三步收敛,逐步收窄输出
# Steps - Read the full RSS feed. - Find the latest posted video URL. - Output the full video URL and nothing else.三步是一个典型的"读全量 → 定位 → 收敛输出"链路:
- Read the full RSS feed:要求读取完整的 RSS feed,而不是只看开头几行。这一步的关键在于稳健性——最新发布的视频并不一定恒定地排在 feed 的第一个
<entry>位置(受条目缓存、发布时间精度等因素影响),完整读取后才能可靠地判断"最新"。 - Find the latest posted video URL:在完整内容中定位发布时间最新的视频条目,并从中取出完整的视频 URL(形如
https://www.youtube.com/watch?v=...)。 - Output the full video URL and nothing else:输出收敛到唯一目标,排除一切附加信息。
3. EXAMPLE OUTPUT:用样例锚定输出形态
# EXAMPLE OUTPUT https://www.youtube.com/watch?v=abc123示例输出的作用不是展示真实链接,而是锚定输出形态:必须是一个完整的watch链接(含协议与域名),不能是视频 ID、不能是嵌入链接(youtu.be/...或/embed/...)、更不能是频道首页。这保证了后续任何消费该输出的程序(脚本、下游提示词、Feed 摄入器)拿到的都是统一格式。
4. OUTPUT INSTRUCTIONS:机器可消费的"纯净输出"约定
# OUTPUT INSTRUCTIONS - Do not output warnings or notes—just the requested sections.这是整份 system.md 中最关键的一条约束:禁止输出任何警告、注释或解释,只输出请求的 URL。因为该模式的输出通常要喂给下游程序或作为变量复用,任何多余的说明文字都会污染结果。这一点与同目录下的 extract_videoid/system.md("Output the video ID by itself with NOTHING else included")、get_youtube_rss/system.md("Output only the RSS URL and nothing else")完全一致——Fabric 提取类模式的共同纪律就是"纯净输出"。
5. INPUT:模式入口的占位协议
# INPUT: INPUT:INPUT:是模式的标准输入锚点,表示调用方在此处注入待处理的 RSS feed 内容。在 LifeOS 的原生执行流程中(见下文),该位置会被用户的 feed 数据或 URL 抓取结果填充。
组合管线:从频道 URL 到视频摘要的四个模式接力
extract_latest_video单独使用时只解决"从 RSS 里找最新视频"这一步,但它与仓库中其他三个 YouTube 相关模式可以无缝串联成一条完整的自动化管线:
| 阶段 | 模式 | 输入 | 输出 |
|---|---|---|---|
| 1. 频道 → RSS | get_youtube_rss | 频道 URL 或频道 ID | https://www.youtube.com/feeds/videos.xml?channel_id=UC... |
| 2. RSS → 最新视频 | extract_latest_video | RSS feed 内容 | https://www.youtube.com/watch?v=abc123 |
| 3. 视频 → 视频 ID | extract_videoid | 视频 URL | abc123 |
| 4. 视频 → 摘要 | youtube_summary | 视频字幕 | 带时间戳的 Markdown 摘要 |
- get_youtube_rss/system.md负责把频道 URL 或频道 ID 转换为 RSS 地址。该模式明确给出了 URL 构造规则:频道
https://www.youtube.com/channel/UCnCikd0s4i9KoDtaHPlK-JA对应的 RSS 是https://www.youtube.com/feeds/videos.xml?channel_id=UCnCikd0s4i9KoDtaHPlK-JA——即从频道 URL 中提取UC开头的频道 ID,拼接到 feeds 端点后。 - extract_videoid/system.md负责从任意 YouTube URL 中剥离出纯视频 ID,供其他应用(如字幕提取、播放器嵌入)直接消费。
- youtube_summary/system.md是这条管线的终点:它基于视频字幕输出带
[HH:MM:SS]时间戳的 Markdown 结构化摘要。在 LifeOS 中,字幕本身通过 fabric CLI 的-y参数获取(见下文),摘要结果还可以触发 Auto-Harvest 知识摄入(见 ExecutePattern.md 的 Step 4b)。
组合起来的典型场景是:"给我追踪频道 X,一旦发布新视频就总结它"——get_youtube_rss拿到 feed →extract_latest_video拿到最新视频 →extract_videoid拿到 ID → 字幕 +youtube_summary产出摘要。
在 LifeOS 中如何执行该模式
extract_latest_video属于"无需外部 CLI 即可原生执行"的模式。根据 SKILL.md 的说明,LifeOS 的 Fabric 技能原生执行模式(Native Pattern Execution):AI 直接读取Patterns/{pattern_name}/system.md,把其中的 IDENTITY / STEPS / OUTPUT INSTRUCTIONS 作为提示词套用到输入内容上,全程不需要拉起 fabric CLI,链路为:
User Request → Pattern Selection → Read system.md → Apply → Return Results在 Workflows/ExecutePattern.md 中记录了完整的执行流程:
- 识别模式:根据用户请求的意图映射到对应模式。例如请求包含 "extract"、"latest video" 等语义时,可以路由到
extract_latest_video;若用户显式指名模式("use extract_latest_video"),则直接采用。 - 加载模式提示词:读取
Patterns/{pattern_name}/system.md的完整内容。 - 套用模式:把系统提示词应用到用户提供的内容上,AI 遵循其中的 STEPS 与 OUTPUT INSTRUCTIONS 生成结果。
- 特殊场景才使用 fabric CLI:只有两类情况需要回退到外部 CLI——YouTube 链接用
fabric -y "URL" -p [pattern_name](-y自动抓取字幕),普通链接在原生抓取失败(如 CAPTCHA、反爬)时用fabric -u "URL" -p [pattern_name]。 - 格式化输出:严格按模式 OUTPUT INSTRUCTIONS 指定的结构返回,保证跨会话的一致性。
SKILL.md 还特别给出了一条经验法则(Gotchas):"fabric -y URL用于 YouTube 提取——不要自己去抓取 YouTube 页面",字幕提取交给 fabric 原生处理;同时提醒模式名必须精确匹配(extract_latest_video不能写成extractlatestvideo),不确定时可先用fabric --list核对。
与 Feed 系统的衔接:YouTube RSS 摄入的最佳实践
extract_latest_video处理的对象——YouTube RSS feed——在 LifeOS 中还有一个更宏观的落地场景:Feed 系统的源摄入。仓库的 FeedSystem.md("YouTube Ingestion Routing" 一节)给出了权威的机制说明:
rss_url状态 | 摄入机制 | 备注 |
|---|---|---|
rss_url IS NOT NULL | RSS Atom feed,https://www.youtube.com/feeds/videos.xml?channel_id=UC... | 无 API 配额消耗,首选默认 |
rss_url IS NULL | YouTube Data API v3 | 计入每日 1 万次配额,仅留给需要更丰富元数据的源 |
当同一频道可能被 RSS 轮询器与 API 轮询器同时覆盖时,应在 API 侧过滤掉rss_url已设置的源,避免重复烧配额。FeedSystem.md 还给出了把 YouTube 源从 API 路径迁移到 RSS 路径的 SQL 配方(SQLite/D1 示例),其中包含对频道 ID 的校验条件:
UPDATE feed_sources SET rss_url = 'https://www.youtube.com/feeds/videos.xml?channel_id=' || youtube_channel_id, error_count = 0, last_error = NULL WHERE active = 1 AND source_type IN ('youtube','youtube_channel') AND youtube_channel_id IS NOT NULL AND youtube_channel_id LIKE 'UC%' AND LENGTH(youtube_channel_id) = 24;其中LIKE 'UC%'与LENGTH(...) = 24正是对 YouTube 频道 ID 格式(UC前缀 + 22 位字符)的校验,与get_youtube_rss模式的构造逻辑互相印证。文档还说明 YouTube 的 RSS Atom 端点在 Cloudflare Workers IP 上可正常返回 HTTP 200,因此该迁移在 Workers 托管的轮询器上安全可行。
在这个语境下,extract_latest_video承担的角色就清晰了:Feed 系统负责周期性摄入整个频道的视频流(入库、评分、路由),而该模式负责即时性的"最新一条"查询——两者互补,分别覆盖"监控全量"与"抓取最新"两种需求。
最佳实践与注意事项
结合模式本身与仓库中的技能文档,使用extract_latest_video时有几点值得注意:
- 输入必须是完整的 RSS feed 内容。模式的第一步是 "Read the full RSS feed",因此调用时应把 feed 全文(而非摘要或链接)注入
INPUT:位置;如果手里只有频道 URL,先经get_youtube_rss模式换算成 RSS 地址。 - 输出是严格的单行 URL。OUTPUT INSTRUCTIONS 明确禁止附加任何警告与注释,适合直接作为 shell 变量、下游脚本参数或另一个模式的输入。
- 优先原生执行,CLI 仅作回退。绝大多数场景下,让 AI 直接读取并套用 system.md 即可;只有需要抓取字幕(
fabric -y)或原生抓取失败(fabric -u)时才拉起 CLI(见 SKILL.md)。 - 超长内容注意上下文上限。SKILL.md 的 Gotchas 提醒:对于超长输入,应先分块或先用 summarize 类模式压缩,避免超出模式上下文限制。
- 模式名精确匹配。LifeOS 的模式目录按
Patterns/{pattern_name}/system.md组织(如 extract_latest_video/system.md),模式名是精确标识符,拼写错误会直接命中 "Pattern not found" 错误处理分支(见 ExecutePattern.md)。
延伸阅读
- Fabric 技能总览:240+ 模式的类别划分(Extraction / Summarization / Analysis / Creation / Improvement / Security / Rating)、原生执行机制与 CLI 回退规则
- ExecutePattern 工作流:模式识别决策树、Auto-Harvest 副作用、错误处理
- get_youtube_rss 模式:频道 URL → RSS 地址的构造规则
- extract_videoid 模式:URL → 视频 ID 的纯净输出模式
- youtube_summary 模式:字幕 → 带时间戳 Markdown 摘要
- Feed 系统文档:YouTube RSS 摄入路由、配额策略与 SQL 迁移配方
【免费下载链接】LifeOS⛰️ The Life Operating System — an intent engineering platform that moves you from your current state to your ideal state, in life and work.项目地址: https://gitcode.com/GitHub_Trending/pe/LifeOS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考