저녁 11시쯤 시작해서 새벽 1시 정도까지 폰으로만 도구 하나를 만들어봤다.
조건은 단순했다.
- 폰으로만
- 빠르게
- 내가 자주 쓰고 싶은 것
이런 작은 만들기를 앞으로 자주 하고 싶었다. 그러려면 PC를 켜야 하거나 환경을 세팅해야 하는 도구가 아니라, 떠오를 때 바로 만질 수 있는 환경이 필요했다. 이번이 그 첫 시도였다.
1. 만든 것
스포티파이 플리 자동 생성기
좋아요 → AI 분류 → 내 스포티파이에 플리 완성
링크: https://likepinetree045-prog.github.io/forfun/
플리 빌더 — 좋아요를 분류해 Spotify 플리로
최초 1회 셋업: https://developer.spotify.com/dashboard 에서 앱 생성 (또는 기존 앱 사용) 앱 Settings → Redirect URIs에 위 박스의 URL을 그대로 추가 → Save Client ID를 복사해 이 페이지의 "설정"에 입력 → 저장
likepinetree045-prog.github.io

💡 사용법 (5분, Spotify Premium 필요)
1. https://developer.spotify.com/dashboard/create에서 앱 만들기
→ Redirect URI에 위 사이트 URL(https://likepinetree045-prog.github.io/forfun/) 추가
→ Client ID 복사
2. 같은 앱 "User Management" 탭에 본인 Spotify 이메일 등록
3. 위 사이트 시크릿 탭으로 접속 → Client ID 붙여넣고 저장 → Spotify 로그인
4. "좋아요 전체 가져오기" → 나온 JSON 복사
5. Claude/ChatGPT 에 붙여넣고 "이거 카테고리별로 분류해줘"
→ 결과 JSON 받기
6. 받은 JSON을 사이트 3단계에 붙여넣기 → "생성" → 끝!
2. 제작기
시작 — 멜론에서 Spotify로
처음엔 멜론으로 만들고 싶었는데 공식 API가 사실상 없었다. Spotify Web API가 가장 안정적이고 자유도가 높아 선회했다.
첫 방향 전환 — "통째로 넣으면 알아서 분류해주세요"
처음엔 태그를 직접 달고 추천받는 CLI로 만들었는데, 내가 정리하긴 너무 빡세서 좋아요를 통째로 던지면 AI가 자동 분류해주는 방향으로 바꿨다.
더 간단하게 — "API 키 없이도 채팅에서 분류해주세요"
Anthropic API 키를 따로 발급받으려면 노트북을 열어야했는데, '폰으로만'하는 원칙에 맞지 않아서(사실 귀찮아서) 더 간소화된 방식을 선택했다. 그래서 좋아요를 JSON으로 뽑아주는 명령(pb tracks)과 분류 결과를 받아 적용하는 명령(pb apply)으로 분리했다. AI 분류는 그냥 채팅에서 받기로.
두 번째 방향 전환 — "폰으로 다 하고 싶어요"
CLI는 PC에서만 동작했다. 폰만으로 끝까지 가려면 웹페이지가 필요했고, 단일 HTML + PKCE OAuth + GitHub Pages로 만들었다.

403 헬게이트와 디버그 패널
플리 생성 단계에서 403 Forbidden이 떴다. User Management 등록, 이메일 확인, 세션 정리, 시크릿 탭, scope 확인까지 다 해봤는데 안 풀렸다. 추측만으로는 한계가 보여서 화면 하단에 디버그 로그 패널을 추가했다. 모든 API 호출과 응답을 다 볼 수 있게.
진짜 원인 — Spotify 2026-02 마이그레이션
로그를 보니 scope는 정상인데 /me 응답에 email/product/country 필드가 누락돼 있었다. 검색해보니 2026-02 마이그레이션에서 POST /users/{user_id}/playlists 엔드포인트가 완전히 제거되고 POST /me/playlists로 통합된 거였다. 우리 코드가 옛 엔드포인트를 쓰고 있었던 게 원인. 엔드포인트 교체하고 끝!

3. 회고 포인트
폰으로만 제한 — 의도적인 제약
CLI가 잘 동작하고 있었는데 폰만으로 가능하게 만들었다. 이유는 단순했다. 나를 위한 개발을 앞으로 자주 하고 싶었고, 그러려면 심리적 장벽이 낮아야 했다. PC를 켜야만 쓸 수 있는 도구는 결국 안 쓰게 된다. 일부러 제약을 걸어서 진입 비용을 낮춘 셈이다.
디버그 코드를 더 일찍 만들었다면
403이 처음 떴을 때부터 디버그 패널을 만들었으면 훨씬 빨리 해결됐을 거다. 처음엔 "User Management 등록 부족인가" "이메일 불일치인가" "scope 문제인가" 같은 가설을 하나씩 검증했는데, 추측만으로는 한계가 명확했다. 문제를 풀기 전에 문제를 보이게 만드는 도구를 먼저 만드는 게 더 빠른 길이었다.
목표와 지향점만 말하면 AI가 알아서
CLI → 단일 HTML 웹앱으로 갈아엎는 결정은 내가 한 게 아니다. "폰으로만 다 하자"는 지향점을 말하니까 AI가 알아서 "그러면 PKCE OAuth + GitHub Pages + 단일 HTML이 답"이라고 제안해줬다. 만들어야 할 것의 세부 사항을 정하지 않아도, 무엇을 위해 만드는지만 명확하면 알아서 풀어준다. 이게 AI와 함께 만드는 시대의 새로운 워크플로우 같다.
4. 왜 이런 시도를 했는가
요즘 나를 위한 걸 하고 싶었다. 매일 TIL을 쓰다 보니 자연스럽게 회고가 됐는데, 일에서 자극을 받고 있긴 하지만 다양성이 필요한 시기라는 감각이 들었다. 특히 즐거움이 그렇다. 일에서 받는 자극과 나를 위한 즐거움은 결이 다르고, 즐거워야 더 시도하고 성장할 수 있다. AI 시대에는 그 시도의 폭과 속도가 곧 성장의 폭이 된다고 느끼기 때문이다. 그래서 이번이 그 첫 시도였다. 부담 없는 방식으로, 짧은 시간 안에, 내가 자주 쓰고 싶은 것을 만드는 내적 흥미를 깨우는 시도를 계속 이어가고 싶다! 굿!!
'Learn everyday' 카테고리의 다른 글
| [5월 TIL #16] EXL 26 공유회 후기: 인간과 AI가 시너지를 내는 실험이란 (0) | 2026.05.29 |
|---|---|
| [5월 TIL #15] 폰으로만 코딩②: FC 바르셀로나 소식 봇 (0) | 2026.05.28 |
| [5월 TIL #13] 배우는 연기를, 나는 무엇을? (0) | 2026.05.26 |
| [5월 TIL #12] 의도와 설계만으로 대화하기 🍵 (1) | 2026.05.21 |
| [5월 TIL #11] 실험에서 얼마나 깊이 배울 것인가 (0) | 2026.05.19 |