# 🎧 Music Monday와 Spotify를 연결하는 오픈소스 Ruby Sync Bot 만들기 (50~60자)

---

# # 📌 서론 – “음악을 공유했는데 재생목록에 자동 반영이 안돼요!”

Music Monday(뮤직 먼데이)는 매주 월요일마다 커뮤니티 멤버들이 자신이 좋아하는 곡을 댓글로 공유하는 **음악 추천 이벤트**입니다.

하지만 이렇게 공유된 트랙을 일일이 Spotify 플레이리스트에 추가한다면 시간도 많이 들고, 실수도 발생하기 쉽죠.

> **문제**: Music Monday 댓글에 적힌 곡 정보를 **자동으로 Spotify 플레이리스트에 동기화**하고 싶지만, 이를 구현할 수 있는 쉬운 방법이 없다.

이 글에서는 **Ruby** 로 만든 간단한 오픈소스 **Sync Bot**을 활용해, 댓글에 적힌 곡을 자동으로 Spotify에 추가하는 방법을 초보자도 이해하기 쉽게 단계별로 안내합니다.

> **SEO 키워드**

> 1. Spotify 플레이리스트 만들기

> 2. Ruby 자동화 스크립트

> 3. Music Monday 활용법

---

# # 🛠️ 1. 준비 단계 – 필수 도구와 계정 설정

| 항목 | 설명 | 설정 방법 |

|------|------|----------|

| **Ruby** | 스크립트를 실행할 언어 | `rbenv` 혹은 `rvm` 으로 최신 Ruby(≥ 2.7) 설치 |

| **Spotify 개발자 계정** | API 키(클라이언트 ID/시크릿) 발급 | <https://developer.spotify.com/dashboard> 에서 앱 생성 → “Client ID”와 “Client Secret” 복사 |

| **Music Monday API (비공식)** | 댓글 데이터를 가져오는 엔드포인트 | `https://api.musicmonday.com/v1/comments?topic=spotify` (예시) |

| **Bundler** | 의존성 관리 | `gem install bundler` 후 `bundle init` |

> **Tip**: Ruby 초보자는 `irb` 로 간단히 코드를 테스트해 보세요.

---

# # 📦 2. 프로젝트 구조와 핵심 코드

## # 2-1. 폴더 구성

```

music-monday-spotify-bot/

│
├─ Gemfile          # 의존성 정의

├─ bot.rb           # 메인 스크립트

└─ lib/

   └─ spotify_client.rb   # Spotify API 래퍼

```

## # 2-2. Gemfile 예시

```
ruby

source 'https://rubygems.org'

gem 'httparty'      # HTTP 요청

gem 'rspotify'      # Spotify API 래퍼

gem 'dotenv'        # 환경 변수 관리

```

`bundle install` 로 필요한 라이브러리를 설치합니다.

## # 2-3. Spotify 클라이언트 구현 (`lib/spotify_client.rb`)

```
ruby

require 'rspotify'

require 'dotenv/load'

RSpotify.authenticate(ENV['SPOTIFY_CLIENT_ID'],

                      ENV['SPOTIFY_CLIENT_SECRET'])

class SpotifyClient

  def initialize(playlist_id)

    @playlist = RSpotify::User.find('me').playlists.find { |p| p.id == playlist_id }

  end

  # 트랙을 검색하고 없으면 추가

  def add_track(track_name, artist_name)

    results = RSpotify::Track.search('#{track_name} #{artist_name}')

    track   = results.first

    return unless track

    unless @playlist.tracks.map(&:id).include?(track.id)

      @playlist.add_tracks!([track])

      puts '✅ '#{track_name}' - #{artist_name} 가 추가되었습니다.'

    else

      puts 'ℹ️ 이미 존재하는 트랙입니다.'

    end

  end

end

```

## # 2-4. 메인 로직 (`bot.rb`)

