# fqscfqj/y2a-auto architecture

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

- Interactive diagram: https://gitdiagram.com/fqscfqj/y2a-auto
- Repository: https://github.com/fqscfqj/y2a-auto

## Overview

Y2A-Auto is a web-managed automation service that moves YouTube videos to AcFun and/or bilibili. A user submits or reviews a task in the web app; the task manager coordinates download, speech recognition, subtitle and metadata processing, moderation, encoding, and upload. YouTube monitoring can add work automatically, while configuration, platform authentication, CookieCloud, and notifications support operation. The graph preserves README-documented capabilities whose implementation was not sampled; links based on those capabilities cite the README, and unsampled internals are not inferred beyond those documented relationships.

Main entry points: [`modules/task_manager.py`](https://github.com/fqscfqj/y2a-auto/blob/main/modules/task_manager.py) (Task manager), [`app.py`](https://github.com/fqscfqj/y2a-auto/blob/main/app.py) (Web application), [`modules/bili_sdk/video_uploader.py`](https://github.com/fqscfqj/y2a-auto/blob/main/modules/bili_sdk/video_uploader.py) (bilibili SDK), [`modules/youtube_handler.py`](https://github.com/fqscfqj/y2a-auto/blob/main/modules/youtube_handler.py) (YouTube download)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web and operations"]
  node_webapp["Web application<br/>[app.py]"]
  node_monitor["YouTube monitor<br/>[youtube_monitor.py]"]
end

subgraph group_workflow["Task workflow"]
  node_taskmanager["Task manager<br/>[task_manager.py]"]
  node_youtube["YouTube download<br/>[youtube_handler.py]"]
  node_asr["Speech recognition"]
  node_subtitle["Subtitle translation"]
  node_subtitleqc["Subtitle QC<br/>[subtitle_qc.py]"]
  node_subtitletransform["Subtitle transform"]
  node_metadata["AI metadata<br/>[ai_enhancer.py]"]
  node_moderation["Content moderation"]
  node_encoding["Video encoding"]
end

subgraph group_platforms["Platform integrations"]
  node_acfun["AcFun upload<br/>[acfun_uploader.py]"]
  node_biliupload["bilibili upload"]
  node_bilisdk["bilibili SDK<br/>[video_uploader.py]"]
  node_bilinetwork["bilibili networking<br/>[network.py]"]
  node_auth["Platform authentication<br/>[bilibili_auth.py]"]
  node_acauth["AcFun authentication<br/>[acfun_auth.py]"]
end

subgraph group_support["Runtime support"]
  node_config["Configuration<br/>[config_manager.py]"]
  node_cookiecloud["CookieCloud sync<br/>[cookiecloud.py]"]
  node_notifications["Notifications<br/>[service.py]"]
  node_ffmpeg["FFmpeg management<br/>[ffmpeg_manager.py]"]
end

node_operator(("Operator"))
node_youtubeplatform(("YouTube"))
node_asrproviders(("ASR providers"))
node_aimodel(("AI services"))
node_acfunplatform(("AcFun"))
node_biliplatform(("bilibili"))
node_notifychannels(("Notification channels"))

node_operator -->|"uses"| node_webapp
node_webapp -->|"manages tasks"| node_taskmanager
node_webapp -->|"manages monitoring"| node_monitor
node_webapp -->|"configures"| node_config
node_webapp -->|"handles login"| node_auth
node_webapp -->|"handles login"| node_acauth
node_webapp -->|"syncs cookies"| node_cookiecloud
node_webapp -->|"tests notifications"| node_notifications
node_monitor -->|"queues tasks"| node_taskmanager
node_taskmanager -->|"downloads video"| node_youtube
node_youtube -->|"fetches video"| node_youtubeplatform
node_taskmanager -->|"recognizes speech"| node_asr
node_asr -->|"transcribes audio"| node_asrproviders
node_taskmanager -->|"translates subtitles"| node_subtitle
node_subtitle -->|"requests translation"| node_aimodel
node_taskmanager -->|"checks subtitles"| node_subtitleqc
node_subtitleqc -->|"requests review"| node_aimodel
node_taskmanager -->|"transforms subtitles"| node_subtitletransform
node_taskmanager -->|"generates metadata"| node_metadata
node_metadata -->|"requests generation"| node_aimodel
node_taskmanager -->|"moderates content"| node_moderation
node_moderation -->|"checks safety"| node_aimodel
node_taskmanager -->|"encodes video"| node_encoding
node_taskmanager -->|"uploads to AcFun"| node_acfun
node_taskmanager -->|"uploads to bilibili"| node_biliupload
node_biliupload -->|"uses SDK"| node_bilisdk
node_bilisdk -->|"sends requests"| node_bilinetwork
node_acfun -->|"publishes video"| node_acfunplatform
node_bilisdk -->|"publishes video"| node_biliplatform
node_taskmanager -->|"loads settings"| node_config
node_taskmanager -->|"resolves FFmpeg"| node_ffmpeg
node_youtube -->|"uses synced cookies"| node_cookiecloud
node_taskmanager -->|"emits task events"| node_notifications
node_notifications -->|"delivers messages"| node_notifychannels
node_auth -->|"uses login SDK"| node_bilisdk

click node_webapp "https://github.com/fqscfqj/y2a-auto/blob/main/app.py"
click node_taskmanager "https://github.com/fqscfqj/y2a-auto/blob/main/modules/task_manager.py"
click node_youtube "https://github.com/fqscfqj/y2a-auto/blob/main/modules/youtube_handler.py"
click node_asr "https://github.com/fqscfqj/y2a-auto/blob/main/modules/speech_recognition.py"
click node_subtitle "https://github.com/fqscfqj/y2a-auto/blob/main/modules/subtitle_translator.py"
click node_subtitleqc "https://github.com/fqscfqj/y2a-auto/blob/main/modules/subtitle_qc.py"
click node_subtitletransform "https://github.com/fqscfqj/y2a-auto/blob/main/modules/srt_transform_engine.py"
click node_metadata "https://github.com/fqscfqj/y2a-auto/blob/main/modules/ai_enhancer.py"
click node_moderation "https://github.com/fqscfqj/y2a-auto/blob/main/modules/content_moderator.py"
click node_encoding "https://github.com/fqscfqj/y2a-auto/blob/main/modules/video_encoder_params.py"
click node_acfun "https://github.com/fqscfqj/y2a-auto/blob/main/modules/acfun_uploader.py"
click node_biliupload "https://github.com/fqscfqj/y2a-auto/blob/main/modules/bilibili_uploader.py"
click node_bilisdk "https://github.com/fqscfqj/y2a-auto/blob/main/modules/bili_sdk/video_uploader.py"
click node_bilinetwork "https://github.com/fqscfqj/y2a-auto/blob/main/modules/bili_sdk/utils/network.py"
click node_monitor "https://github.com/fqscfqj/y2a-auto/blob/main/modules/youtube_monitor.py"
click node_config "https://github.com/fqscfqj/y2a-auto/blob/main/modules/config_manager.py"
click node_auth "https://github.com/fqscfqj/y2a-auto/blob/main/modules/bilibili_auth.py"
click node_acauth "https://github.com/fqscfqj/y2a-auto/blob/main/modules/acfun_auth.py"
click node_cookiecloud "https://github.com/fqscfqj/y2a-auto/blob/main/modules/cookiecloud.py"
click node_notifications "https://github.com/fqscfqj/y2a-auto/blob/main/modules/notifications/service.py"
click node_ffmpeg "https://github.com/fqscfqj/y2a-auto/blob/main/modules/ffmpeg_manager.py"

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_webapp,node_monitor toneBlue
class node_taskmanager,node_youtube,node_asr,node_subtitle,node_subtitleqc,node_subtitletransform,node_metadata,node_moderation,node_encoding toneAmber
class node_acfun,node_biliupload,node_bilisdk,node_bilinetwork,node_auth,node_acauth toneMint
class node_config,node_cookiecloud,node_notifications,node_ffmpeg toneRose
class node_operator,node_youtubeplatform,node_asrproviders,node_aimodel,node_acfunplatform,node_biliplatform,node_notifychannels toneIndigo
```

## Components

### Web and operations

- [Web application](https://github.com/fqscfqj/y2a-auto/blob/main/app.py): `app.py`
- [YouTube monitor](https://github.com/fqscfqj/y2a-auto/blob/main/modules/youtube_monitor.py): `modules/youtube_monitor.py`

### Task workflow

- [Task manager](https://github.com/fqscfqj/y2a-auto/blob/main/modules/task_manager.py): `modules/task_manager.py`
- [YouTube download](https://github.com/fqscfqj/y2a-auto/blob/main/modules/youtube_handler.py): `modules/youtube_handler.py`
- [Speech recognition](https://github.com/fqscfqj/y2a-auto/blob/main/modules/speech_recognition.py): `modules/speech_recognition.py`
- [Subtitle translation](https://github.com/fqscfqj/y2a-auto/blob/main/modules/subtitle_translator.py): `modules/subtitle_translator.py`
- [Subtitle QC](https://github.com/fqscfqj/y2a-auto/blob/main/modules/subtitle_qc.py): `modules/subtitle_qc.py`
- [Subtitle transform](https://github.com/fqscfqj/y2a-auto/blob/main/modules/srt_transform_engine.py): `modules/srt_transform_engine.py`
- [AI metadata](https://github.com/fqscfqj/y2a-auto/blob/main/modules/ai_enhancer.py): `modules/ai_enhancer.py`
- [Content moderation](https://github.com/fqscfqj/y2a-auto/blob/main/modules/content_moderator.py): `modules/content_moderator.py`
- [Video encoding](https://github.com/fqscfqj/y2a-auto/blob/main/modules/video_encoder_params.py): `modules/video_encoder_params.py`

### Platform integrations

- [AcFun upload](https://github.com/fqscfqj/y2a-auto/blob/main/modules/acfun_uploader.py): `modules/acfun_uploader.py`
- [bilibili upload](https://github.com/fqscfqj/y2a-auto/blob/main/modules/bilibili_uploader.py): `modules/bilibili_uploader.py`
- [bilibili SDK](https://github.com/fqscfqj/y2a-auto/blob/main/modules/bili_sdk/video_uploader.py): `modules/bili_sdk/video_uploader.py`
- [bilibili networking](https://github.com/fqscfqj/y2a-auto/blob/main/modules/bili_sdk/utils/network.py): `modules/bili_sdk/utils/network.py`
- [Platform authentication](https://github.com/fqscfqj/y2a-auto/blob/main/modules/bilibili_auth.py): `modules/bilibili_auth.py`
- [AcFun authentication](https://github.com/fqscfqj/y2a-auto/blob/main/modules/acfun_auth.py): `modules/acfun_auth.py`

### Runtime support

- [Configuration](https://github.com/fqscfqj/y2a-auto/blob/main/modules/config_manager.py): `modules/config_manager.py`
- [CookieCloud sync](https://github.com/fqscfqj/y2a-auto/blob/main/modules/cookiecloud.py): `modules/cookiecloud.py`
- [Notifications](https://github.com/fqscfqj/y2a-auto/blob/main/modules/notifications/service.py): `modules/notifications/service.py`
- [FFmpeg management](https://github.com/fqscfqj/y2a-auto/blob/main/modules/ffmpeg_manager.py): `modules/ffmpeg_manager.py`

### Other components

- **Operator**
- **YouTube**
- **ASR providers**
- **AI services**
- **AcFun**
- **bilibili**
- **Notification channels**

## Connections

- Operator → Web application: uses (evidence: `README.md`)
- Web application → Task manager: manages tasks (evidence: `app.py`)
- Web application → YouTube monitor: manages monitoring (evidence: `app.py`)
- Web application → Configuration: configures (evidence: `app.py`)
- Web application → Platform authentication: handles login (evidence: `app.py`)
- Web application → AcFun authentication: handles login (evidence: `app.py`)
- Web application → CookieCloud sync: syncs cookies (evidence: `app.py`)
- Web application → Notifications: tests notifications (evidence: `app.py`)
- YouTube monitor → Task manager: queues tasks (evidence: `README.md`)
- Task manager → YouTube download: downloads video (evidence: `modules/task_manager.py`)
- YouTube download → YouTube: fetches video (evidence: `README.md`)
- Task manager → Speech recognition: recognizes speech (evidence: `modules/task_manager.py`)
- Speech recognition → ASR providers: transcribes audio (evidence: `README.md`)
- Task manager → Subtitle translation: translates subtitles (evidence: `modules/task_manager.py`)
- Subtitle translation → AI services: requests translation (evidence: `README.md`)
- Task manager → Subtitle QC: checks subtitles (evidence: `modules/task_manager.py`)
- Subtitle QC → AI services: requests review (evidence: `README.md`)
- Task manager → Subtitle transform: transforms subtitles (evidence: `modules/task_manager.py`)
- Task manager → AI metadata: generates metadata (evidence: `modules/task_manager.py`)
- AI metadata → AI services: requests generation (evidence: `README.md`)
- Task manager → Content moderation: moderates content (evidence: `modules/task_manager.py`)
- Content moderation → AI services: checks safety (evidence: `README.md`)
- Task manager → Video encoding: encodes video (evidence: `README.md`)
- Task manager → AcFun upload: uploads to AcFun (evidence: `README.md`)
- Task manager → bilibili upload: uploads to bilibili (evidence: `README.md`)
- bilibili upload → bilibili SDK: uses SDK
- bilibili SDK → bilibili networking: sends requests (evidence: `modules/bili_sdk/video_uploader.py`)
- AcFun upload → AcFun: publishes video (evidence: `README.md`)
- bilibili SDK → bilibili: publishes video (evidence: `README.md`)
- Task manager → Configuration: loads settings (evidence: `modules/task_manager.py`)
- Task manager → FFmpeg management: resolves FFmpeg (evidence: `modules/task_manager.py`)
- YouTube download → CookieCloud sync: uses synced cookies (evidence: `modules/youtube_handler.py`)
- Task manager → Notifications: emits task events (evidence: `modules/task_manager.py`)
- Notifications → Notification channels: delivers messages (evidence: `README.md`)
- Platform authentication → bilibili SDK: uses login SDK (evidence: `modules/bilibili_auth.py`)
