tykimos/agent-native-agent/audio-cd-rip
Claude Code and agent skill by tykimos/agent-native-agent
- community
Checking that the SKILL.md file is still in the repository.
오디오 CD를 mp3로 리핑해 contents/music 앨범 폴더로 만든다. CD 케이스·표지 사진에서 곡명을 읽거나 MusicBrainz로 조회해 album.json 메타를 작성하고, 커버 이미지를 저장해 음악 탭(/music)에 바로 뜨게 한다. "CD 복사해줘", "CD를 mp3로", "앨범 넣어줘", "음악 CD 리핑" 요청 시 사용.
Install
npx vskill@latest install tykimos/agent-native-agent/audio-cd-ripSKILL.md
오디오 CD → mp3 (contents/music)
맥미니에 넣은 오디오 CD를 앨범 폴더 하나로 만든다. 결과물은 /music 탭이 album.json을 읽어 곡명·아티스트·커버까지 그대로 보여준다.
결과물 규격 (이걸 맞추는 게 목적)
album.json:
file은 실제 파일명과 정확히 일치해야 한다. 서버가 이 값으로 곡명을 붙인다
(src/web_app.py 음악 라이브러리 스캔 → meta_by_file).
album.json이 없거나file이 어긋나면 파일명에서 제목을 뽑는 레거시 경로로 떨어져
화면에 01, 02처럼만 뜬다.
cover를 비워 두면 서버가cover.jpg→cover.png→folder.jpg순으로 찾는다.
source 표기 (메타를 어디서 얻었는지 반드시 남긴다)
| 값 | 언제 | |
|---|---|---|
Audio CD (CD-Text) | 디스크에 CD-Text가 있어 곡명이 파일명에 들어 있을 때 — 가장 정확, 제일 먼저 확인 | |
Audio CD (MusicBrainz) | MusicBrainz에서 앨범을 특정했을 때 | |
Audio CD (CD 케이스 곡목) | CD 케이스·속지 사진을 읽어 곡명을 옮겼을 때 | |
Audio CD | 곡명을 못 찾아 Track 01 로 채웠을 때 |
커버를 따로 받았으면 뒤에 붙인다: Audio CD (CD-Text) · 커버: Cover Art Archive
곡명을 확정 못 했으면 앨범 폴더명과 album 값에 `(미확인)` 을 붙여 나중에 알아보게 한다. 예: Karma (미확인) / "album": "Karma (제목 미확인)".
절차
1. CD 확인
맥미니에는 내장 광학 드라이브가 없다. 외장 USB CD 드라이브가 꽂혀 있어야 하고, /Volumes/ 와 system_profiler SPUSBDataType 둘 다 비어 있으면 드라이브부터 연결해 달라고 한다.
macOS는 오디오 CD를 .aiff 트랙 파일로 보여준다 → cdparanoia 같은 리퍼가 필요 없다.
2. 곡명 확보 (변환보다 먼저)
순서대로 시도한다:
- CD-Text — 제일 먼저 `ls` 로 확인한다. 요즘 CD는 대개 들어 있고, 그러면 트랙 파일명이
3 여수 밤바다.aiff 처럼 번호 + 곡명으로 나온다. 볼륨 이름도 앨범명이 된다 (/Volumes/Audio CD 가 아니라 /Volumes/버스커 버스커 1집). 이게 있으면 사진도 조회도 필요 없다. ``bash ls /Volumes/*/ | head # 파일명에 곡명이 있으면 CD-Text ` 파일명에서 앞의 번호를 떼면 그대로 곡명이다: re.sub(r"^\d+\s+", "", name).removesuffix(".aiff")`
- CD 케이스·속지 사진 — 사용자가 사진을 주면 읽어서 트랙 순서대로 옮긴다. 오타·번호 어긋남에 주의.
- MusicBrainz — 앨범명/아티스트로 조회해 트랙 목록을 맞춘다. 트랙 수가 CD와 같은지 반드시 대조.
- 다 안 되면
Track NN+(미확인)으로 두고 넘어간다. 곡명을 지어내지 않는다.
한글 곡명 대조 시 유니코드 정규화 필수. macOS 파일명은 NFD(자모 분리), MusicBrainz는 NFC라 눈으로 같아 보여도 문자열 비교가 전부 어긋난다. 반드시 unicodedata.normalize('NFC', s) 후 비교할 것.
3. 변환 (ffmpeg)
-q:a 2= VBR 약 190kbps. 원본 CD 음질 대비 충분하고 용량이 적당하다.- 트랙이 많으면 오래 걸린다 →
run_in_background: true로 돌리고 진행상황을 보고한다. - 정렬 주의: 트랙이 10개를 넘으면 셸 글롭이
1, 10, 11, 2…순으로 잡히는 CD도 있다.
변환 전에 ls /Volumes/Audio\ CD/ 로 실제 순서를 눈으로 확인하고, 필요하면 sort -V 를 쓴다.
4. 커버
오디오 CD에는 표지 이미지가 없다. 디스크는 CD_DA 오디오 트랙뿐이라(diskutil list /dev/diskN 로 확인 가능) 아무리 뒤져도 이미지가 안 나온다. CD-Text는 글자만 담는다. 그러니 밖에서 구해야 한다.
① Cover Art Archive (자동, 먼저 시도) — MusicBrainz로 릴리스를 특정한 뒤:
릴리스를 고를 땐 트랙 수가 CD와 같은지 먼저 보고, 곡목까지 대조해 확정한다. 같은 앨범이라도 재발매·합본(예: 1집+1집 마무리 16트랙)이 섞여 있어 트랙 수만 봐도 상당수 걸러진다. 받은 이미지는 눈으로 한 번 확인한다(엉뚱한 앨범 표지가 올 수 있다).
② 사용자 사진 — ①이 없으면 케이스를 찍어 달라고 한다.
커버가 없어도 재생은 정상 동작한다 — 화면에 표지만 비어 보인다.
5. album.json 작성 후 검증
트랙 수와 파일명이 1:1로 맞지 않으면 끝난 게 아니다.
하지 말 것
- 파일명에 곡명을 넣지 않는다 — 번호만 쓰고 곡명은
album.json이 갖는다
(한글·특수문자 파일명이 서빙 경로에서 문제를 일으킨 적이 있다).
- 곡명을 추측해서 채우지 않는다. 모르면
(미확인). - 기존 앨범 폴더를 덮어쓰지 않는다. 같은 이름이면 사용자에게 먼저 묻는다.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/media/audio-cd-rip/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tykimos/agent-native-agent/audio-cd-rip)