# engrecho/all-platform-video-extract architecture

> Architecture diagram of the GitHub repository engrecho/all-platform-video-extract, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/engrecho/all-platform-video-extract
- Repository: https://github.com/engrecho/all-platform-video-extract
- Video tour (about a minute): https://gitdiagram.com/engrecho/all-platform-video-extract/video

## Overview

This Node.js skill accepts video URLs or share text and either returns parsed metadata/direct links or downloads the available resources locally. The principal flow is input → resolver API → structured media items → bounded downloads and organized output; the downloader invokes the extractor as a subprocess. The README also documents WeChat article Markdown with localized images and Bilibili Referer handling. The source excerpts are partial, so details of platform recognition and some download branches are represented only where documented.

Main entry points: [`scripts/download_videos.cjs`](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs) (Download CLI), [`scripts/video_extract.cjs`](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs) (Extractor CLI), [`SKILL.md`](https://github.com/engrecho/all-platform-video-extract/blob/main/SKILL.md) (Skill workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry"]
  node_skill["Skill workflow<br/>[SKILL.md]"]
end

subgraph group_resolve["Link resolution"]
  node_extract_cli["Extractor CLI<br/>[video_extract.cjs]"]
  node_auth_cookie["Cookie acquisition<br/>[video_extract.cjs]"]
  node_key_exchange["Key retrieval<br/>[video_extract.cjs]"]
  node_crypto["Request encryption<br/>[video_extract.cjs]"]
  node_extract_result["Metadata and links<br/>[video_extract.cjs]"]
end

subgraph group_download["Download processing"]
  node_download_cli["Download CLI"]
  node_batch_control["Batch concurrency"]
  node_resource_router["Resource classification"]
  node_wechat_markdown["WeChat Markdown"]
end

subgraph group_output["Local output"]
  node_config["Download configuration"]
  node_local_files["Download directory"]
  node_info_json["Video info JSON"]
  node_media_files["Video audio images"]
  node_markdown_output["Localized article"]
end

node_user(("User / AI skill caller"))
node_resolver_api{{"Video resolver API"}}
node_media_hosts{{"Platform media hosts"}}

node_user -->|"invokes"| node_skill
node_user -->|"runs parse"| node_extract_cli
node_user -->|"runs download"| node_download_cli
node_extract_cli -->|"acquires session"| node_auth_cookie
node_auth_cookie -->|"fetches homepage"| node_resolver_api
node_extract_cli -->|"requests keys"| node_key_exchange
node_key_exchange -->|"fetches keys"| node_resolver_api
node_extract_cli -->|"encrypts request"| node_crypto
node_crypto -->|"supplies body"| node_extract_cli
node_extract_cli -->|"posts encrypted request"| node_resolver_api
node_resolver_api -->|"returns media data"| node_extract_result
node_download_cli -->|"reads settings"| node_config
node_download_cli -->|"limits batch"| node_batch_control
node_batch_control -->|"dispatches tasks"| node_download_cli
node_download_cli -->|"runs extractor"| node_extract_cli
node_download_cli -->|"classifies items"| node_resource_router
node_resource_router -->|"fetches resources"| node_media_hosts
node_download_cli -->|"creates folders"| node_local_files
node_download_cli -->|"writes metadata"| node_info_json
node_download_cli -->|"writes downloads"| node_media_files
node_download_cli -->|"handles articles"| node_wechat_markdown
node_wechat_markdown -->|"fetches images"| node_media_hosts
node_wechat_markdown -->|"writes localized text"| node_markdown_output

click node_skill "https://github.com/engrecho/all-platform-video-extract/blob/main/SKILL.md"
click node_extract_cli "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs"
click node_auth_cookie "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs"
click node_key_exchange "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs"
click node_crypto "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs"
click node_extract_result "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs"
click node_download_cli "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"
click node_batch_control "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"
click node_resource_router "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"
click node_info_json "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"
click node_media_files "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"
click node_wechat_markdown "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"
click node_markdown_output "https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_skill,node_user toneBlue
class node_extract_cli,node_auth_cookie,node_key_exchange,node_crypto,node_extract_result toneAmber
class node_download_cli,node_batch_control,node_resource_router,node_wechat_markdown,node_resolver_api toneMint
class node_config,node_local_files,node_info_json,node_media_files,node_markdown_output toneRose
class node_media_hosts toneIndigo
```

## Components

### User entry

- [Skill workflow](https://github.com/engrecho/all-platform-video-extract/blob/main/SKILL.md): `SKILL.md`

### Link resolution

- [Extractor CLI](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs): `scripts/video_extract.cjs`
- [Cookie acquisition](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs): `scripts/video_extract.cjs`
- [Key retrieval](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs): `scripts/video_extract.cjs`
- [Request encryption](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs): `scripts/video_extract.cjs`
- [Metadata and links](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/video_extract.cjs): `scripts/video_extract.cjs`

### Download processing

- [Download CLI](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`
- [Batch concurrency](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`
- [Resource classification](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`
- [WeChat Markdown](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`

### Local output

- **Download configuration**
- **Download directory**
- [Video info JSON](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`
- [Video audio images](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`
- [Localized article](https://github.com/engrecho/all-platform-video-extract/blob/main/scripts/download_videos.cjs): `scripts/download_videos.cjs`

### Other components

- **User / AI skill caller**
- **Video resolver API**
- **Platform media hosts**

## Connections

- User / AI skill caller → Skill workflow: invokes
- User / AI skill caller → Extractor CLI: runs parse
- User / AI skill caller → Download CLI: runs download
- Extractor CLI → Cookie acquisition: acquires session
- Cookie acquisition → Video resolver API: fetches homepage
- Extractor CLI → Key retrieval: requests keys
- Key retrieval → Video resolver API: fetches keys
- Extractor CLI → Request encryption: encrypts request
- Request encryption → Extractor CLI: supplies body
- Extractor CLI → Video resolver API: posts encrypted request
- Video resolver API → Metadata and links: returns media data
- Download CLI → Download configuration: reads settings
- Download CLI → Batch concurrency: limits batch
- Batch concurrency → Download CLI: dispatches tasks
- Download CLI → Extractor CLI: runs extractor
- Download CLI → Resource classification: classifies items
- Resource classification → Platform media hosts: fetches resources
- Download CLI → Download directory: creates folders
- Download CLI → Video info JSON: writes metadata
- Download CLI → Video audio images: writes downloads
- Download CLI → WeChat Markdown: handles articles
- WeChat Markdown → Platform media hosts: fetches images
- WeChat Markdown → Localized article: writes localized text
