노트북에서 아마존 제품 데이터 파이프라인을 작동시키는 것은 한 가지입니다. 프록시, CAPTCHA, 레이아웃 변경, IP 차단 등 실제 운영 환경에서 이를 지속적으로 가동시키는 것은 또 다른 과제입니다. 스크래핑 자체를 해결하더라도 스케줄링, 재시도, 오류 처리, 수집한 데이터를 실제로 확인할 수 있는 방법이 여전히 필요합니다.
여기서 그 모든 것을 구축해 보겠습니다. Bright Data의 웹 스크래핑 API와 Mage AI를 활용해 아마존 제품 및 리뷰 수집, Gemini 감정 분석 실행, 모든 데이터를 PostgreSQL과 Streamlit 대시보드로 전송하는 파이프라인을 연결할 것입니다. 전체 파이프라인은 Docker와 단일 API 키(AI 분석을 위한 선택적 Gemini 키 포함)로 실행됩니다.
요약: 스크래핑 인프라 구축 없이 아마존 제품 인텔리전스확보.
- 제공 내용: 키워드로 상품을 발견하고, Gemini AI로 리뷰를 분석하며, 실시간 Streamlit 대시보드를 제공하는 파이프라인
- 비용: 사용량 기반과금(레코드당 청구,가격 페이지 참조), 전체 처리 시간 5~8분
- 작동 방식: Bright Data가 프록시, CAPTCHA, 파싱 처리; Mage AI가 스케줄링, 재시도, 분기 처리
- 시작 방법:
docker compose up실행 – 모든 코드는 GitHub 저장소에 있음
구축 중인 것: Bright Data + Mage AI 통합 파이프라인
Bright Data의 웹 스크래핑 API가 스크래핑 계층을 처리합니다. 키워드나 상품 URL을 보내면, 이미 파싱된 구조화된 JSON(제목, 가격, 평점, 리뷰, 판매자 정보)을 반환받습니다. 관리할 프록시 인프라나 파싱할 HTML이 필요 없습니다. 아마존이 사이트를 변경하면 Bright Data가 일반적으로 파서를 업데이트합니다. 코드는 그대로 유지됩니다.
Mage AI를 처음 사용하신다면, Airflow와 유사하지만 불필요한 코드(보일러플레이트)가 없는 무료 오픈소스 데이터 파이프라인 도구입니다. 노트북 스타일 편집기에서 Python을 작성하며, 각 블록은 자체 테스트 및 출력 미리보기가 가능한 재사용 가능한 단위입니다. 여기서 중요한 점: Mage AI는 분기 파이프라인(기본적으로 병렬 경로가 있는 DAG(방향성 비순환 그래프))을 지원합니다. 또한 블록별 재시도 로직이 내장되어 있으며, UI에서 변경 가능한 파이프라인 변수를 제공하므로 코드 수정이 필요 없습니다.
파이프라인은 두 개의 병렬 분기에 걸쳐 6개의 블록으로 구성됩니다:

