← Back to list

subtitle-service
by corvo007
一站式全自动字幕生成软件,下载、转录、翻译、压制全流程覆盖,无需人工介入 / One-stop automated subtitle generator. Handles downloading, transcription, translation, and hardcoding—zero human intervention required.
⭐ 133🍴 13📅 Jan 23, 2026
SKILL.md
name: subtitle-service description: Subtitle parsing, generation, and translation service guidelines for Gemini-Subtitle-Pro. Use when working with SRT/ASS/VTT parsing, subtitle generation, translation pipeline, glossary management, speaker identification, and Gemini API integration. Covers the complete transcription → translation workflow.
Subtitle Service Guidelines
Purpose
Establish patterns for subtitle processing services in Gemini-Subtitle-Pro, covering parsing, generation, translation, and the AI pipeline.
When to Use This Skill
Automatically activates when working on:
- SRT/ASS/VTT parsing and generation
- Translation pipeline
- Glossary management
- Speaker identification
- Gemini API integration for refinement
- Transcription workflow
Quick Start
Subtitle Processing Checklist
- Parser: Use appropriate parser for format (SRT, ASS, VTT)
- Types: Use
SubtitleEntryinterface consistently - Validation: Validate timestamps and text content
- Error Handling: Handle parsing errors gracefully
- i18n: Support multiple languages in output
Architecture Overview
Pipeline Flow
Audio/Video Input
↓
Transcription (Whisper)
↓
Segmentation (VAD)
↓
Glossary Extraction
↓
Speaker Identification
↓
Translation/Refinement (Gemini)
↓
Subtitle Output (SRT/ASS/VTT)
Key Services
| Service | Location | Purpose |
|---|---|---|
| Subtitle Parser | src/services/subtitle/ | Parse SRT/ASS/VTT |
| Generation Pipeline | src/services/generation/pipeline/ | Orchestrate workflow |
| Gemini API | src/services/api/gemini/ | Translation & refinement |
| Audio Processing | src/services/audio/ | VAD, sampling |
Core Data Types
SubtitleEntry
interface SubtitleEntry {
index: number;
startTime: number; // milliseconds
endTime: number; // milliseconds
text: string;
translatedText?: string;
speaker?: string;
}
Timestamp Utilities
// Parse SRT timestamp: "00:01:23,456" → 83456
function parseSrtTimestamp(timestamp: string): number;
// Format to SRT: 83456 → "00:01:23,456"
function formatSrtTimestamp(ms: number): string;
// Parse ASS timestamp: "0:01:23.45" → 83450
function parseAssTimestamp(timestamp: string): number;
Parsing Patterns
SRT Parser
export function parseSrt(content: string): SubtitleEntry[] {
const blocks = content.trim().split(/\n\n+/);
return blocks.map((block, index) => {
const lines = block.split('\n');
const timestampLine = lines[1];
const [start, end] = timestampLine.split(' --> ');
return {
index,
startTime: parseSrtTimestamp(start),
endTime: parseSrtTimestamp(end),
text: lines.slice(2).join('\n'),
};
});
}
Format Detection
export function detectSubtitleFormat(content: string): 'srt' | 'ass' | 'vtt' {
if (content.startsWith('WEBVTT')) return 'vtt';
if (content.includes('[Script Info]')) return 'ass';
return 'srt';
}
Translation Pipeline
Concurrency Model
// Dual semaphores for resource management
const transcriptionSemaphore = new Semaphore(
isLocal ? 1 : 5 // Local: 1, Cloud: 5
);
const refinementSemaphore = new Semaphore(5); // Gemini Flash
// Process chunks in parallel
await mapInParallel(chunks, async (chunk) => {
await transcriptionSemaphore.acquire();
try {
const transcription = await transcribe(chunk);
// ...
} finally {
transcriptionSemaphore.release();
}
});
Resource Files
For detailed guidelines, see the resources directory:
- parsing-patterns.md - Subtitle format parsing
- pipeline-guide.md - Translation pipeline patterns
- gemini-integration.md - Gemini API usage
Score
Total Score
85/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
✓説明文
100文字以上の説明がある
+10
✓人気
GitHub Stars 100以上
+5
✓最近の活動
1ヶ月以内に更新
+10
✓フォーク
10回以上フォークされている
+5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon

