AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Video To Article

skill-librarier-f-video-to-article-skill-video-to-article-skill · by Librarier-f

当用户粘贴YouTube/B站等视频链接并要求将视频整理为文章、整理成文章、把视频内容写成文章、或类似请求时,立即使用此技能。自动下载字幕、翻译(如需要)、并生成精美的HTML文章。支持简体中文和英文两种输出语言。轻量高效,只保留必要的文件。

No reviews yet
0 installs
4 views
0.0% view→install

Install

$ agentstack add skill-librarier-f-video-to-article-skill-video-to-article-skill

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-librarier-f-video-to-article-skill-video-to-article-skill)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Video To Article? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

核心改进(2024.05.09 更新)

1. Cookie 处理优化

  • ✅ 自动生成标准 Netscape 格式的 cookies.txt
  • ✅ 直接使用用户提供的 SESSDATA 值
  • ✅ 保留 cookies.txt 用于后续使用
  • ✅ 修复了路径和格式错误问题

2. 内容完整性增强

  • ✅ 完整读取和处理 80% 以上的字幕内容
  • ✅ 直接在内存中处理,不保存中间文件
  • ✅ 不进行预截断,完整处理所有内容
  • ✅ 增加内容完整性验证逻辑

3. 文件管理简化

  • 只保留 cookies.txt,其他临时文件直接删除
  • ✅ 最终只生成一个 HTML 文章文件
  • ✅ 不生成元数据、分析报告等中间文件
  • ✅ 简化流程,提高处理速度

4. 工作流程优化

  • ✅ 简化步骤,直接在内存中处理字幕
  • ✅ 使用内置 HTML 模板,无需外部脚本
  • ✅ 改善错误处理和调试信息
  • ✅ 添加内容完整性检查清单

5. 高效生成策略

  • ✅ 直接读取字幕到内存,不保存中间文件
  • ✅ 基于模板直接生成 HTML,不使用 Python
  • ✅ 快速预览和调整
  • ✅ 清理临时文件,保持工作目录整洁

视频转文章技能

将视频的字幕内容转换为一篇结构清晰、排版精美的中文HTML文章。快速高效,只保留必要的输出文件。

快速安装

前置依赖

本 skill 依赖 yt-dlp 来下载视频字幕。已内置于 skill 目录,开箱即用:

video-to-article/
└── component/
    └── yt-dlp.exe    # Windows 版,已包含

> 如果内置版本无法使用,skill 会自动回退到系统 PATH 中的 yt-dlp。

macOS / Linux

如需手动安装:

# 方法一:使用 Homebrew(推荐)
brew install yt-dlp

# 方法二:使用 pip
pip3 install yt-dlp
Linux

如需手动安装:

# 方法一:使用 pip(推荐)
pip install yt-dlp

# 方法二:使用 pipx
pipx install yt-dlp

# 方法三:下载独立可执行文件
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp

安装 Skill

将本 skill 文件夹复制到 Claude Code 的 skills 目录:

# 克隆仓库
git clone https://github.com/YOUR_USERNAME/video-to-article.git

# 复制到 Claude Code skills 目录
# Windows
cp -r video-to-article "$HOME/.claude/skills/"

# macOS / Linux
cp -r video-to-article ~/.claude/skills/

验证安装

# 检查 yt-dlp 是否安装成功
yt-dlp --version

# 检查 skill 是否加载成功
# 在 Claude Code 中输入 /video-to-article 应该能看到 skill 说明

配置说明

yt-dlp 路径配置

skill 会按以下顺序检测 yt-dlp:

| 优先级 | 平台 | 路径 | |--------|------|------| | 1(内置) | Windows | {skill目录}/component/yt-dlp.exe | | 2 | Windows | C:/Program Files/yt-dlp/yt-dlp.exe | | 3 | macOS | /usr/local/bin/yt-dlp | | 4 | macOS | /opt/homebrew/bin/yt-dlp | | 5 | Linux | /usr/local/bin/yt-dlp | | 6 | Linux | /usr/bin/yt-dlp |

输出目录配置

默认输出目录:当前工作目录

可在 skill 调用时指定其他目录。

文章风格选项(HTML文章)

如果用户选择 HTML文章必须使用 AskUserQuestion 询问用户希望使用哪种风格

可选风格列表