Mage AI의 분기형 파이프라인. 왼쪽 분기는 제품을 즉시 내보내고, 오른쪽 분기는 리뷰를 수집 및 분석합니다.
이 파이프라인은 Bright Data를 통해 키워드로 제품을 탐색하고, 가격대 및 평점을 보강한 후 분기합니다. 한 경로는 제품을 즉시 PostgreSQL로 내보내고, 다른 경로는 상위 제품에 대한 리뷰를 수집하여 Gemini를 통해 감정 분석을 수행한 후 이를 함께 내보냅니다.
여기서 Mage AI를 사용하는 이유는 파이프라인이 분기되기 때문입니다(선형 스크립트가 아닌 DAG 구조로, 리뷰 수집이 실패해도 제품 데이터는 이미 안전하게 저장됨). 하지만 Bright Data API 호출은 단순한 HTTP 요청이므로 Airflow, Prefect, Dagster 또는 일반 Python 스크립트에서도 동일하게 작동합니다.
빠른 시작
저장소를 복제하고 API 키를 추가한 후 실행하세요. 모든 작업은 Docker에서 실행되므로 로컬에 Python을 설치할 필요가 없습니다.
필수 사항
다음이 필요합니다:
- Docker 및 Docker Compose (Docker 설치하기)
- API 토큰이 있는 Bright Data 계정
- Google Gemini API 키 (제한이 있는 무료 티어 이용 가능; 아래 Gemini 섹션 참조)
- Python 및 Docker에 대한 기본적인 이해. 스크래핑 경험은 필요하지 않습니다. 그게 핵심입니다.
1단계: 복제 및 구성
저장소를 복제하고 구성 파일을 생성하세요:
git clone https://github.com/triposat/mage-brightdata-demo.git
cd mage-brightdata-demo
cp .env.example .env
이제 .env 파일에 API 키를 추가하세요:
BRIGHT_DATA_API_TOKEN=your_api_token_here
GEMINI_API_KEY=your_gemini_api_key_here
Bright Data API 토큰 획득 방법: [Bright Data](https://brightdata.com)에서 가입하세요(무료 체험, 신용카드 불필요). 계정 설정으로 이동하여 API 키를 생성합니다. 이 파이프라인은 두 개의 웹 스크래핑 API 스크레이퍼(제품 검색용, 리뷰용)를 사용하며, 레코드당 과금되는 종량제 방식입니다. 현재 요금은 가격 페이지에서 확인하세요.
Gemini API 키 획득 방법: Google AI Studio에 접속하여 로그인 후 ‘API 키 생성’을 클릭하세요. 무료 이용권으로 신용카드 없이 사용 가능합니다. 해당 키 없이도 파이프라인은 작동하며, 평점 기반 감정 분석으로 대체됩니다.
2단계: 서비스 시작
docker compose up -d
키 로드 상태를 재확인하려면:
docker compose exec mage python -c "import os; t=os.getenv('BRIGHT_DATA_API_TOKEN',''); assert t and t!='your_api_token_here', 'Token not set'; print('OK')"
이 명령은 세 개의 컨테이너를 시작합니다:
| 서비스 | URL | 목적 |
|---|---|---|
| Mage AI | http://localhost:6789 |
파이프라인 편집기 및 스케줄러 |
| 스트림릿 대시보드 | http://localhost:8501 |
실시간 데이터 시각화 + 채팅 |
| PostgreSQL | localhost:5432 |
데이터 저장 |
첫 실행 시 이미지 가져오기 및 종속성 설치가 진행되며, 연결 상태에 따라 약 3~5분 정도 소요됩니다. docker compose stop/start로 재시작하는 데는 몇 초가 걸리며, docker compose down/up은 pip 패키지를 재설치하므로 약 1분 정도 소요됩니다.

세 서비스 모두 실행 중
3단계: 파이프라인 실행
http://localhost:6789를 열고 Pipelines로 이동한 후 amazon_product_intelligence를 클릭하세요. 그런 다음 왼쪽 사이드바에서 Triggers를 클릭하고 Run@once를 누르세요.

Mage AI 대시보드
파이프라인 전체 실행 시간은 약 5~8분 소요됩니다. 대부분의 시간은 Bright Data API가 Amazon에서 데이터를 수집하는 데 걸리며, 데이터 보강 및 데이터베이스 내보내기는 몇 초, Gemini 분석은 배치 크기와 속도 제한에 따라 달라집니다. 6개 블록이 모두 녹색으로 변하면 http://localhost:8501에서 대시보드를 확인하세요.

6개 블록 모두 녹색. 파이프라인 완료
Mage AI 데이터 파이프라인 작동 방식
코드를 단계별로 살펴보겠습니다. Bright Data 통합과 Gemini 분석에 중점을 둘 것입니다.
Bright Data의 웹 스크래핑 API를 Mage AI에 연결하기
Amazon Products API에 키워드를 전송하면 구조화된 데이터를 반환받습니다. Bright Data는 이를 “Discovery” 스크레이퍼라 부르며, 키워드나 카테고리로 제품을 찾습니다. 리뷰 블록은 별도의 리뷰 스크레이퍼를 사용하며, 제품 URL을 입력으로 받습니다. API는 비동기 패턴을 사용합니다: 수집을 트리거하고, 스냅샷 ID를 받은 후 결과가 준비될 때까지 폴링합니다.
DATASET_ID = "gd_l7q7dkf244hwjntr0" # Amazon Products (현재 ID는 저장소 참조)
API_BASE = "https://api.brightdata.com/datasets/v3"
# 수집 트리거 (/scrape 사용 – 1분 초과 시 자동으로 비동기 전환; 프로덕션 환경에서는 /trigger 고려)
response = requests.post(
f"{API_BASE}/scrape",
headers={"Authorization": f"Bearer {api_token}",
"Content-Type": "application/json"},
params={"dataset_id": DATASET_ID,
"type": "discover_new",
"discover_by": "keyword",
"limit_per_input": kwargs.get('limit_per_keyword', 5)},
json={"input": [{"keyword": kw} for kw in keywords]})
snapshot_id = response.json()["snapshot_id"]
# 결과가 준비될 때까지 폴링
data = requests.get(
f"{API_BASE}/snapshot/{snapshot_id}",
headers={"Authorization": f"Bearer {api_token}"},
params={"format": "json"}
).json()
Bright Data가 반환한 내용은 다음과 같습니다:
{
"title": "BESIGN LS03 알루미늄 노트북 스탠드",
"asin": "B07YFY5MM8", // 아마존 고유 상품 ID
"url": "https://www.amazon.com/dp/B07YFY5MM8",
"initial_price": 19.99,
"final_price": 16.99,
"currency": "USD",
"rating": 4.8,
"reviews_count": 22776,
"seller_name": "BESIGN",
"categories": ["Office Products", "Office & School Supplies"],
"image_url": "https://m.media-amazon.com/images/I/..."
}
kwargs.get('limit_per_keyword', 5) 는 Mage AI 파이프라인 변수에서 가져오므로 UI에서 조정할 수 있습니다.
두 번째 API 호출 추가: 아마존 리뷰 수집
리뷰 수집기는 상류 블록에서 처리된 제품을 가져와 리뷰 수로 정렬합니다. 상위 N개를 선택하여 해당 아마존 URL을 두 번째 Bright Data API에 전달합니다:
REVIEWS_DATASET_ID = "gd_le8e811kzy4ggddlq" # Amazon 리뷰
# 상류에서 가져온 상위 제품 (Mage AI에서 자동 전달)
top_products = data.sort_values('reviews_count', ascending=False).head(top_n)
product_urls = top_products['url'].dropna().tolist()
# URL을 리뷰 API에 전송 (동일한 /scrape 패턴)
response = requests.post(
f"{API_BASE}/scrape",
headers={"Authorization": f"Bearer {api_token}",
"Content-Type": "application/json"},
params={"dataset_id": REVIEWS_DATASET_ID},
json={"input": [{"url": url} for url in product_urls]})
# 제품과 동일한 비동기 폴링 패턴...
두 API 블록 모두 데모의 metadata.yaml에 재시도 구성이 있습니다: 호출이 실패하면 파이프라인이 30초 간격으로 3회 재시도합니다. 이 데모의 각 블록에는 실행 후 실행되는 @test 함수도 있습니다. 이 함수가 실패하면 하류 블록이 실행되지 않아 불량 데이터가 데이터베이스에 저장되지 않습니다.
AI 분석 추가: Gemini 감정 분석 파이프라인 블록
키워드 매칭(예: “싸지 않지만 품질이 훌륭해!”를 “싸다”라는 단어 때문에 부정적으로 판단) 대신 Gemini를 활용해 문맥을 이해합니다. 이 블록은 무료 티어 한도 내에서 운영되도록 3개 모델을 순환하며 리뷰를 배치 처리합니다:
GEMINI_MODELS = ["gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-2.5-pro"] # 최신 모델은 저장소 참조
prompt = f"""리뷰를 분석하세요. 각 리뷰에 대해 다음 JSON을 반환합니다:
- "sentiment": "Positive", "Neutral", or "Negative"
- "issues": specific product issues mentioned
- "themes": 1-3 topic tags
- "summary": one-sentence summary
Return ONLY JSON.nn{reviews_text}"""
for model in models:
try:
response = client.models.generate_content(model=model, contents=prompt)
return json.loads(response.text.strip())
except Exception as e:
if '429' in str(e):
continue # 속도 제한 발생 -- 다음 모델로 전환
회전은 flash-lite(가장 저렴하고 빠름)로 시작하여, flash로 대체된 후 pro로 대체됩니다. 세 가지 모두 소진된 경우, 리뷰는 등급 기반 감정 분석을 대신 받습니다. 무료 계층 할당량은 주기적으로 변경되지만, 세 모델 순환 방식이 대부분의 속도 제한을 자동으로 처리합니다. Gemini는 감정 분석, 구체적 문제점(“불규칙한 표면에서 흔들림” 또는 “경첩이 시간이 지남에 따라 느슨해짐” 등), 리뷰당 1~3개의 주제 태그를 반환합니다. 각 리뷰에는 한 문장 요약도 함께 제공됩니다.
나머지 블록들(가격 등급 및 할인 계산용 트랜스포머, 업서트 로직이 적용된 두 개의 데이터베이스 익스포터)은 직관적입니다. 자세히 살펴보고 싶으시다면 GitHub 저장소에서 확인하실 수 있습니다.
파이프라인 출력: 결과 및 Streamlit 대시보드
기본 키워드 “노트북 스탠드”와 “무선 이어버드”로 한 번 실행한 파이프라인 결과입니다. 아마존의 현재 상품 목록에 따라 결과가 달라질 수 있습니다.
이번 실행 결과: 10개 제품 발견, Gemini로 20개 리뷰 분석. 이어버드 리뷰에서는 4.3점 평균 평점에는 나타나지 않는 불만 사항이 드러났습니다. “음질”, “배터리 수명”, “연결성”과 같은 주제와 구체적인 문제점이 포함되었습니다.
파이프라인이 원시 데이터에 추가하는 요소:
| 필드 | 예시 | 추가한 항목 |
|---|---|---|
최저가 |
$16.99 | 변압기 (계산됨) |
할인율 |
15.0% | 변압기 (계산됨) |
가격대 |
예산 (<$25) | Transformer (enriched) |
rating_category |
우수 (4.5-5) | 트랜스포머 (강화) |
감정 |
부정적 | Gemini AI |
문제 |
[“블루투스 연결이 자주 끊어짐”] | Gemini AI |
테마 |
[“연결성”, “배터리 수명”] | Gemini AI |
ai_summary |
“8시간 지속된다는 주장에도 불구하고 배터리는 2시간밖에 가지 않는다” | Gemini AI |
실제 적용 예시 – 풍부한 필드가 표시된 10개 제품 전체:

강화된 필드가 적용된 10개 제품 전체. 두 가지 다른 제품 카테고리의 가격대, 평점, 리뷰 수
대시보드
Streamlit 대시보드를 보려면 http://localhost:8501를 열어주세요. 사이드바의 ‘데이터 새로 고침’을 클릭하면 PostgreSQL에서 최신 결과를 가져옵니다.

제품 인텔리전스 대시보드 — 가격 비교, 가격대, 필터링 컨트롤
사이드바를 통해 가격대, 평점 또는 감성으로 필터링할 수 있습니다. 감성 보기는 모든 리뷰의 긍정/부정 비율을 표시하며, Gemini가 추출한 구체적인 문제점(“블루투스 연결 끊김”, “경첩이 시간이 지남에 따라 느슨해짐”)을 보여줍니다. 별점 평가만으로는 파악하기 어려운 세부 사항입니다.

감정 분석 및 AI가 탐지한 제품 문제점. 키워드 매칭이 아닌 Gemini가 추출한 실제 불만 사항
대시보드에는 ‘데이터와 대화하기’ 기능도 있습니다. 평범한 영어로 질문하면 Gemini가 실제 수집된 데이터를 맥락으로 활용해 답변합니다. 더 많은 제품이 포함된 별도 실행 예시:

스크랩한 데이터에 대해 평이한 영어로 질문하세요
파이프라인 확장
데모는 두 개의 키워드와 10개의 제품으로 실행됩니다.
파이프라인 변수
Mage AI UI 또는 metadata.yaml에서 모두 구성 가능:
| 변수 | 제어 대상 | 기본값 |
|---|---|---|
키워드 |
Amazon 검색어 | ["노트북 스탠드", "무선 이어버드"] |
키워드당 제한 |
Bright Data의 키워드별 제품 | 5 |
상위 n개 제품 |
리뷰가 수집된 상위 제품 수 | 2 |
reviews_per_product |
제품당 최대 리뷰 수 | 10 |
정렬 기준 |
리뷰 선정을 위한 제품 순위 지정 방법 | reviews_count |
키워드를 ["휴대폰 케이스", "USB-C 허브"] 로 변경하면 완전히 다른 데이터 세트를 얻을 수 있습니다. 코드 변경은 필요하지 않습니다.

Mage AI UI의 파이프라인 변수
스케줄링
이 작업을 일정대로 실행하려면 Mage AI 사이드바의 ‘트리거(Triggers) ‘로 이동하여 ‘+ 새 트리거( New trigger)’를 클릭하고 ‘일정( Schedule)’을 선택한 후 빈도(일회, 시간별, 일별, 주별, 월별 또는 사용자 지정 cron)를 선택하세요.
매 실행 시 ASIN별로 데이터를 업서트(업데이트)합니다. 즉, 동일한 제품에 대한 데이터를 대체하면서 다른 키워드의 결과는 보존합니다. 타임스탬프가 포함된 CSV 백업도 저장되어 과거 데이터와 비교할 수 있습니다.
데이터를 몇 차례 실행한 후에는 PostgreSQL을 직접 쿼리하여 별점 평가에서 누락된 불만 사항을 확인할 수 있습니다:
-- 부정적 감정이 높은 상품 찾기
SELECT asin, product_name,
AVG(CASE WHEN sentiment = 'Negative' THEN 1 ELSE 0 END) as negative_rate
FROM amazon_reviews
GROUP BY asin, product_name
HAVING AVG(CASE WHEN sentiment = 'Negative' THEN 1 ELSE 0 END) > 0.2;
검색 키워드 대신 자체 제품을 모니터링하려면 type, discover_by, limit_per_input 매개변수를 제거하고 제품 URL을 [{"url": "https://www.amazon.com/dp/YOUR_ASIN"}]. 형식으로 직접 전달하세요.
대시보드와 알림을 직접 구축하지 않고도 사용하려면, Bright Insights가 소매 데이터에 대한 추가 설정 없이 이를 제공합니다.
확장성. 이 데모는 단일 머신의 Docker에서 실행되지만, Mage AI는 프로덕션 환경을 위한 Kubernetes 실행기를 지원하며 Bright Data의 API는 자체적으로 동시성 처리(배치 요청에 대한 속도 제한 포함)를 수행합니다. 확장성은 데이터 수집 코드를 변경하는 것이 아니라 Mage AI 용량을 추가하는 것입니다.
다른 Bright Data 스크레이퍼 통합
동일한 파이프라인 패턴은 100개 이상의 웹사이트용 Bright Data 사전 제작 스크레이퍼와 호환됩니다. 예를 들어 Google Maps Scraper, LinkedIn Scraper, Crunchbase Scraper 저장소를 참조하세요. Amazon에서 다른 플랫폼으로 전환하려면 데이터 로더 블록 내 DATASET_ID를 교체하고 새 스크레이퍼 스키마에 맞게 입력 매개변수를 조정하세요.
적절한 ID와 입력 필드를 찾으려면 대시보드의 스크레이퍼 라이브러리를 탐색하거나 /datasets/list 엔드포인트를 호출하세요. 대시보드의 API 요청 빌더는 각 스크레이퍼가 정확히 무엇을 요구하는지 보여줍니다. Gemini 분석 및 파이프라인 구조는 그대로 유지되며, 새 스크레이퍼의 응답 필드가 Amazon과 다른 경우 보강 및 내보내기 블록에서 열 이름 조정이 필요할 수 있습니다.
문제 해결
설정 또는 실행 중 문제가 발생할 경우 가장 흔한 해결 방법은 다음과 같습니다:
- 포트 6789 또는 8501이 이미 사용 중입니다. 다른 서비스가 포트를 점유하고 있습니다. 해당 서비스를 중지하거나
docker-compose.yml을편집하여 포트를 재매핑하세요(예:6789:6789를6790:6789로변경). - Bright Data API에서 401 Unauthorized 오류가 발생합니다. API 토큰이 누락되었거나 형식이 잘못되었습니다. 계정 설정으로 이동하여 전체 토큰을 복사하고
.env파일에 토큰 뒤에 공백이 없는지 확인하세요. 토큰은 긴 16진수 문자열(64자)입니다. 복사한 내용이 짧거나 UUID처럼 대시(-)가 포함된 경우 잘못된 필드를 복사했을 수 있습니다. - 모든 모델에서 Gemini가 429(속도 제한)를 반환합니다. 무료 티어는 주기적으로 변경되는 분당 제한이 있습니다. 파이프라인은 세 모델을 순환하여 처리하지만, 세 모델 모두 소진되면 리뷰가 평점 기반 감정 분석으로 전환됩니다. 이를 방지하려면: 파이프라인 변수에서
reviews_per_product를줄이거나, Gemini 블록 내 배치 사이에time.sleep(60)을 추가하거나, Google AI 프로젝트에서 요금제를 활성화하여 할당량을 늘리십시오. 현재 할당량은 Google의 속도 제한 페이지를 참조하세요. - 파이프라인 블록이 빨간색(실패)으로 표시됩니다. 파이프라인의 로그 페이지(왼쪽 사이드바에서 접근 가능)로 이동하여 오류를 확인하세요. 블록 이름과 로그 수준으로 필터링할 수 있습니다. 일반적인 원인: 만료된 API 토큰, Bright Data API의 네트워크 타임아웃(블록 내
max_wait_seconds증가), 유효하지 않은 JSON 형식의 Gemini 응답(블록의@test함수가 이를 감지함). - Apple Silicon에서 Docker Compose가 느리거나 실패합니다. Mage AI 이미지는 멀티 아키텍처로 ARM에서도 작동하지만 초기 풀 시간이 더 오래 걸릴 수 있습니다. 메모리 오류로 빌드가 실패할 경우, 설정 → 리소스에서 Docker Desktop의 메모리 할당량을 최소 4GB 이상으로 늘리세요.
다음 단계
이제 Amazon 제품 데이터를 수집하고, AI 기반 리뷰 분석을 실행하며, 모든 것을 PostgreSQL에 저장하는 파이프라인이 작동합니다. 프록시, 파서, 만지기도 두려운 cron 작업이 필요 없습니다.
이 과정을 따라왔다면, 여러분만의 것으로 만들어 보세요. metadata.yaml 내 키워드 목록을 다른 제품 카테고리로 교체하기만 하면 됩니다. 코드 변경은 필요 없습니다. 더 깊은 커스터마이징을 원한다면 특정 ASIN을 지정하거나 완전히 다른 Bright Data 스크레이퍼로 전환하세요.
처음이신가요? [무료 Bright Data 체험판 시작하기]()(카드 정보 불필요), 데모 저장소를 복제하고 docker compose up을 실행하세요.
자주 묻는 질문
이 설정과 관련된 자주 묻는 질문:
Python으로 아마존 상품 데이터를 어떻게 스크래핑하나요?
requests와 BeautifulSoup을 사용해 자체 스크레이퍼를 구축할 수 있습니다(아마존 레이아웃 변경 시 작동 중단). 또는 단일 API 호출로 구조화된 JSON을 반환하는 Bright Data의 아마존 스크레이퍼를 사용하세요. 독립형 Python 예제는 Amazon Scraper 저장소를 참조하세요. 심층 분석은 Bright Data의 완전한 아마존 스크래핑 가이드를 참조하세요.
Bright Data로 아마존 스크래핑 비용은 얼마인가요?
웹 스크래핑 API는 사용량 기반 요금제를 적용하며, 수집된 레코드 1,000건당 과금됩니다. Gemini의 무료 티어는 AI 분석을 포함합니다. 신규 계정은 무료 체험을 이용할 수 있습니다. 현재 요금은 가격 페이지에서 확인하세요.
이 파이프라인으로 Walmart, eBay 또는 기타 전자상거래 사이트도 스크래핑할 수 있나요?
데이터 로더 블록의 DATASET_ID를 교체하고 새 스크레이퍼의 스키마에 맞게 입력 매개변수를 조정하세요. Gemini 분석 및 파이프라인 구조는 그대로 유지되며, 인리치먼트 및 내보내기 블록은 열명 조정이 필요할 수 있습니다.
아마존이 페이지 레이아웃을 변경하면 어떻게 되나요?
사용자 측에서는 아무런 조치가 필요하지 않습니다. Bright Data가 파서를 유지 관리하므로 Amazon이 HTML을 업데이트해도 API 호출 및 응답 형식은 일반적으로 동일하게 유지됩니다.
Gemini가 꼭 필요한가요? 다른 LLM을 사용할 수 있나요?
파이프라인은 Gemini 없이도 작동하며, 평점 기반 감정 분석으로 대체됩니다. 다른 LLM(OpenAI, Claude, Llama)으로 교체하려면 Gemini 블록 내 analyze_reviews 함수를 수정하세요. 프롬프트 형식은 동일하게 유지되며, API 호출만 변경하면 됩니다.