KR-05 MuleRun 운영 사례 · 올리브영 K-Beauty 트렌드 스캐너
마지막 갱신: 2026-04-29 06:00 KST

올리브영 K-Beauty 트렌드 스캐너

대상 사용자: K-뷰티 상품 기획자 · 일간 자동화 수집 → 분석 → 아카이브 파이프라인
수집 파이프라인정상 가동 중
Drive 동기화04-29 06:12 완료
리뷰 분석429건 대기
랭킹 변동 알림Slack 연동
재시도 큐0건
01오늘의 올리브영 트렌드 대시보드
1,247
추적 중인 SKU 수
▲ 38 (오늘 신규 등록)
23.4%
스킨케어 카테고리 점유율
▲ 1.2%p (전주 대비)
₩18,900
평균 판매가 (상위 100)
▼ ₩400 (전주 대비)
6
급상승 카테고리
선크림, 토너패드, 립틴트…
올리브영 카테고리별 랭킹 상위 — 2026-04-29 기준 예시 데이터
순위 변동 상품명 브랜드 카테고리 가격 리뷰 수 평점 핵심 성분 주요 리뷰 키워드 인플루언서 7일 추이
1 ▲3 라운드랩 자작나무 수분 선크림 SPF50+ 라운드랩 선케어 ₩16,900 34,210 4.8 자작나무수액 나이아신아마이드 촉촉 백탁없음 데일리 12명
2 ▼1 넘버즈인 3번 쌀 토너패드 넘버즈인 스킨케어 ₩14,500 28,470 4.7 쌀추출물 판테놀 각질제거 순함 가성비 9명
3 NEW 롬앤 쥬시 래스팅 틴트 #25 베어그레이프 롬앤 립메이크업 ₩9,800 15,890 4.6 히알루론산 발색 지속력 MLBB 21명
4 ▲7 토리든 다이브인 세럼 토리든 스킨케어 ₩22,000 41,300 4.8 저분자히알루론산 세라마이드 보습 흡수빠름 7명
5 ▲2 에스트라 아토배리어365 크림 에스트라 크림 ₩28,000 19,650 4.7 MLE크림 마데카소사이드 저자극 장벽강화 5명
6 ▼2 이니스프리 레티놀 시카 흔적 앰플 이니스프리 앰플 ₩24,000 12,880 4.5 레티놀 시카 흔적관리 야간 8명
7 NEW 메디힐 N.M.F 아쿠아링 앰플 마스크 메디힐 마스크팩 ₩12,000 8,740 4.6 NMF 히알루론산 밀착 촉촉 가성비 4명
8 ▲1 닥터지 레드 블레미쉬 클리어 수딩 크림 닥터지 크림 ₩19,900 22,110 4.6 피토스핑고신 적양배추 진정 트러블 6명
카테고리별 랭킹 진입 점유율
주간 집계
선케어
78%
234건
토너/패드
64%
192건
세럼/앰플
57%
171건
립메이크업
48%
144건
크림/로션
41%
123건
마스크팩
33%
99건
클렌징
25%
75건
급상승 성분 키워드 (리뷰 언급 빈도)
일간 분석
나이아신아마이드
4,280
▲12%
히알루론산
3,640
▲8%
레티놀
2,910
▲24%
시카/마데카
2,570
▲6%
쌀추출물
2,210
▲31%
프로폴리스
1,760
▼3%
비타민C
1,510
▲9%
가격대별 분포 (상위 100 SKU)
~₩10,000
22%
22건
₩10K~20K
41%
41건
₩20K~30K
25%
25건
₩30K~50K
9%
9건
₩50K+
3%
3건
인플루언서 언급 추적 (최근 7일)
인플루언서플랫폼팔로워언급 상품언급일
이사배YouTube2.4M라운드랩 선크림04-28
레오제이YouTube1.8M넘버즈인 토너패드04-27
디렉터파이YouTube1.2M토리든 세럼04-27
포니Instagram7.1M롬앤 틴트 #2504-26
회사원AYouTube890K에스트라 크림04-25
02해결하려는 문제
K-뷰티 상품 기획자의 현실
  • · 올리브영 랭킹은 실시간 변동하지만, 수동 확인은 하루 1~2회가 한계
  • · 리뷰 키워드와 성분 트렌드를 교차 분석하려면 수십 개 페이지를 직접 열어야 함
  • · 인플루언서 언급이 랭킹에 미치는 영향을 사후적으로만 파악 가능
  • · 경쟁사 가격 변동 모니터링에 하루 평균 2시간 이상 소요
  • · 카테고리별 기회 영역(고성장·저경쟁) 판별이 감에 의존
  • · 과거 데이터 아카이브가 없어 시즌별 비교가 불가능