| 序号 | 风格名称 | Style Name | 描述 | 设计特点 | |------|---------|-----------|------|---------| | 1 | 蓝白商务 | Blue & White Business | 默认风格,专业简洁 | 蓝色渐变Hero、白色卡片、衬线标题、柔和阴影 | | 2 | Notion深色 | Notion Dark Mode | Notion深色模式 | 深色背景、衬线标题、紧凑排版、彩色标注系统 | | 3 | Claude风格 | Claude Style | Claude经典设计系统 | 赭石红+米白背景、衬线字体、噪点纹理 | | 4 | 暗黑科技 | Cyber Tech | 赛博朋克/黑客帝国风格 | 深黑背景、霓虹光效、故障艺术、网格动画 | | 5 | 极简现代 | Minimal Modern | 简约留白、优雅衬线 | 极致留白、衬线字体、深绿强调 |

风格选择流程

> 注意AskUserQuestion 工具最多支持4个选项。

  1. 当用户提供视频链接并要求生成HTML文章时
  2. 第一步:使用 AskUserQuestion 询问风格(4个选项,极简现代包含在内):

``` 询问内容:请问您希望使用哪种文章风格? 选项:

  1. 蓝白商务(推荐)- 专业简洁,蓝色渐变Hero
  2. Notion深色 - 深色背景,彩色标注系统
  3. Claude风格 - 赭石红+米白,噪点纹理
  4. 极简现代 - 简约留白,深绿强调,中文数字

```

  1. 第二步(确认前):用户选完风格后,生成文章之前,主动提示还有另一种风格可选:

``` 询问内容:您选择了「XXX」风格。顺带一提,还有「暗黑科技」风格可选——赛博朋克风格,霓虹光效,要不要换? 选项:

  1. 不用了,就用「XXX」
  2. 换成暗黑科技

```

  1. 用户确认后,按对应风格的设计规范生成文章
  2. 如果用户未指定风格,默认使用蓝白商务 (Blue & White Business) 风格

风格规范文件

  • 蓝白商务SKILL.md 内置规范 + references/blue-white-business-style.md
  • Notion深色SKILL.md 内置「Notion深色风格设计规范」章节
  • Claude风格references/claude-style.md
  • 暗黑科技references/cyber-tech-style.md
  • 极简现代references/minimal-modern-style.md

⚠️ 内容来源与版权说明(重要)

在使用本技能生成的内容时,必须遵守以下来源标注要求:

为什么需要来源标注?

本技能基于视频字幕整理内容,生成的文章、口播稿等属于二次加工而非原创内容。为了:

  • 尊重原视频创作者的版权
  • 避免平台判定为抄袭/搬运
  • 构建健康的内容生态

各平台来源标注要求

小红书文案

在正文开头或结尾添加:

📺 内容来源:视频标题
🔗 原视频链接:https://www.youtube.com/watch?v=xxx
📢 整理自 @频道名称
公众号文章

在文章开头(标题下方)添加:

---
来源说明:
本文整理自 YouTube 视频《视频标题》
原视频链接:https://www.youtube.com/watch?v=xxx
原频道:@频道名称
---
口播稿/短视频配音

在口播稿开头添加来源说明,并在视频描述中注明:

【内容来源】
本视频内容整理自:《视频标题》
原视频:https://www.youtube.com/watch?v=xxx
原频道:@频道名称

平台原创标识注意事项

| 平台 | 要求 | 建议 | |------|------|------| | 小红书 | 建议标注来源 | 发布时在正文或评论区注明 | | 公众号 | 建议标注来源 | 文章开头添加来源说明 | | 口播稿/短视频 | 必须标注 | 视频描述区+口播稿开头都要有 | | 微信公众号 | 尊重原创 | 如需商用,建议联系原作者获得授权 |

用户引导话术

在生成内容后,必须向用户提示:

> 「⚠️ 重要提示:生成的内容基于视频字幕整理,发布前请务必添加原始视频来源信息。建议注明「内容整理自@频道名」或附上原视频链接,尊重原创,合理使用。」


输出平台选择

在用户输入视频链接后,必须首先询问用户希望将内容输出到哪个平台

可选平台

| 平台 | 主格式 | 说明 | |------|--------|------| | HTML文章 | .html | 网页阅读,保留原有功能 | | 小红书文案 | .txt | 纯文本,复制即用 | | 公众号文章 | .md | Markdown格式,支持排版工具 | | 口播稿 | .txt | 短视频配音稿,可直接使用 |

完整交互流程

用户输入视频链接
        ↓
【步骤1】询问输出平台:
  1. HTML文章
  2. 小红书文案
  3. 公众号文章
  4. 口播稿
        ↓
