{"id":"b82bbfa2-9881-4d06-927d-c55eb28c625d","entityType":"agent","slug":"clawhub-hanshojin-cd2flac","name":"Cd2flac","canonicalUrl":"https://www.xpersona.co/agent/clawhub-hanshojin-cd2flac","canonicalPath":"/agent/clawhub-hanshojin-cd2flac","generatedAt":"2026-10-11T20:57:19.084Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T18:15:13.257Z","emptyReason":null},"description":"Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix... Skill: Cd2flac Owner: hanshojin Summary: Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix... Tags: audio:1.2.1, chinese:1.2.1, converter:1.0.0, cue:1.2.1, flac:1.2.1, latest:1.3.1, lyrics:1.2.1, music:1.2.1, netease:1.2.1, wav:1.2.1 Version history: v1.3.1 | 2026-05-29T09:31:04.885Z | user 新增 DSF/SACD 格式支持，可通过","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17dbfqvbfr8qxnqrg39mgdg8185rt7m:cd2flac","sourceUrl":"https://clawhub.ai/hanshojin/cd2flac","homepage":"https://clawhub.ai/hanshojin/skills/cd2flac","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/hanshojin/cd2flac","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/hanshojin/skills/cd2flac","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T18:15:13.257Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T18:15:13.257Z","emptyReason":null},"stars":null,"forks":null,"downloads":1011,"packageName":null,"latestVersion":"1.3.1","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T18:15:13.244Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T18:15:13.257Z","lastCrawledAt":"2026-10-11T18:15:13.244Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T18:15:13.244Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.1","createdAt":"2026-05-29T09:31:04.885Z","changelog":"新增 DSF/SACD 格式支持，可通过网易云音乐搜索并注入歌词到 TXXX:LYRICS 标签","fileCount":5,"zipByteSize":12888},{"version":"1.3.0","createdAt":"2026-05-29T09:28:22.194Z","changelog":"DSF/SACD 支持: 修复文件头写入损坏问题，支持 DSF 格式歌词注入 (TXXX:LYRICS)，按 DSF 规范在文件末尾附加 ID3 标签","fileCount":5,"zipByteSize":12890},{"version":"1.2.1","createdAt":"2026-04-29T04:29:31.600Z","changelog":"全部中文化发布。v1.2.0: 歌词搜索优化(无歌手标签时从目录名推断); v1.1.0: 自动歌词注入(网易云+酷狗); v1.0.0: 首发(RAR解压 CUE分轨 GBK编码修复 多CD目录)","fileCount":5,"zipByteSize":12514},{"version":"1.2.0","createdAt":"2026-04-29T03:42:46.896Z","changelog":"Smarter lyric matching: auto-infer artist from directory when FLAC tags are empty, multi-stage search strategy (title+artist -> title+inferred -> title only), improved match quality for fan compilations.","fileCount":4,"zipByteSize":11329},{"version":"1.1.1","createdAt":"2026-04-29T03:11:46.216Z","changelog":"Tested and stable: Netease lyrics working with Roon scroll sync, Kugou fallback, translation support.","fileCount":4,"zipByteSize":10847},{"version":"1.1.0","createdAt":"2026-04-29T03:08:15.436Z","changelog":"Add lyric injection: auto-fetch synced lyrics from Netease Cloud Music (linuxapi, no login) with Kugou fallback. Embed as FLAC LYRICS tag. New CLI flags: --lyrics, --lyrics-only, standalone lyric.py script.","fileCount":4,"zipByteSize":10849},{"version":"1.0.0","createdAt":"2026-04-29T02:14:25.705Z","changelog":"Initial release: RAR extraction, CUE-based WAV splitting, GBK encoding fix for Chinese filenames, multi-CD album organization","fileCount":3,"zipByteSize":6090}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dbfqvbfr8qxnqrg39mgdg8185rt7m:cd2flac","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T20:57:19.083Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hanshojin-cd2flac/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T18:15:13.257Z","emptyReason":null},"readme":"Skill: Cd2flac\n\nOwner: hanshojin\n\nSummary: Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix...\n\nTags: audio:1.2.1, chinese:1.2.1, converter:1.0.0, cue:1.2.1, flac:1.2.1, latest:1.3.1, lyrics:1.2.1, music:1.2.1, netease:1.2.1, wav:1.2.1\n\nVersion history:\n\nv1.3.1 | 2026-05-29T09:31:04.885Z | user\n\n新增 DSF/SACD 格式支持，可通过网易云音乐搜索并注入歌词到 TXXX:LYRICS 标签\n\nv1.3.0 | 2026-05-29T09:28:22.194Z | user\n\nDSF/SACD 支持: 修复文件头写入损坏问题，支持 DSF 格式歌词注入 (TXXX:LYRICS)，按 DSF 规范在文件末尾附加 ID3 标签\n\nv1.2.1 | 2026-04-29T04:29:31.600Z | user\n\n全部中文化发布。v1.2.0: 歌词搜索优化(无歌手标签时从目录名推断); v1.1.0: 自动歌词注入(网易云+酷狗); v1.0.0: 首发(RAR解压 CUE分轨 GBK编码修复 多CD目录)\n\nv1.2.0 | 2026-04-29T03:42:46.896Z | user\n\nSmarter lyric matching: auto-infer artist from directory when FLAC tags are empty, multi-stage search strategy (title+artist -> title+inferred -> title only), improved match quality for fan compilations.\n\nv1.1.1 | 2026-04-29T03:11:46.216Z | user\n\nTested and stable: Netease lyrics working with Roon scroll sync, Kugou fallback, translation support.\n\nv1.1.0 | 2026-04-29T03:08:15.436Z | user\n\nAdd lyric injection: auto-fetch synced lyrics from Netease Cloud Music (linuxapi, no login) with Kugou fallback. Embed as FLAC LYRICS tag. New CLI flags: --lyrics, --lyrics-only, standalone lyric.py script.\n\nv1.0.0 | 2026-04-29T02:14:25.705Z | user\n\nInitial release: RAR extraction, CUE-based WAV splitting, GBK encoding fix for Chinese filenames, multi-CD album organization\n\nArchive index:\n\nArchive v1.3.1: 5 files, 12888 bytes\n\nFiles: _meta.json (126b), scripts/cd2flac.py (17487b), scripts/lyric.py (11619b), skill-card.md (2333b), SKILL.md (3883b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login needed)\n- **Fallback**: Kugou Music\n\nSynced LRC is embedded as Vorbis comment `LYRICS` tag. If Netease provides\ntranslation lyrics, they go in `LYRICS_TRANSLATIONS` tag.\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\n### Add lyrics to an existing FLAC library\n\n```bash\nfind /path/to/music -name \"*.flac\" -exec dirname {} \\; | sort -u | \\\n  xargs -I{} python3 skills/cd2flac/scripts/lyric.py \"{}\"\n```\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1780047064885\n}\n\nFile v1.3.1:skill-card.md\n\n## Description:\n\nConverts CD audio archives and WAV/CUE pairs into organized per-track FLAC files, with optional synced lyric lookup and embedding.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[hanshojin](https://clawhub.ai/user/hanshojin)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and audio library maintainers use this skill to prepare and run conversion workflows for RAR archives or WAV/CUE album sources, split tracks into FLAC files, organize multi-disc albums, and optionally add synced lyrics.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The conversion workflow can modify music files and delete source WAV, CUE, or RAR files when cleanup options are used.\n\nMitigation: Run on backed-up copies first, use --dry-run before conversion, keep source WAV/CUE files with --keep-wav --keep-cue, and avoid --delete-rar until outputs are verified.\n\nRisk: Lyric lookup can send track metadata to Netease and Kugou, and the Kugou fallback uses insecure HTTP endpoints.\n\nMitigation: Use --lyrics or lyric.py only when sharing track metadata with those services is acceptable; skip lyric lookup for private libraries or sensitive metadata.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/hanshojin/skills/cd2flac)\n- [Netease Cloud Music lyric endpoint](https://music.163.com/api/linux/forward)\n- [Kugou mobile search endpoint](http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword={encoded}&page=1&pagesize=5)\n- [Kugou lyric endpoint](http://m.kugou.com/app/i/krc.php?cmd=100&hash={song_hash}&timelength=999999)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, files]\n\n**Output Format:** [Markdown with inline bash commands; generated FLAC and lyric files when the scripts are run]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The workflow can modify local music libraries and can call external lyric services when lyric lookup is enabled.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.3.0: 5 files, 12890 bytes\n\nFiles: _meta.json (126b), scripts/cd2flac.py (17487b), scripts/lyric.py (11619b), skill-card.md (2401b), SKILL.md (3883b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login needed)\n- **Fallback**: Kugou Music\n\nSynced LRC is embedded as Vorbis comment `LYRICS` tag. If Netease provides\ntranslation lyrics, they go in `LYRICS_TRANSLATIONS` tag.\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\n### Add lyrics to an existing FLAC library\n\n```bash\nfind /path/to/music -name \"*.flac\" -exec dirname {} \\; | sort -u | \\\n  xargs -I{} python3 skills/cd2flac/scripts/lyric.py \"{}\"\n```\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1780046902194\n}\n\nFile v1.3.0:skill-card.md\n\n## Description: <br>\nConvert CD audio archives and direct WAV+CUE pairs into organized per-track FLAC files, with optional synced lyric lookup and injection. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hanshojin](https://clawhub.ai/user/hanshojin) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and audio-library maintainers use this skill to prepare commands for extracting RAR or direct WAV+CUE album sources, splitting tracks to FLAC, organizing multi-disc albums, and optionally adding synced lyrics. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Lyric lookup can send song metadata to Netease and Kugou. <br>\nMitigation: Use conversion without --lyrics or --lyrics-only when external lookup is not acceptable, and review network behavior before enabling lyric features. <br>\nRisk: Conversion can modify local audio files and remove source WAV/CUE files. <br>\nMitigation: Run --dry-run first, keep backups, and pass --keep-wav and --keep-cue when source files must be preserved. <br>\nRisk: Archive deletion is available through an explicit option. <br>\nMitigation: Use --delete-rar only when archive removal is intended after successful extraction. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/hanshojin/cd2flac) <br>\n- [Netease Cloud Music linuxapi endpoint](https://music.163.com/api/linux/forward) <br>\n- [Kugou mobile search endpoint](http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword={encoded}&page=1&pagesize=5) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, files] <br>\n**Output Format:** [Markdown with inline bash commands and concise execution guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [When executed, the bundled scripts can create organized FLAC tracks, update FLAC lyric tags, create DSF .lrc sidecar files, and remove source WAV/CUE files unless keep flags are used.] <br>\n\n## Skill Version(s): <br>\n1.3.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.2.1: 5 files, 12514 bytes\n\nFiles: scripts/cd2flac.py (17487b), scripts/lyric.py (11044b), skill-card.md (2200b), SKILL.md (3883b), _meta.json (126b)\n\nFile v1.2.1:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login needed)\n- **Fallback**: Kugou Music\n\nSynced LRC is embedded as Vorbis comment `LYRICS` tag. If Netease provides\ntranslation lyrics, they go in `LYRICS_TRANSLATIONS` tag.\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\n### Add lyrics to an existing FLAC library\n\n```bash\nfind /path/to/music -name \"*.flac\" -exec dirname {} \\; | sort -u | \\\n  xargs -I{} python3 skills/cd2flac/scripts/lyric.py \"{}\"\n```\n\nFile v1.2.1:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.2.1\",\n  \"publishedAt\": 1777436971600\n}\n\nFile v1.2.1:skill-card.md\n\n## Description: <br>\nConvert CD audio archives and direct WAV/CUE pairs into organized per-track FLAC files, with support for CUE splitting, Chinese filename encoding repair, multi-disc album layout, and optional synced lyric injection. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hanshojin](https://clawhub.ai/user/hanshojin) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and audio-library maintainers use this skill to convert archived CD-quality albums into organized FLAC tracks and optionally add synced lyrics. It is most relevant for WAV/CUE collections, Chinese-language releases with GBK filename issues, and multi-disc album archives. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can modify, rename, tag, or delete music files in the selected directory. <br>\nMitigation: Run dry-run first, keep backups, and use --keep-wav and --keep-cue when preserving source WAV/CUE files matters. <br>\nRisk: The --delete-rar option can remove archive files after extraction. <br>\nMitigation: Use --delete-rar only when archive deletion is intentional and backed up. <br>\nRisk: Lyrics modes can send song metadata to Netease or Kugou lyric services. <br>\nMitigation: Do not enable --lyrics or --lyrics-only when song metadata should remain local. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/hanshojin/cd2flac) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Guidance, Files] <br>\n**Output Format:** [Markdown with inline bash commands and filesystem outputs] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create, rename, tag, or delete audio files in the selected music directory depending on command options.] <br>\n\n## Skill Version(s): <br>\n1.2.1 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.2.0: 4 files, 11329 bytes\n\nFiles: scripts/cd2flac.py (17487b), scripts/lyric.py (11044b), SKILL.md (3883b), _meta.json (126b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login needed)\n- **Fallback**: Kugou Music\n\nSynced LRC is embedded as Vorbis comment `LYRICS` tag. If Netease provides\ntranslation lyrics, they go in `LYRICS_TRANSLATIONS` tag.\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\n### Add lyrics to an existing FLAC library\n\n```bash\nfind /path/to/music -name \"*.flac\" -exec dirname {} \\; | sort -u | \\\n  xargs -I{} python3 skills/cd2flac/scripts/lyric.py \"{}\"\n```\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1777434166896\n}\n\nArchive v1.1.1: 4 files, 10847 bytes\n\nFiles: scripts/cd2flac.py (17473b), scripts/lyric.py (9581b), SKILL.md (3883b), _meta.json (126b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login needed)\n- **Fallback**: Kugou Music\n\nSynced LRC is embedded as Vorbis comment `LYRICS` tag. If Netease provides\ntranslation lyrics, they go in `LYRICS_TRANSLATIONS` tag.\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\n### Add lyrics to an existing FLAC library\n\n```bash\nfind /path/to/music -name \"*.flac\" -exec dirname {} \\; | sort -u | \\\n  xargs -I{} python3 skills/cd2flac/scripts/lyric.py \"{}\"\n```\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1777432306216\n}\n\nArchive v1.1.0: 4 files, 10849 bytes\n\nFiles: scripts/cd2flac.py (17473b), scripts/lyric.py (9581b), SKILL.md (3883b), _meta.json (126b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login needed)\n- **Fallback**: Kugou Music\n\nSynced LRC is embedded as Vorbis comment `LYRICS` tag. If Netease provides\ntranslation lyrics, they go in `LYRICS_TRANSLATIONS` tag.\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\n### Add lyrics to an existing FLAC library\n\n```bash\nfind /path/to/music -name \"*.flac\" -exec dirname {} \\; | sort -u | \\\n  xargs -I{} python3 skills/cd2flac/scripts/lyric.py \"{}\"\n```\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1777432095436\n}\n\nArchive v1.0.0: 3 files, 6090 bytes\n\nFiles: scripts/cd2flac.py (14916b), SKILL.md (2509b), _meta.json (126b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization. Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Common Scenarios\n\n### Chinese album with garbled filenames\n\nThe script auto-detects and fixes GBK→UTF-8 mojibake in track names by\ncomparing the actual filename bytes against the CUE sheet's GBK-encoded titles.\n\n### Multi-CD albums\n\nIf a directory contains multiple WAV+CUE pairs, they are treated as separate\ndiscs and placed into `CD1/`, `CD2/`, etc. subdirectories.\n\n### Already extracted albums\n\nIf the RAR is already extracted but not yet converted, the script detects the\nWAV+CUE pairs and processes them directly.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1777428865705\n}","readmeExcerpt":"Skill: Cd2flac Owner: hanshojin Summary: Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix... Tags: audio:1.2.1, chinese:1.2.1, converter:1.0.0, cue:1.2.1, flac:1.2.1, latest:1.3.1, lyrics:1.2.1, music:1.2.1, netease:1.2.1, wav:1.2.1 Version history: v1.3.1 | 2026-05-29T09:31:04.885Z | user 新增 DSF/SACD 格式支持，可通过","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 skills/cd2flac/scripts/cd2flac.py <directory> [options]"},{"language":"bash","snippet":"python3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\""},{"language":"bash","snippet":"python3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics"},{"language":"bash","snippet":"python3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only"},{"language":"bash","snippet":"python3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\""},{"language":"bash","snippet":"python3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: cd2flac\ndescription: |\n  Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized\n  FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding\n  fix for Chinese filenames, multi-CD album organization, and auto-fetch synced\n  lyrics from Netease Cloud Music (with Kugou fallback). Use whenever someone\n  needs to extract and convert CD-quality audio archives (WAV+CUE in RAR/7z/ZIP)\n  to per-track FLAC files. Also handles direct WAV+CUE pairs without archives.\n---\n\n# CD to FLAC Converter\n\nTool to extract CD audio from RAR archives and convert WAV+CUE pairs into\nindividual FLAC tracks with correct names and synced lyrics.\n\n## Requirements\n\n- **System packages**: `unrar`, `cuetools`, `shntool`, `flac`\n- Install: `sudo apt-get install -y unrar cuetools shntool flac`\n\n## Python dependencies\n\n- `mutagen` (FLAC tag handling)\n- `pycryptodome` (Netease API encryption)\n- Install: `pip3 install mutagen pycryptodome`\n\n## Usage\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py <directory> [options]\n```\n\n### Basic — process RAR archives in a directory\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\"\n```\n\n### With synced lyrics (Netease + Kugou)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics\n```\n\n### Inject lyrics into already converted FLACs (no conversion)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --lyrics-only\n```\n\n### Standalone lyric injector (for any FLAC directory)\n\n```bash\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/album/\"\npython3 skills/cd2flac/scripts/lyric.py \"/path/to/track.flac\"\n```\n\n### Dry run — preview without changes\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/albums/\" --dry-run\n```\n\n### Keep WAV/CUE, delete RAR after extraction\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --keep-wav --delete-rar\n```\n\n### Process subdirectories recursively\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/\" --recursive --lyrics\n```\n\n### Process already-extracted WAV+CUE pairs (no RAR)\n\n```bash\npython3 skills/cd2flac/scripts/cd2flac.py \"/path/to/album_with_wav/\"\n```\n\n## What It Does\n\n1. **Extract**: Unpacks RAR archives in the target directory\n2. **Parse CUE**: Reads CUE sheets in GBK/GB18030/UTF-8 encoding, extracts track titles\n3. **Split**: Uses `shnsplit` to split each WAV into individual FLAC tracks\n4. **Fix names**: Renames garbled tracks (CUE files in Chinese encodings produce mojibake filenames) using correct track titles from the CUE sheet\n5. **Organize**: Multi-CD albums get `CD1/`, `CD2/`, etc. subdirectories\n6. **Lyrics**: Auto-fetch synced lyrics from Netease Cloud Music (primary) and Kugou (fallback), inject as FLAC LYRICS tag with translation support\n7. **Clean up**: Deletes original WAV and CUE files (optional: keep them)\n\n## Lyric Injection\n\nLyrics are fetched using the same strategy as ESLyric:\n- **Primary**: Netease Cloud Music via linuxapi (AES-ECB encryption, no login ne"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7621a0m45rgjx0e1xjfy9th985ratg\",\n  \"slug\": \"cd2flac\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1780047064885\n}"},{"path":"skill-card.md","content":"## Description:\n\nConverts CD audio archives and WAV/CUE pairs into organized per-track FLAC files, with optional synced lyric lookup and embedding.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[hanshojin](https://clawhub.ai/user/hanshojin)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and audio library maintainers use this skill to prepare and run conversion workflows for RAR archives or WAV/CUE album sources, split tracks into FLAC files, organize multi-disc albums, and optionally add synced lyrics.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The conversion workflow can modify music files and delete source WAV, CUE, or RAR files when cleanup options are used.\n\nMitigation: Run on backed-up copies first, use --dry-run before conversion, keep source WAV/CUE files with --keep-wav --keep-cue, and avoid --delete-rar until outputs are verified.\n\nRisk: Lyric lookup can send track metadata to Netease and Kugou, and the Kugou fallback uses insecure HTTP endpoints.\n\nMitigation: Use --lyrics or lyric.py only when sharing track metadata with those services is acceptable; skip lyric lookup for private libraries or sensitive metadata.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/hanshojin/skills/cd2flac)\n- [Netease Cloud Music lyric endpoint](https://music.163.com/api/linux/forward)\n- [Kugou mobile search endpoint](http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword={encoded}&page=1&pagesize=5)\n- [Kugou lyric endpoint](http://m.kugou.com/app/i/krc.php?cmd=100&hash={song_hash}&timelength=999999)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, files]\n\n**Output Format:** [Markdown with inline bash commands; generated FLAC and lyric files when the scripts are run]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The workflow can modify local music libraries and can call external lyric services when lyric lookup is enabled.]\n\n## Skill Version(s):\n\n1.3.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix... Skill: Cd2flac Owner: hanshojin Summary: Convert CD audio archives (RAR files containing WAV+CUE pairs) into organized FLAC files. Handles RAR extraction, CUE-based track splitting, GBK encoding fix... Tags: audio:1.2.1, chinese:1.2.1, converter:1.0.0, cue:1.2.1, flac:1.2.1, latest:1.3.1, lyrics:1.2.1, music:1.2.1, netease:1.2.1, wav:1.2.1 Version history: v1.3.1 | 2026-05-29T09:31:04.885Z | user 新增 DSF/SACD 格式支持，可通过","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1088,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T18:15:13.257Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T18:15:13.257Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:57:19.084Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}