MuleRun 트렌드 스캐너가 제공하는 해결
  • · MuleRun Computer가 매일 06:00 KST에 전 카테고리 랭킹을 자동 수집
  • · 리뷰 키워드 NLP 분석 → 성분·효능·감성 태그 자동 분류
  • · YouTube/Instagram 인플루언서 언급을 수집하여 상품 ID와 매칭
  • · 가격 변동 ±5% 이상 시 Slack 알림 자동 발송
  • · 카테고리 기회 점수(성장률 × 역경쟁도) 자동 산출
  • · MuleRun Drive에 날짜별 JSON/CSV 자동 아카이브
03MuleRun Computer 일간 자동화 워크플로
일일 파이프라인 (cron: 매일 06:00 KST)
자동화 가동
1
올리브영 랭킹 페이지 크롤링
Playwright 헤드리스 브라우저로 카테고리 14개의 랭킹 페이지 순회. 상품명, 가격, 리뷰 수, 평점, 순위를 파싱. User-Agent 로테이션 및 요청 간 3~7초 랜덤 딜레이 적용.
소요: ~12분 · 대상: 약 1,200 SKU
2
리뷰 상세 수집 및 키워드 추출
랭킹 상위 100개 상품의 최신 리뷰 50건씩 수집. 형태소 분석(KoNLPy) → 성분 키워드, 감성(긍정/부정/중립), 효능 태그 자동 분류. 중복 리뷰 해시로 dedup 처리.
소요: ~18분 · 리뷰: 약 5,000건/일
3
인플루언서 언급 스캔
YouTube Data API로 K-뷰티 채널 50개의 최근 영상 제목·설명 검색. Instagram 공개 프로필에서 올리브영 관련 포스트 감지. 상품 ID와 자동 매칭 후 언급 횟수 집계.
소요: ~8분 · API 호출: ~200회/일
4
성분 데이터 크로스 레퍼런스
수집된 상품의 전성분 표를 파싱하여 표준화된 성분 DB(INCI 기반)와 매칭. EWG 등급, 기능성 분류, 트렌드 성분 여부를 자동 태깅.
소요: ~5분
5
카테고리 기회 점수 산출
카테고리별 (7일 리뷰 증가율 × 랭킹 변동폭) ÷ (상위 5개 브랜드 점유율) = 기회 점수. 점수 상위 카테고리를 "급상승 카테고리"로 마킹.
소요: ~2분
6
MuleRun Drive 아카이브 + 알림
JSON/CSV 파일을 /4guo/kr/kr-05/2026-04-29/ 경로에 업로드. 전일 대비 주요 변동 사항을 요약하여 Slack #kbeauty-trends 채널에 발송. 가격 변동 ±5% 이상 상품은 별도 알림.
소요: ~1분
04수집·분석 단계별 코드 예시
랭킹 수집 (Playwright)
예시
# 예시: 올리브영 카테고리 랭킹 수집 import asyncio from playwright.async_api import async_playwright import random, json CATEGORIES = [ "스킨케어", "선케어", "립메이크업", "마스크팩", "클렌징", "바디케어", ] async def scrape_ranking(category): async with async_playwright() as p: browser = await p.chromium.launch() page = await browser.new_page() await page.set_extra_http_headers({ "User-Agent": random.choice(UA_LIST) }) url = build_category_url(category) await page.goto(url, timeout=30000) await asyncio.sleep(random.uniform(3, 7)) items = await page.query_selector_all( ".product-item" ) results = [] for item in items: results.append({ "name": await item.inner_text(".name"), "price": parse_price(await item.inner_text(".price")), "rating": float(await item.inner_text(".rating")), "reviews": parse_int(await item.inner_text(".review-count")), }) await browser.close() return results
리뷰 키워드 NLP 분석
예시
# 예시: 리뷰 형태소 분석 및 키워드 추출 from konlpy.tag import Okt from collections import Counter okt = Okt() INGREDIENT_DICT = { "나이아신아마이드", "히알루론산", "레티놀", "세라마이드", "마데카소사이드", "판테놀", } def analyze_reviews(reviews: list[str]): keywords = Counter() sentiments = {"pos": 0, "neg": 0, "neu": 0} for text in reviews: nouns = okt.nouns(text) for n in nouns: if len(n) >= 2: keywords[n] += 1 score = sentiment_score(text) if score > 0.6: sentiments["pos"] += 1 elif score < 0.4: sentiments["neg"] += 1 else: sentiments["neu"] += 1 ingredients = { k: v for k, v in keywords.items() if k in INGREDIENT_DICT } return keywords.most_common(20), ingredients, sentiments
인플루언서 언급 수집
예시
# 예시: YouTube Data API로 언급 탐지 from googleapiclient.discovery import build yt = build("youtube", "v3", developerKey=YT_KEY) CHANNELS = [ "UCxxxxxx", # 이사배 "UCyyyyyy", # 레오제이 "UCzzzzzz", # 디렉터파이 ] def scan_mentions(channels, product_names): mentions = [] for ch_id in channels: resp = yt.search().list( channelId=ch_id, q="올리브영", publishedAfter=yesterday_rfc3339(), type="video", part="snippet", maxResults=10, ).execute() for item in resp["items"]: title = item["snippet"]["title"] matched = match_products( title, product_names ) if matched: mentions.append({ "channel": ch_id, "video": item["id"]["videoId"], "products": matched, }) return mentions
카테고리 기회 점수 계산
예시
# 예시: 카테고리 기회 점수 산출 import pandas as pd def calc_opportunity(df: pd.DataFrame): """ 기회 점수 = (7일 리뷰 증가율 × 랭킹 변동폭) ÷ 상위 5개 브랜드 점유율 """ scores = [] for cat in df["category"].unique(): sub = df[df["category"] == cat] review_growth = ( sub["reviews_7d"].sum() / sub["reviews_14d"].sum() ) - 1.0 rank_volatility = sub["rank_change"].abs().mean() top5_share = ( sub.nlargest(5, "reviews_7d")["reviews_7d"].sum() / sub["reviews_7d"].sum() ) score = ( review_growth * rank_volatility ) / max(top5_share, 0.01) scores.append({ "category": cat, "opportunity_score": round(score, 3), "review_growth": f"{review_growth:.1%}", "top5_concentration": f"{top5_share:.1%}", }) return sorted( scores, key=lambda x: x["opportunity_score"], reverse=True )
05재시도·속도 제한·데이터 신선도 관리
재시도 정책 (Retry)
오류 유형재시도대기
HTTP 429 (Rate Limit)최대 5회지수 백오프 (2ⁿ초)
HTTP 5xx최대 3회10초 고정
타임아웃 (30초)최대 3회15초 고정
파싱 오류1회페이지 리로드 후 재시도
연속 실패 10회중단Slack 긴급 알림
속도 제한 (Rate Limit)
대상제한조치
올리브영 웹요청 간 3~7초랜덤 딜레이
YouTube API10,000 유닛/일할당량 80% 시 경고
Instagram200 요청/시간프록시 로테이션
MuleRun Drive제한 없음배치 업로드
데이터 신선도 검증
검증 항목기준실패 시
랭킹 데이터 나이24시간 이내재수집 트리거
리뷰 중복률5% 미만해시 기반 dedup
가격 변동폭±50% 이상 이상치수동 검증 대기열
수집 SKU 수전일 대비 ±20%구조 변경 감지 알림
구조 변경 대응: 올리브영 웹 페이지의 HTML 구조가 변경되면 CSS 셀렉터 기반 파싱이 실패합니다. 파싱 실패율이 30% 이상이면 자동으로 수집을 중단하고, MuleRun Computer 세션을 통해 셀렉터 업데이트를 요청합니다.
06MuleRun Drive 아카이브 구조
디렉터리 구조
/4guo/kr/kr-05/ ├── 2026-04-29/ │ ├── ranking_skincare.json │ ├── ranking_suncare.json │ ├── ranking_lip.json │ ├── ranking_maskpack.json │ ├── ranking_all_categories.csv │ ├── reviews_top100.json │ ├── review_keywords.json │ ├── ingredients_analysis.json │ ├── influencer_mentions.json │ ├── price_changes.csv │ ├── category_opportunity.json │ └── daily_summary.md ├── 2026-04-28/ │ └── … (동일 구조) ├── weekly/ │ ├── 2026-W17_trend_report.json │ └── 2026-W17_category_shift.csv └── monthly/ ├── 2026-03_monthly_summary.json └── 2026-03_top_movers.csv
아카이브 정책
정책설정
일간 원본 보관90일 (이후 주간 집계만 유지)
주간 리포트1년 보관
월간 요약무기한 보관
파일 형식JSON (원본) + CSV (분석용)
압축30일 이상 데이터 gzip 자동 압축
파일 네이밍{유형}_{카테고리}.{확장자}
일간 저장 용량평균 ~12 MB
Drive 동기화수집 완료 후 즉시 업로드
버전 관리: 동일 날짜에 재수집이 발생하면 파일명에 _v2 접미사를 추가하여 덮어쓰기를 방지합니다. 원본 데이터의 무결성이 항상 보장됩니다.
07보안 및 규정 준수
인증·자격 증명 관리
API 키 노출 금지: YouTube API 키, 프록시 인증 정보 등은 MuleRun Computer 환경 변수에만 저장합니다. 코드, 로그, 아카이브 파일에 절대 포함하지 않습니다.
  • · API 키는 MuleRun Computer의 환경 변수($YT_API_KEY, $PROXY_AUTH)에 저장
  • · Slack Webhook URL은 환경 변수 $SLACK_WEBHOOK으로 관리
  • · 90일마다 API 키 자동 로테이션 알림
  • · 모든 외부 API 호출은 TLS 1.3 이상 사용
  • · MuleRun Drive 접근은 세션 기반 인증 적용