【步骤2】根据平台询问具体选项:
  ├─ 选择HTML文章时 → 询问文章风格
  │   └─ 风格选择:蓝白商务/Notion深色/Claude风格/极简现代 → (是否换暗黑科技)
  ├─ 选择小红书文案时 → 询问文体类型
  │   └─ 文体:种草文/干货文/情感文/清单文
  ├─ 选择公众号文章时 → 询问文体类型
  │   └─ 文体:热点解读/深度长文/金句提炼/故事叙述
  └─ 选择口播稿时 → 询问文体类型
      └─ 文体:爆款开场/故事叙述/清单列表/情绪共鸣 → (是否选对话挑战)
        ↓
【步骤3】询问输出语言:
  1. 简体中文
  2. English
        ↓
生成对应格式的内容

小红书文体选项

| 文体类型 | 适用场景 | 模板文件 | |---------|---------|---------| | 种草安利文 | 产品推荐、好物分享 | references/xiaohongshu/zhongcao.md | | 干货教程文 | 技能分享、方法教程 | references/xiaohongshu/ganhuo.md | | 情感共鸣文 | 情感故事、人生感悟 | references/xiaohongshu/qinggan.md | | 清单盘点文 | 资源整理、清单合集 | references/xiaohongshu/qingdan.md |

公众号文体选项

| 文体类型 | 适用场景 | 模板文件 | |---------|---------|---------| | 热点解读文 | 社会热点、行业趋势 | references/wechat/redian.md | | 深度长文 | 知识科普、深度分析 | references/wechat/shendu.md | | 金句提炼文 | 内容精华、语录整理 | references/wechat/jinju.md | | 故事叙述文 | 案例分享、经历讲述 | references/wechat/gushi.md |

口播稿文体选项

| 文体类型 | 适用场景 | 模板文件 | |---------|---------|---------| | 爆款开场型 | 知识干货、认知颠覆 | references/koupogao/baokuan.md | | 故事叙述型 | 个人经历、经验分享 | references/koupogao/gushi.md | | 清单列表型 | 技巧盘点、方法汇总 | references/koupogao/qingdan.md | | 对话挑战型 | 观点表达、争议话题 | references/koupogao/duihua.md | | 情绪共鸣型 | 情感话题、人生感悟 | references/koupogao/qingxu.md |

双格式输出规范

| 平台 | 主格式 | 辅助格式 | 用途 | |------|--------|---------|------| | 小红书 | .txt | .html 预览 | 直接复制发布 / 本地预览 | | 公众号 | .md | .html 预览 | 粘贴到编辑器 / 本地预览 | | 口播稿 | .txt | .html 预览 | 直接配音使用 / 本地预览 | | HTML文章 | .html | - | 网页阅读 |

文件命名规范

{平台}-{文体类型}-{视频标题简称}.{扩展名}

示例:
├── HTML-蓝白商务-6个吸引力法则.html
├── 小红书-种草文-6个吸引力法则.txt
├── 小红书-种草文-6个吸引力法则-预览.html
├── 公众号-热点解读-6个吸引力法则.md
├── 公众号-热点解读-6个吸引力法则-预览.html
├── 口播稿-爆款开场-起床后工作1分钟.txt
└── 口播稿-爆款开场-起床后工作1分钟-预览.html

Notion 深色风格设计规范

> 版本 1.0 · 基于Notion 2024深色模式实际观测值

色彩系统(Color System)

基础背景层

| 层级 | 用途 | HEX | CSS 变量 | |------|------|-----|----------| | 底层背景 | 页面最外层 | #191919 | --bg-base | | 内容背景 | 文章主体卡片 | #202020 | --bg-surface | | 悬浮/弹出 | Tooltip、菜单 | #2f2f2f | --bg-elevated | | 边框 | 分割线、表格线 | #2e2e2e | --border | | 悬停高亮 | hover 状态 | #ffffff0f | --hover |

文字色阶

| 层级 | 用途 | HEX | CSS 变量 | |------|------|-----|----------| | 主文字 | 正文、标题 | #e3e3e3 | --text-primary | | 次级文字 | 描述、副标题 | #9b9b9b | --text-secondary | | 占位/禁用 | placeholder | #555555 | --text-muted |

强调色(彩色标注系统)

| 颜色 | 文字色 | 背景色 | |------|--------|--------| | 蓝 | #4a7ab5 | #0e1f3b | | 绿 | #518c5a | #122215 | | 橙 | #c07a3d | #2e1e0f | | 黄 | #b8a030 | #292306 | | 粉 | #b05c83 | #2e1020 |

