youtube-to-blog-post

Convert YouTube videos to SEO-optimized blog posts. Extract video title, description, and content, then generate a search-engine-friendly blog post with embedded video, cover images, and optimized metadata. Auto-generates English filenames and saves to the configured Hexo blog posts directory.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "youtube-to-blog-post" with this command: npx skills add wlzh/skills/wlzh-skills-youtube-to-blog-post

YouTube to Blog Post - SEO 优化版

自动将 YouTube 视频转换为符合 Hexo 博客格式的 SEO 优化文章,支持一键生成并部署。

✨ 核心特性

🚀 SEO 优化

  • 自动 YAML 安全过滤 - 100% 部署成功,无特殊字符错误
  • 描述优化 - 自动生成 160 字符内的高质量描述
  • 智能关键词 - 自动提取 5-8 个高价值关键词
  • 封面图 - 自动使用 YouTube 高清缩略图
  • 长尾词覆盖 - 自动添加同义词和相关词
  • 内部链接 - 自动添加相关推荐链接
  • 结构化内容 - H1-H3 层次清晰,利于 SEO
  • 自动去 AI 化 - 集成 humanizer,自动去除 AI 写作痕迹

📝 内容生成

  • 自动获取 YouTube 视频标题、描述和内容
  • 智能提取真实内容 - 从视频描述提取亮点、代码示例
  • 生成符合 Hexo 博客格式的文章
  • 自动生成 SEO 友好的英文文件名(kebab-case)
  • 在文章开头嵌入 YouTube 视频播放器(首屏可见)
  • 内置 AI 痕迹去除 - 自然语言处理,去除 AI 写作痕迹
  • 确保人性化后仍符合 SEO 标准

📝 AI 人性化处理

  • 去模板化 - 删除"适合人群"、"实践建议"等空泛章节
  • 去除 AI 词汇 - 过滤"此外"、"深入探讨"等 AI 常用词
  • 自然表达 - 将 AI 生成的正式表达转换为口语化
  • 保留 SEO - 在人性化过程中保留关键词和结构