데이터 수집 윤리 및 규정
  • · robots.txt 준수: 수집 전 대상 사이트의 robots.txt 확인
  • · 요청 빈도 제한: 서버 부하를 유발하지 않는 수준으로 제한
  • · 개인정보 비수집: 리뷰어 ID, 프로필 사진 등 개인 식별 정보 수집 안 함
  • · 리뷰 텍스트: 키워드 통계만 저장, 원문은 분석 후 폐기
  • · 저작권: 수집 데이터는 내부 분석 목적으로만 사용
  • · KISA 개인정보 보호 가이드라인 준수
  • · 데이터 보관 기간 만료 시 자동 삭제 스크립트 적용
08성과 지표 (도입 30일 기준)
87%
수동 리서치 시간 절감
일 2시간 → 15분
3.2일
트렌드 감지 선행 시간
수동 대비 평균
1,247
일간 추적 SKU 수
14개 카테고리
99.2%
파이프라인 가동률
30일 중 장애 0.25일
주간 파이프라인 성공률 추이
100% 95% 90% W1399.5% W1499.1% W1598.0% W16100% W1799.5%
도입 전후 비교
항목도입 전도입 후변화
일간 리서치 시간~2시간~15분-87%
추적 카테고리 수3개 (수동)14개 (전체)+367%
트렌드 감지 시점사후 (3~5일)당일~익일3.2일 선행
데이터 아카이브없음일간/주간/월간시계열 확보
인플루언서 추적수동 검색자동 50채널자동화
가격 변동 대응1~2일 지연실시간 알림즉시 대응
카테고리 기회 분석 — 2026년 4월 4주차 예시 데이터
카테고리 기회 점수 7일 리뷰 증가율 랭킹 변동폭 상위5 점유율 평균 가격 주요 트렌드 성분 판단
선케어 0.847 +18.3% 4.2 38% ₩17,200 나이아신아마이드 톤업 고기회
토너/패드 0.723 +14.7% 3.8 42% ₩14,800 PHA 고기회
립메이크업 0.612 +22.1% 5.1 55% ₩11,400 글로우 MLBB 성장
마스크팩 0.534 +11.2% 2.9 35% ₩8,600 콜라겐 진정 성장
세럼/앰플 0.389 +6.4% 2.1 48% ₩23,100 레티놀 비타민C 안정
클렌징 0.281 +3.8% 1.5 52% ₩13,900 저자극 약산성 안정