Claude Info
Разное

wechat-article-down

zyw-Wayne/wechat-article-down

Claude Code Skill для загрузки статей из WeChat Public Accounts. Автоматически извлекает текст, изображения, аудио и видео, конвертирует HTML в Markdown с сохранением форматирования. Поддерживает пакетную обработку и обход CDN-защиты WeChat.

Установка

terminal
bash
npx skills add https://github.com/zyw-Wayne/wechat-article-down

README

wechat-article-down

Инструмент для загрузки статей из WeChat Public Accounts — Claude Code Skill, который автоматически извлекает содержимое статей через браузер, скачивает изображения, аудио, видео и сохраняет всё в Markdown.

Возможности

  • Автоматическое извлечение метаданных: заголовок, автор, название паблика, дата публикации, аннотация
  • Загрузка изображений из текста (с обходом CDN-защиты WeChat), аудио и видео (поддержка yt-dlp)
  • Конвертация HTML в Markdown с сохранением блоков кода, таблиц, списков
  • Поддержка пакетной обработки нескольких статей

Зависимости

  • Node.js >= 16 (без npm install — только стандартная библиотека)
  • chrome-devtools MCP (обязательно, используется для автоматизации браузера)
  • yt-dlp (опционально, для загрузки видео с Tencent Video и др.): brew install yt-dlp

Структура проекта

wechat-article-down/ ├── SKILL.md # Определение Claude Code Skill (описание процесса) ├── README.md ├── scripts/ │ ├── receiver.js # Локальный JSON-сервер (порт 17329) │ └── download_article.js # Загрузка контента и конвертация в Markdown └── references/ └── extract.js # Скрипт извлечения данных (выполняется в браузере)

Рабочий процесс

Проверка ссылки → Запуск сервера → Открытие страницы → Ожидание загрузки → Прокрутка для lazy-load → Извлечение данных и POST → Загрузка ресурсов → Генерация Markdown
  1. Проверка ссылки: URL должен начинаться с https://mp.weixin.qq.com/
  2. Запуск сервера: receiver.js слушает порт 17329 и принимает данные статьи через POST из браузера
  3. Открытие страницы: навигация к URL статьи через chrome-devtools MCP
  4. Ожидание загрузки: выполнение WAIT_SCRIPT для подтверждения рендеринга #js_content
  5. Прокрутка для lazy-load: выполнение SCROLL_SCRIPT, чтобы все src изображений были заменены с data-src на реальные CDN-адреса
  6. Извлечение и отправка данных: выполнение SAVE_SCRIPT — извлечение полного JSON в браузере и POST на локальный сервер
  7. Загрузка ресурсов: download_article.js читает JSON и пакетно скачивает изображения, аудио, видео
  8. Генерация Markdown: конвертация HTML в Markdown, замена ссылок на ресурсы локальными путями, вывод article.md

Структура выходных файлов

downloads/ └── Заголовок статьи/ ├── article.md # Markdown-текст (с YAML frontmatter) ├── images/ │ ├── img_001.jpg │ ├── img_002.png │ └── ... ├── audio/ │ └── audio_001.mp3 ├── video/ │ └── video_001.mp4 └── failed.log # Лог ошибок загрузки (если есть)

Установка

npx skills add https://github.com/zyw-Wayne/wechat-article-down

Использование

Как Claude Code Skill

После установки достаточно отправить Claude ссылку на статью WeChat:

下载这篇文章:https://mp.weixin.qq.com/s/xxxxx

Ключевые фразы для активации: 下载微信文章, 保存公众号文章, 下载这篇文章, wechat article download

Самостоятельное использование download_article.js

bash
# Чтение JSON из стандартного ввода
echo '<json>' | node scripts/download_article.js --stdin --output ./downloads

# Чтение из файла
node scripts/download_article.js --stdin --output ./downloads < /tmp/wechat_article_data.json

# Передача JSON-строки напрямую
node scripts/download_article.js --data '{"url":"...","title":"测试","contentHtml":"<p>内容</p>","images":[]}'

Формат JSON-данных

json
{
  "url": "https://mp.weixin.qq.com/...",
  "title": "文章标题",
  "author": "作者",
  "account": "公众号名称",
  "publishTime": "2024-01-15 10:30:00",
  "digest": "文章摘要",
  "contentHtml": "<div>...</div>",
  "images": ["https://mmbiz.qpic.cn/..."],
  "audios": [{"src": "https://...", "name": "音频名称"}],
  "videos": [{"src": "https://...", "poster": "封面URL", "vid": "腾讯视频ID"}]
}

Технические детали

  • Обход CDN-защиты: WeChat CDN (mmbiz.qpic.cn) требует заголовок Referer с полным URL статьи — скрипт устанавливает его автоматически
  • Определение формата изображений: расширение выводится из параметра запроса ?wx_fmt=jpeg или сегмента пути /mmbiz_jpg/
  • Обработка lazy-load: симуляция прокрутки запускает ленивую загрузку изображений, гарантируя наличие реальных адресов в атрибуте src
  • Целостность данных: рекомендуется использовать SAVE_SCRIPT с прямым POST из браузера, чтобы избежать усечения большого contentHtml при передаче через Claude
  • Резервный режим: если сервер недоступен, используется EXTRACT_SCRIPT с записью в файл
  • Распознавание блоков кода: автоматическое определение блоков кода WeChat (моноширинный шрифт или тёмный фон) и конвертация в Markdown-блоки кода

Похожие скиллы