字体系统(Typography)

字体族
/* 标题:衬线体 */
--font-serif: 'Noto Serif SC', Georgia, 'Times New Roman', serif;

/* 正文:无衬线体 */
--font-sans: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

/* 代码 */
--font-mono: "SFMono-Regular", Menlo, Consolas, "Liberation Mono", Courier, monospace;
字号与行高规范

| 元素 | 字号 | 行高 | 字重 | |------|------|------|------| | H1 | 2em (约40px) | 1.2 | 700 | | H2 | 1.5em (约30px) | 1.3 | 600 | | H3 | 1.25em (约25px) | 1.3 | 600 | | 正文(Body) | 16px | 1.75 | 400 | | 小字注释 | 14px | 1.6 | 400 |

间距系统(Spacing)

:root {
  --space-xs:  2px;
  --space-sm:  4px;
  --space-md:  8px;
  --space-lg: 16px;
  --space-xl: 24px;
  --space-2xl: 40px;
}

圆角系统

:root {
  --radius-sm: 3px;   /* 内联元素 */
  --radius-md: 4px;   /* 按钮、输入框 */
  --radius-lg: 8px;   /* 卡片、容器 */
}

内容宽度

.page-content {
  max-width: 708px;       /* Notion标准宽度 */
  margin: 0 auto;
  padding: 0 96px;        /* 两侧留白 */
}

@media (max-width: 768px) {
  .page-content { padding: 0 24px; }
}

设计原则

| 原则 | 说明 | |------|------| | 极简留白 | 内容即主角,装饰趋近于零 | | 紧凑节奏 | 段落间距极小(1–4px),块与块之间呼吸感来自内容结构而非空白 | | 中性色调 | 全站灰色系,彩色只服务于内容语义标注 | | 无品牌强调 | 无蓝色链接、无彩色按钮,界面退场让文字前进 | | 字重即层级 | 用字重(400/600/700)而非字色来区分标题层级 | | 交互极克制 | hover仅加轻微背景,无阴影、无缩放、无弹跳 |

Notion深色风格 HTML 模板


  
  
  文章标题
  
  
    :root {
      /* 背景 */
      --bg-base:      #191919;
      --bg-surface:   #202020;
      --bg-elevated:  #2f2f2f;
      --border:       #2e2e2e;
      --hover:        rgba(255, 255, 255, 0.055);

      /* 文字 */
      --text-primary:   #e3e3e3;
      --text-secondary: #9b9b9b;
      --text-muted:     #555555;

      /* 强调色 - Notion 标注系统 */
      --accent-blue-text:    #4a7ab5;
      --accent-blue-bg:      #0e1f3b;
      --accent-green-text:   #518c5a;
      --accent-green-bg:     #122215;
      --accent-orange-text:  #c07a3d;
      --accent-orange-bg:    #2e1e0f;
      --accent-yellow-text:  #b8a030;
      --accent-yellow-bg:    #292306;

      /* 字体 */
      --font-serif: 'Noto Serif SC', Georgia, serif;
      --font-sans: ui-sans-serif, -apple-system, system-ui, sans-serif;

      /* 间距 */
      --space-xs:  2px;
      --space-sm:  4px;
      --space-md:  8px;
      --space-lg: 16px;
      --space-xl: 24px;
      --space-2xl: 40px;

      /* 圆角 */
      --radius-sm: 3px;
      --radius-md: 4px;
      --radius-lg: 8px;
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }

    body {
      font-family: var(--font-sans);
      background: var(--bg-base);
      color: var(--text-primary);
      line-height: 1.75;
      font-size: 16px;
    }

    .page {
      max-width: 708px;
      margin: 0 auto;
      padding: 0 96px;
    }

    @media (max-width: 768px) {
      .page { padding: 0 24px; }
    }

    h1 {
      font-family: var(--font-serif);
      font-size: 2em;
      font-weight: 700;
      line-height: 1.2;
      color: var(--text-primary);
      margin-top: 80px;
      margin-bottom: var(--space-sm);
    }

    h2 {
      font-family: var(--font-serif);
      font-size: 1.5em;
      font-weight: 600;
      line-height: 1.3;
      color: var(--text-primary);
      margin-top: 1.6em;
      margin-bottom: var(--space-sm);
    }

    p {
      font-size: 16px;
      line-height: 1.75;
      color: var(--text-primary);
      margin: 1px 0;
    }

    a {
      color: inherit;
      text-decoration: underline;
      text-decoration-color: var(--text-secondary);
      text-underline-offset: 2px;
    }

    a:hover {
      text-decoration-color: var(--text-primary);
    }

    blockquote {
      border-left: 3px solid var(--text-primary);
      margin: var(--space-md) 0;
      padding: var(--space-sm) var(--space-lg);
      font-style: normal;
    }

    /* 标注块 (Callout) */
    .callout {
      display: flex;
      align-items: flex-start;
      gap: var(--space-md);
      border-radius: var(--radius-md);
      padding: var(--space-lg);
      margin: var(--space-md) 0;
    }

    .callout-blue {
      background: var(--accent-blue-bg);
    }
    .callout-green {
      background: var(--accent-green-bg);
    }
    .callout-orange {
      background: var(--accent-orange-bg);
    }
    .callout-yellow {
      background: var(--accent-yellow-bg);
    }

    .callout-icon {
      font-size: 18px;
      line-height: 1;
      flex-shrink: 0;
    }

    .callout-content {
      flex: 1;
    }
  

  
    分类标签
    文章标题
    正文内容...

    
      引用内容
    

    

    章节标题
    章节内容...

    
      💡
      
        重点提示内容
      
    
  

      flex-shrink: 0;
    }

    hr {
      border: none;
      border-top: 1px solid var(--border);
      margin: var(--space-lg) 0;
    }

    /* 标签 */
    .tag {
      display: inline-block;
      background: var(--accent-blue-bg);
      color: var(--accent-blue-text);
      padding: 2px 8px;
      border-radius: var(--radius-sm);
      font-size: 12px;
      font-weight: 500;
      margin-bottom: var(--space-md);
    }
  

  
    分类标签
    文章标题
    正文内容...

    
      引用内容
    

    

    章节标题
    章节内容...

    
      💡
      
        重点提示内容
      
    
  

