last30days-skill v2.1 版本解析:X 搜索内置化与 YouTube 字幕源的实现原理
last30days-skill v2.1 版本解析X 搜索内置化与 YouTube 字幕源的实现原理【免费下载链接】last30days-skillAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary项目地址: https://gitcode.com/GitHub_Trending/la/last30days-skill本文基于 docs/v2.1-launch-copy.md 的 v2.1 发布说明完整还原该版本的两大主线功能——内置 XTwitter搜索客户端与 YouTube 字幕transcript作为第四信息源——的设计动机、配置方式与源码级实现细节。读完后你可以理解 last30days-skill 如何在零 API 密钥的前提下接入 X 与 YouTube并掌握AUTH_TOKEN/CT0/XAI_API_KEY的完整配置链路。版本背景Bird CLI 消失v2.1 必须自给自足v2.1 的发布动因写在文档开头Bird CLIsteipete/bird已从 npm 上被弃用deprecated其 GitHub 仓库也被删除且没有人 fork 后重新发布。这意味着 v2.0 时代依赖外部birdCLI 的 X 搜索链路随时会断掉。v2.1 的解法是在仓库内 vendor内置Bird v0.8.0 的一个仅搜索子集用户不再需要安装任何外部 X 搜索工具。当前仓库中该内置客户端位于 skills/last30days/scripts/lib/vendor/bird-search/其 package.json 给出了权威版本信息{ name: bird-search, version: 0.8.0, description: Vendored Bird CLI search subset for /last30days, engines: { node: 22 }, license: MIT, attribution: Based on steipete/bird v0.8.0 by Peter Steinberger (MIT License) }三个关键事实可以从这里确认内置的是 v0.8.0、MIT 许可、运行前提是 Node.js 22。这正好对应发布文案中just Node.js 22 plusAUTH_TOKENandCT0的表述。第二个动因是 YouTubev2.1 受 Peter Steinberger 的 yt-dlp summarize 工具链启发直接使用 yt-dlp不引入 summarize 依赖搜索 YouTube、抓取观看量并提取自动生成字幕喂给合成引擎。零 API 密钥、零成本。功能一X 搜索完全内置认证配置AUTH_TOKEN 与 CT0X 搜索优先使用显式环境变量认证目的是让本地运行保持 headless避免浏览器 cookie 弹窗和 macOS Keychain 提示。发布文案给出的推荐步骤是在已登录 x.com 的浏览器中打开开发者工具复制x.com域下的auth_token和ct0两个 cookie保存为# ~/.config/last30days/.env 或 .claude/last30days.env AUTH_TOKENyour_auth_token CT0your_ct0_token官方发布文案中给出的安装块 env 行也一致AUTH_TOKEN... # recommended for X search CT0... # recommended for X search XAI_API_KEYxai-... # optional X fallbackxAI 回退路径如果不愿意提供AUTH_TOKEN和CT0可以改设XAI_API_KEY走 xAI 的x_search后端。README 中同样把XAI_API_KEY列为 X 搜索的可选密钥路径之一见 README.md 的源表与 keychain 存储示例。验证命令确认内置客户端可认证直接运行node ~/.claude/skills/last30days/scripts/lib/vendor/bird-search/bird-search.mjs --whoami在仓库内路径对应为 skills/last30days/scripts/lib/vendor/bird-search/bird-search.mjs注意~/.claude/skills/是 skill 安装目录仓库内相对路径是skills/last30days/。源码纵深Python 侧如何驱动内置客户端X 搜索的 Python 侧入口是 skills/last30days/scripts/lib/bird_x.py值得关注的实现点有深度配置DEPTH_CONFIG {quick: 12, default: 30, deep: 60}控制每次搜索请求的结果数分别对应 30/45/60 秒超时bird_x.py#L48-L52。环境白名单_SUBPROCESS_ENV_ALLOWLIST精确限定了传给 Node 子进程的环境变量面——平台变量、Node TLS/代理配置以及 X 会话 cookieAUTH_TOKEN、CT0及其TWITTER_*别名。.env中其他无关密钥一律不会到达这个被扫描排除的 vendor 代码源码注释引用了 issue #1063见 bird_x.py#L64-L78。强制禁用浏览器 cookie 回退_subprocess_env()中硬编码BIRD_DISABLE_BROWSER_COOKIES1保证正常管道运行不会触发 Safari/Chrome Keychain 弹窗——这正是发布文案no browser-cookie prompts承诺的底层实现。反爬重试Twitter 边缘节点偶尔返回 HTML 反爬拦截页而非 JSON_run_bird_search()对非 JSON stdout 最多重试 2 次、间隔 5 秒并把该失败形态标记为 schema drift 而非无结果bird_x.py#L346-L424。零结果重试阶梯search_x()在 0 结果时依次降级——先尝试多词 OR 组(term A OR term B) since:DATE再截短到前 2 个词最后锚定到最强特征词排除best/hot/latest等低信号词宁可返回 0 也不扩散到无锚点的通用词bird_x.py#L457-L511。探针probe_works()用from:x since:...发一条 1 结果探针廉价验证认证是否真正能返回数据网络超时会被判为不确定而不降级状态避免误报故障bird_x.py#L228-L256。认证状态如何被判定skills/last30days/scripts/lib/env.py 负责把配置里的AUTH_TOKEN/CT0解析进运行时配置first COMPLETE pair wins——第一个成对出现的来源获胜随后调用bird_x.set_credentials()注入模块级凭据is_bird_authenticated()返回的认证源字符串如env AUTH_TOKEN最终出现在诊断输出中见 env.py#L1067-L1075 附近逻辑。这也解释了为什么get_bird_status()返回的username字段实际是认证来源标签。功能二YouTube 字幕作为第四信息源使用方式零密钥、零成本启用 YouTube 源只需要安装 yt-dlpbrew install yt-dlp # 或 pip install yt-dlp安装后/last30days会自动搜索 YouTube、抓取观看量并从头部视频提取自动生成字幕。首次运行向导first-run setup wizard也会自动完成 yt-dlp 安装——见 SKILL.md 中 Step 0 的流程说明run_auto_setup()会提取 cookie、安装 yt-dlp 与 Digg CLI零交互。深度配置与字幕预算skills/last30days/scripts/lib/youtube_yt.py 中的两个表定义了工作预算DEPTH_CONFIG {quick: 6, default: 8, deep: 40} # 搜索/抓取的候选视频数 TRANSCRIPT_LIMITS {quick: 0, default: 2, deep: 8} # 实际提取字幕的视频数上限即 quick 档只搜视频拿元数据不抓字幕default 档对前 2 个视频提取字幕deep 档对前 8 个提取。关于字幕长度发布文案中写的是截断到每视频约 500 词而当前仓库实现的截断常量为TRANSCRIPT_MAX_WORDS 5000youtube_yt.py#L59说明该阈值在 v2.1 之后上调过以仓库当前值为准。字幕提取的技术链路search_youtube()通过ytsearchN:core_topic让 yt-dlp 直接输出 JSON 元数据解析出view_count、like_count、comment_count、upload_date、时长与描述然后软日期过滤不加--dateafterYouTube 搜索按相关性排序严格日期过滤对常青主题常返回 0 条改为 Python 侧软过滤——窗口内结果 ≥3 条时只保留窗口内否则全部保留youtube_yt.py#L520-L532 与 L607-L613。按观看量降序排序头部视频优先进入字幕提取队列。字幕抓取yt-dlp--write-auto-subs --sub-lang en,es,pt --sub-format vtt语言优先级可经LAST30DAYS_YT_SUB_LANGS调整默认en,es,pt。非零退出码被明确判定为真实抓取错误限流/机器人验证/网络而非无字幕瞬态错误按每视频错位的退避2.0 * (attempt1) 0~1s抖动重试 2 次youtube_yt.py#L836-L918。并发与搜索缓存进程级信号量把并发 yt-dlp 子进程限制在 2_YTDLP_MAX_CONCURRENT 2防止比较模式comparison fan-out下相同 IP 踩踏 YouTube 限流同一次运行内相同查询经 inflight 合并 缓存去重youtube_yt.py#L77-L87。高光抽取extract_transcript_highlights()过滤口播填充词subscribe、welcome back 等按具体度数字、专有名词、主题词重叠为句子打分取 Top 5 可引用片段进入合成。此外源码还支持两个发布文案未提的运维能力从源码结构看属于后来的增强LAST30DAYS_YOUTUBE_SSH_HOST可将 yt-dlp 路由到住宅 IP 的远程主机以绕开数据中心 IP 的 bot-wallyoutube_yt.py#L302-L338以及默认注入player_clientandroid的 extractor-args 以绕过 web bot-gateyoutube_yt.py#L344-L399。统一的评分管道发布文案强调YouTube 走与 Reddit 和 X 相同的评分管道——相关性、时效性、互动量。 源码印证了这一点每条视频在解析时就计算relevancetoken_overlap_relevance与 bird_x.py 的_compute_relevance同源engagement携带 views/likes/commentsdate提供时效信号——三者随后进入与社交帖子一致的排序与融合阶段。字幕则与社交帖子一起喂给合成引擎一条 20 分钟评测包含的信号量是一条推文的 10 倍这一卖点由此落地。输出契约与社区沟通发布文案还固定了两处对外输出格式供后续版本保持一致SKILL.md 状态行源统计输出格式├─ X: {N} posts │ {N} likes │ {N} reposts面向 issue 回复与社交发布的核心信息点原文档保留的沟通模板供维护者参考对 GitHub issue #19 的回复要点Bird 已弃用且仓库被删v2.1 直接内置 X 搜索无需外部 CLI、无需npm install、无需 brew只需 Node.js 22 与AUTH_TOKEN/CT0或XAI_API_KEY回退同时新增 YouTube 作为第四源推荐一次性从 x.com 复制 cookie 存入 env 以避开浏览器 cookie 与 Keychain 弹窗。社媒短版280 字符内与 thread 版的四个帖子分别讲 YouTube 字幕源、X 搜索内置化、统一评分管道与零成本Justbrew install yt-dlp、以及试用方式/last30days [any topic]——Reddit X YouTube Web. Four sources, one command.适用前提与限制以当前仓库内容为准复现 v2.1 这两项能力需要满足X 搜索要求 Node.js 22engines字段且AUTH_TOKEN与CT0成对出现才会被判为已认证YouTube 源要求本机或配置的 SSH 远程主机装有 yt-dlp且 quick 档不提取字幕TRANSCRIPT_LIMITS.quick 0。YouTube 抓取走公共数据接口、无 API 密钥但受 YouTube 限流与 bot-gate 影响源码为此内置了重试、退避与并发限制X 搜索同样可能遭遇反爬拦截页客户端已做非 JSON 重试与失败形态分类。两项功能均由 skills/last30days/SKILL.md 的首次运行向导自动完成依赖安装配置则集中存放于~/.config/last30days/.env或.claude/last30days.env。【免费下载链接】last30days-skillAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary项目地址: https://gitcode.com/GitHub_Trending/la/last30days-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