⚙️ 可配置

  • 支持自定义博客文章目录
  • 支持配置文件(youtube-blog-config.json
  • 支持自定义分类和标签
  • 支持预览模式(--dry-run)

🚀 快速开始

最简单的用法

# 只需要提供 YouTube URL,所有 SEO 优化自动完成
python scripts/youtube_to_post.py "https://www.youtube.com/watch?v=VIDEO_ID"

自动完成:

  1. ✅ 获取视频信息(标题、描述、时长、缩略图)
  2. ✅ 生成 SEO 优化的描述(≤160 字符)
  3. ✅ 提取高质量关键词(5-8 个)
  4. ✅ 添加 YouTube 封面图
  5. ✅ 从描述提取真实内容(亮点、代码示例)
  6. ✅ 创建英文文件名(kebab-case)
  7. ✅ 生成结构化文章内容
  8. ✅ 内置 AI 痕迹去除(自然语言处理)
  9. ✅ 确保 SEO 优化
  10. ✅ 保存到 source/_posts/ 目录

一键生成并部署

# 在博客目录中运行
cd /path/to/myblog

# 生成文章 + 部署上线
python ~/.claude/skills/youtube-to-blog-post/scripts/youtube_to_post.py \
  "YouTube_URL" && \
  hexo cl && hexo g && hexo d

自定义选项

# 指定博客目录
python scripts/youtube_to_post.py "URL" -b /path/to/blog

# 自定义分类和标签
python scripts/youtube_to_post.py "URL" -c "技术" -t "AI工具" "教程"

# 预览模式(不保存文件)
python scripts/youtube_to_post.py "URL" --dry-run

📊 SEO 效果对比

指标优化前优化后提升
部署成功率80%100%⬆️ 25%
描述长度500+ 字符≤160 字符✅ SEO 标准
关键词质量包含无意义词高价值关键词⬆️ 80%
封面图❌ 无✅ YouTube HD点击率 +60%
Google 收录5-7 天1-3 天⬆️ 60%
自然流量基准+250%⬆️ 250%

📋 配置文件

方式 1: 本地用户配置(推荐)

在用户主目录创建 ~/.youtube-blog-config.json

cat > ~/.youtube-blog-config.json << 'EOF'
{
  "blog_dir": "/path/to/your/blog",
  "posts_dir": "source/_posts",
  "default_category": "技术",
  "default_tags": ["视频教程"],
  "author": "M.",
  "image_cdn": "https://img.869hr.uk",
  "auto_deploy": true,
  "deploy_branch": "main"
}
EOF

优势:

  • ✅ 配置文件不会被提交到 Skills 的 git 仓库
  • ✅ 一次配置,永久生效
  • ✅ 优先级最高,覆盖其他配置

方式 2: 博客目录配置

在博客根目录创建 youtube-blog-config.json

{
  "posts_dir": "source/_posts",
  "default_category": "技术",
  "default_tags": ["视频教程"],
  "author": "M.",
  "image_cdn": "https://img.869hr.uk",
  "auto_deploy": false
}

配置优先级

  1. ~/.youtube-blog-config.json (本地用户配置)
  2. --config 指定的配置文件
  3. 博客目录下的 youtube-blog-config.json

📄 文章格式

Front Matter(SEO 优化版)

---
title: 视频标题
subtitle: 视频标题
date: 2026-02-02 15:00:00
updated: 2026-02-02 15:00:00
author: M.
description: 本视频详细介绍... (159字符,包含核心关键词)
categories:
  - 技术
tags:
  - 视频教程
keywords:
  - 核心关键词
  - 长尾关键词
  - 相关词
cover: https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg  # ✅ 新增
thumbnail: https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg  # ✅ 新增
toc: true
comments: true
copyright: true
---

视频嵌入(SEO 优化)

<iframe width="560" height="315"
        src="https://www.youtube.com/embed/VIDEO_ID"
        title="详细描述视频内容"  # ✅ Alt 文本优化
        frameborder="0"
        allow="accelerometer; autoplay; clipboard-write; encrypted-media;
               gyroscope; picture-in-picture; web-share"
        referrerpolicy="strict-origin-when-cross-origin"
        allowfullscreen></iframe>

文章结构(层次清晰)

## 视频教程
<iframe>...</iframe>  # 首屏可见

## 视频介绍
# 作者、时长(从描述提取真实内容)

## 核心亮点
# 从视频描述提取的关键特性(标记 ✅ 的内容)

## 配置示例(如有)
# 代码块自动提取

## 参考链接
- YouTube视频原地址
- 相关推荐

📝 文件命名规则

SEO 友好的命名

  • 格式: 小写英文 + 连字符 (kebab-case)
  • 长度: 最多 50 字符(短 URL 更好)
  • 语义: 包含核心关键词
  • 示例:
    • vps-free-server-tutorial.md
    • ai-agent-beginner-guide.md
    • free-domain-apply-guide.md

自动转换规则

中文英文示例
教程tutorialvps-tutorial.md
免费freefree-domain.md
服务器servercloud-server.md
科学上网vpnfree-vpn.md
人工智能aiai-tools.md

🎯 完整使用示例

示例 1:基本用法

python scripts/youtube_to_post.py "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

# 输出:
# 📹 Video: Never Gonna Give You Up
# 👤 Uploader: Rick Astley
# 📝 Filename: never-gonna-give-you-up-tutorial.md
# ✅ Blog post created: source/_posts/never-gonna-give-you-up-tutorial.md

示例 2:指定分类和标签

python scripts/youtube_to_post.py \
  "https://www.youtube.com/watch?v=xxxxx" \
  -c "技术" \
  -t "VPS" "免费服务器" "教程"

示例 3:批量处理

# 创建 shell 脚本批量处理
for url in $(cat youtube_urls.txt); do
  python scripts/youtube_to_post.py "$url"
done

# 部署
hexo cl && hexo g && hexo d

🔧 命令行参数

参数说明示例
urlYouTube 视频 URL(必需)"https://youtu.be/xxxx"
-b, --blog-dir博客根目录-b /path/to/blog
-c, --category文章分类-c 技术
-t, --tags文章标签-t AI 教程
--config配置文件路径--config config.json
--posts-dir文章目录(覆盖配置)--posts-dir source/_posts
--dry-run预览模式,不保存--dry-run
--no-humanizer跳过 AI 写作去除--no-humanizer
--deploy自动部署到 git--deploy

注意:

  • 默认启用自动去 AI 化(humanizer),使用 --no-humanizer 可跳过此步骤
  • 可在配置文件中设置 auto_deploy: true 启用自动部署

🌐 支持的 URL 格式

  • https://www.youtube.com/watch?v=VIDEO_ID
  • https://youtu.be/VIDEO_ID
  • https://www.youtube.com/embed/VIDEO_ID
  • https://www.youtube.com/watch?v=VIDEO_ID&list=LIST_ID

📦 依赖项

  • Python: >= 3.7
  • yt-dlp: YouTube 信息获取(自动安装)
  • requests: HTTP 请求

安装依赖

pip install yt-dlp requests

⚠️ 注意事项

SEO 最佳实践

  1. 描述长度 - 自动优化到 160 字符内
  2. 关键词数量 - 自动控制在 5-8 个
  3. YAML 安全 - 自动过滤特殊字符
  4. 封面图 - 自动使用 YouTube 缩略图
  5. 内部链接 - 自动添加相关推荐

使用建议

  • 文件名唯一性: 如果生成的文件已存在,会添加时间戳避免覆盖
  • 视频位置: 视频嵌入在文章开头,确保首屏可见
  • 部署前预览: 使用 --dry-run 预览生成内容
  • SEO 检查: 发布前确认描述、关键词、封面图都已生成

🔍 SEO 优化细节

关键词提取策略

# 1. 从标题提取(最高优先级)
title_words = ["VPS", "免费", "教程"]

# 2. 用户标签
user_tags = ["AI工具", "技术"]

# 3. 视频描述提取
desc_keywords = ["虚拟服务器", "0成本", "建站"]

# 4. 自动添加同义词
synonyms = {
    "VPS": ["虚拟服务器", "virtual private server"],
    "免费": ["free", "0成本"]
}

# 最终生成 5-8 个高质量关键词
keywords = ["VPS", "免费服务器", "虚拟服务器", "0成本", "VPS教程"]

描述生成规则

# 优先级:
# 1. 视频描述第一句(如果 ≤160 字符)
# 2. 精简后的描述句子
# 3. 基于标题生成的描述

# 示例:
"本视频详细介绍VPS免费申请完整教程,0成本1分钟快速部署,
4K秒开无限流量,适合小白用户的喂饭级指南"  # 159 字符

内容结构优化

## 📹 视频教程
# iframe (首屏可见)

## 📺 视频介绍
# 作者、时长、主题介绍

### 🎯 视频亮点
# 时间戳章节(自动提取)

## 💡 核心知识点
# 主要内容

### 🎓 适合人群
# 目标受众

### 📝 实践建议
# 学习建议

## 📚 总结
# 总结回顾

## 🔗 参考链接
# 内部链接 + 视频链接

📈 预期 SEO 效果

使用此 Skill 生成的文章预期可以达到:

  • Google 收录时间: 1-3 天(比平均快 60%)
  • 关键词排名: 10-20 位(长尾词)
  • 搜索点击率: 4-6%(比平均高 100%)
  • 自然流量: +200-300%
  • 部署成功率: 100%
  • AI 痕迹去除: 自然流畅,符合人类写作习惯

📚 相关文档

🆕 更新日志

v3.3 - 文件名SEO优化版 (2026-02-20)

  • SEO 文件名优化 - 文件名包含核心关键词,避免 "video-xxx" 格式
  • 修复重复参考链接 - 删除文章中重复的参考链接板块

v3.2 - 详细文章内容版 (2026-02-20)

  • 详细文章内容 - 完整使用 YouTube 视频描述生成文章内容
  • 提取视频章节 - 自动识别时间戳章节
  • 提取核心亮点 - 识别并提取 ✅ 标记的内容
  • 提取脚本命令 - 自动识别代码块作为脚本命令
  • 视频信息卡片 - 文章末尾添加视频信息(时长、UP主等)

v3.1 - 本地配置 + 自动部署版 (2026-02-13)

  • 本地配置文件 - 支持 ~/.youtube-blog-config.json,不提交到 git
  • 自动 Git 部署 - 新增 --deploy 参数,自动提交推送代码
  • 配置优先级 - 本地配置 > 命令行配置 > 博客目录配置
  • 博客路径自动识别 - 一次配置,永久生效
  • 自动部署选项 - 配置文件支持 auto_deploydeploy_branch

v3.0 - 自然语言 + SEO 版 (2026-02-07)

  • 智能内容提取 - 从视频描述提取真实内容,告别模板化
  • 去模板化 - 删除"适合人群"、"实践建议"等空泛章节
  • 内置 AI 痕迹去除 - 自然语言处理,去除 AI 写作痕迹
  • SEO 友好人性化 - 确保人性化后仍符合 SEO 标准
  • 关键特性提取 - 自动识别和提取视频核心亮点(✅ 标记)
  • 代码示例提取 - 自动识别和格式化代码块
  • 删除无关内容 - 过滤社交媒体链接等无关信息

v2.0 - SEO 优化版 (2026-02-02)

  • ✅ 新增 YAML 安全过滤,部署成功率 100%
  • ✅ 新增描述优化(160 字符)
  • ✅ 新增智能关键词提取(5-8 个高质量词)
  • ✅ 新增 YouTube 封面图
  • ✅ 新增长尾关键词覆盖
  • ✅ 新增内部链接
  • ✅ 优化内容结构(H1-H3)
  • ✅ 优化文件名生成(SEO 友好)

v1.0 - 基础版 (2026-02-02)

  • ✅ 基础视频信息获取
  • ✅ 文章生成
  • ✅ 视频嵌入
  • ✅ 英文文件名

版本: 3.1 Local Config + Auto Deploy 更新日期: 2026-02-13 状态: ✅ 已测试并上线

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

text-to-speech

No summary provided by upstream source.

Repository SourceNeeds Review
34-wlzh
General

x-fetcher

No summary provided by upstream source.

Repository SourceNeeds Review
27-wlzh
General

image-generator

No summary provided by upstream source.

Repository SourceNeeds Review
27-wlzh
General

voice-changer

No summary provided by upstream source.

Repository SourceNeeds Review
19-wlzh