工作流程(更新版)

交互式选择要求

在生成文章之前,必须使用 AskUserQuestion 工具依次让用户选择以下选项:

  1. 输出平台:HTML文章 / 小红书文案 / 公众号文章
  2. 具体文体:根据平台显示对应选项
  3. 输出语言:简体中文 / English

第零步:确认输出平台

使用 AskUserQuestion 询问用户:

询问内容:请问您希望将内容输出到哪个平台?
选项:
  1. HTML文章 - 网页阅读,保留原有功能
  2. 小红书文案 - 纯文本,复制即用
  3. 公众号文章 - Markdown格式,支持排版工具
  4. 口播稿 - 短视频配音稿,可直接使用

第零点五步:确认具体文体

根据平台选择,使用 AskUserQuestion 询问对应的具体文体:

HTML文章:

询问内容:请问您希望使用哪种文章风格?
选项:
  1. 蓝白商务(推荐)- 专业简洁,蓝色渐变Hero
  2. Notion深色 - 深色背景,彩色标注系统
  3. Claude风格 - 赭石红+米白,噪点纹理
  4. 暗黑科技 - 赛博朋克风格,霓虹光效
  5. 极简现代 - 简约留白,深绿强调

小红书文案:

询问内容:请问您希望使用哪种小红书文体?
选项:
  1. 种草安利文 - 产品推荐、好物分享
  2. 干货教程文 - 技能分享、方法教程
  3. 情感共鸣文 - 情感故事、人生感悟
  4. 清单盘点文 - 资源整理、清单合集

公众号文章:

询问内容:请问您希望使用哪种公众号文体?
选项:
  1. 热点解读文 - 社会热点、行业趋势
  2. 深度长文 - 知识科普、深度分析
  3. 金句提炼文 - 内容精华、语录整理
  4. 故事叙述文 - 案例分享、经历讲述

口播稿: > 注意AskUserQuestion 工具最多支持4个选项,口播稿共5种文体,分两步进行。

第一步(4个选项):

询问内容:请问您希望使用哪种口播稿文体?
选项:
  1. 爆款开场型 - 知识干货、认知颠覆
  2. 故事叙述型 - 个人经历、经验分享
  3. 清单列表型 - 技巧盘点、方法汇总
  4. 情绪共鸣型 - 情感话题、人生感悟

第二步(如果用户需要第5种可选风格):

询问内容:还有一种「对话挑战型」风格——适合观点表达、争议话题,要不要看看?
选项:
  1. 不用了,就用前面的风格
  2. 对话挑战型 - 观点表达、争议话题

第一步:确认输出语言