shadcn/ui:Radix 迁移 Base UI 的类字符串改写完全指南(class-mapping 层)

shadcn/ui:Radix 迁移 Base UI 的类字符串改写完全指南(class-mapping 层)

shadcn/ui:Radix 迁移 Base UI 的类字符串改写完全指南(class-mapping 层) 【免费下载链接】ui A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Sourc…

2026/10/28 13:26:03 阅读更多 →
1.5匹空调怎么选?米家KFR-35GW/N1A1新一级能效深度解析

1.5匹空调怎么选?米家KFR-35GW/N1A1新一级能效深度解析

选空调这件事,我琢磨了很久。尤其是 1.5 匹这个档位,几乎是卧室和中小客厅的主流选择,市面上从一千多到四千多的机器都有,参数看起来差不多,价格却能差出一大截。最近在看米家 KFR-35GW/N1A1 这台机器时,发…

2026/10/29 15:20:08 阅读更多 →
1.5匹新一级能效空调选购指南:看懂型号、APF与真实省电

1.5匹新一级能效空调选购指南:看懂型号、APF与真实省电

买空调这件事,最让人纠结的往往不是制冷效果,而是那一串看起来又像产品编码、又像型号代号的字符串,以及“新一级能效”“巨省电”“1.5匹”等概念被堆在一起之后的真实性能。很多人把一台米家空调加到购物车以后,仍然说不清 KFR-…

2026/10/28 14:21:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/28 23:48:14 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/29 8:45:01 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/29 9:52:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/28 22:10:30 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/29 9:51:34 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/29 8:44:28 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 16:58:40 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/29 9:42:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 19:25:09 阅读更多 →