拓冰建站拓冰建站
首页 / 资讯中心 / 正文

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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门