使用 AskUserQuestion 询问输出语言:

询问内容:请问您希望文章使用哪种语言输出?
选项:
  1. 简体中文(推荐)- 翻译字幕后整理,适合中文读者
  2. English - 保留英文内容,适合国际读者
语言相关处理
  • 简体中文:如果字幕是英文,需要翻译成中文后整理
  • English:如果字幕是中文,需要翻译成英文后整理;如果字幕是英文,直接整理

第二步:获取视频信息(简化版)

直接使用 yt-dlp 获取基本信息,不保存到文件:

# 获取视频信息(输出到终端)
yt-dlp --print "%(title)s" --print "%(uploader)s" --print "%(upload_date)s" --print "%(duration)s" --print "%(thumbnail)s" --print "%(webpage_url)s" --skip-download "视频链接"

从链接识别平台:

| 平台 | 链接特征 | 图标 | |------|---------|------| | YouTube | youtube.com / youtu.be | 📺 | | Bilibili | bilibili.com / b23.tv | 📱 | | Twitter/X | twitter.com / x.com | 🐦 | | Vimeo | vimeo.com | 🎬 |

第三步:下载字幕(简化高效版)

使用 yt-dlp 下载字幕,只保留必要的 cookie 文件:

Cookie 处理(保留 cookies.txt):

如果用户提供了 SESSDATA(对于 Bilibili),我们会自动创建标准格式的 cookies.txt 文件(这个文件会保留):

# 如果用户提供了 SESSDATA,自动创建 cookie 文件
if [ -n "$USER_SESSDATA" ]; then
  # 自动生成标准格式的 cookie 文件(保留)
  cat > cookies.txt /dev/null; then
  SUBTITLE_FILE=$(ls -1t *.zh-Hans.srt | head -1)
elif ls *.ai-zh.srt 2>/dev/null; then
  SUBTITLE_FILE=$(ls -1t *.ai-zh.srt | head -1)
elif ls *.srt 2>/dev/null; then
  SUBTITLE_FILE=$(ls -1t *.srt | head -1)
elif ls *.vtt 2>/dev/null; then
  SUBTITLE_FILE=$(ls -1t *.vtt | head -1)
fi

关键改进说明:

  • 自动生成标准 Netscape 格式的 cookie 文件
  • 同时尝试下载手动和自动字幕,确保获取最完整的内容
  • 保留所有下载的字幕文件用于后续分析
  • 记录字幕文件列表和行数
支持的视频平台

| 平台 | 字幕支持 | 备注 | |------|---------|------| | YouTube | ✅ 手动+自动 | 最佳支持 | | Bilibili | ✅ CC字幕 + AI字幕 | 有CC字幕直接下载;无字幕需提供SESSDATA获取AI字幕 | | Twitter/X | ✅ 内嵌字幕 | 部分 video 支持 | | Vimeo | ✅ 手动字幕 | 依赖上传者添加 | | 其他 | ⚠️ 有限支持 | 取决于平台 |

第四步:处理字幕并生成HTML(直接内存处理)

直接在内存中读取和处理字幕:

# 直接读取字幕内容到变量,不保存中间文件
FULL_SUBTITLE_CONTENT=$(cat "$SUBTITLE_FILE")
CONTENT_LENGTH=$(echo "$FULL_SUBTITLE_CONTENT" | wc -c)
LINE_COUNT=$(echo "$FULL_SUBTITLE_CONTENT" | wc -l)

echo "📊 字幕文件统计:"
echo "  - 文件大小: ${CONTENT_LENGTH} 字节"
echo "  - 总行数: ${LINE_COUNT} 行"

# 简单的字幕清洗 - 去除时间戳标签但保留所有文本内容
CLEAN_CONTENT=$(echo "$FULL_SUBTITLE_CONTENT" | \
  sed '/^[0-9]\+$/d' | \
  sed '/-->.*$/d' | \
  sed '/^$/d' | \
  sed 's/]*>//g')

# 内容预览(前100行和后50行)
echo "📝 字幕内容预览(前100行):"
echo "═══════════════════════════════════════════════════"
echo "$CLEAN_CONTENT" | head -100
echo "═══════════════════════════════════════════════════"
echo "📝 字幕内容预览(后50行):"
echo "═══════════════════════════════════════════════════"
echo "$CLEAN_CONTENT" | tail -5

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Librarier-f](https://github.com/Librarier-f)
- **Source:** [Librarier-f/video-to-article-skill](https://github.com/Librarier-f/video-to-article-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.