```
ruby

require 'httparty'

require_relative './lib/spotify_client'

# 1️⃣ Music Monday 댓글 가져오기

def fetch_comments

  response = HTTParty.get('https://api.musicmonday.com/v1/comments?topic=spotify')

  JSON.parse(response.body)['data']   # [{ 'track':'Shape of You', 'artist':'Ed Sheeran' }, ...]

end

# 2️⃣ Spotify 플레이리스트에 동기화

def sync_to_spotify

  playlist_id = ENV['SPOTIFY_PLAYLIST_ID']

  client = SpotifyClient.new(playlist_id)

  fetch_comments.each do |c|

    client.add_track(c['track'], c['artist'])

  end

end

# 실행

sync_to_spotify

```

> **핵심 포인트**

> - `RSpotify` 로 인증 후 **사용자 플레이리스트**에 접근

> - 댓글에서 추출한 `track`·`artist` 를 조합해 **검색 → 추가** 흐름 구현

> - 이미 존재하는 트랙은 중복 추가를 방지하도록 로직을 넣었습니다.

---

# # 🚀 3. 실제 운영 팁 – 자동화와 에러 처리

1. **크론잡으로 매주 월요일 자동 실행**

   
```
bash

   0 9 * * 1 /usr/local/bin/ruby /path/to/bot.rb >> /var/log/music_monday_bot.log 2>&1

   
```

   매주 월요일 아침 9시에 자동으로 실행됩니다.

2. **에러 로그 남기기**

   - `begin ... rescue => e` 블록을 활용해 API 호출 실패 시 로그 파일에 기록합니다.

   - Slack webhook 연동으로 실시간 알림을 받을 수도 있습니다.

3. **환경 변수 보안**

   - `.env` 파일에 `SPOTIFY_CLIENT_ID`, `SPOTIFY_CLIENT_SECRET`, `SPOTIFY_PLAYLIST_ID` 를 저장하고, Git에 커밋하지 않도록 `.gitignore` 에 추가합니다.

4. **트랙 매칭 정확도 향상**

   - `RSpotify::Track.search` 는 기본적으로 **전체 텍스트 매칭**을 사용합니다.

   - 필요 시 `limit: 1, market: 'KR'` 옵션을 추가해 한국 시장에 맞는 결과를 우선 반환하도록 할 수 있습니다.

---

# # 📈 4. 기대 효과와 활용 아이디어

| 기대 효과 | 구체적 활용 |

|-----------|-------------|

| **시간 절감** | 수십 개의 댓글을 일일이 복사·붙여넣기 하지 않아도 자동으로 플레이리스트 업데이트 |

| **커뮤니티 활성화** | Music Monday 참여자들이 자신의 곡이 바로 Spotify에 반영되는 모습을 보며 참여 의욕 상승 |

| **데이터 분석** | 수집된 댓글 데이터를 기반으로 **주간 인기 트랙** 차트를 자동 생성 가능 |

| **다른 플랫폼 연동** | Apple Music, YouTube Music 등 다른 스트리밍 서비스 API와 교체하여 멀티플레이리스트 관리 가능 |

---

# # 🎉 결론 – 지금 바로 내 플레이리스트를 자동화해보세요!

Music Monday에서 매주 공유되는 음악을 **수동으로 관리하느라 시간을 낭비**하고 있나요?

위에서 소개한 **Ruby 자동화 스크립트**를 활용하면, 댓글 하나만 달아도 자동으로 **Spotify 플레이리스트 만들기**가 완료됩니다.

1️⃣ 프로젝트를 복제하고(`git clone`)

2️⃣ `bundle install` → `.env` 설정 → `ruby bot.rb` 실행만 하면 끝!

> **행동 유도**

> - 지금 바로 GitHub(https://github.com/mikeydorje/music-monday-spotify-open-source-sync-bot) 에서 코드를 받아 **포크**하고, 나만의 커스텀 플레이리스트를 만들어 보세요.

> - 구현 과정에서 궁금한 점은 댓글이나 **Issue** 로 남겨 주세요. 커뮤니티와 함께 더 풍부한 **Music Monday 활용법**을 만들어갑시다!

음악은 공유하고, 자동화는 스스로에게 맡기세요. 🎶🚀
