Help us improve
Share bugs, ideas, or general feedback.
From k-skill
Fetches and filters today's deal products from ohou.se without login. Supports keyword, minimum discount rate, free delivery, and sorting by discount/price/review/sales.
npx claudepluginhub nomadamas/k-skill --plugin k-skillHow this skill is triggered — by the user, by Claude, or both
Slash command
/k-skill:ohou-today-dealThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
오늘의집 공개 오늘의딜 페이지(`https://ohou.se/commerces/today_deals`)의 서버 렌더링 초기 데이터(`__NEXT_DATA__`)를 읽어 특가 상품을 조회한다.
Searches Danawa for product candidates and compares shopping mall prices including shipping, card discounts, and installment plans. Returns offers sorted by total price with payment condition badges.
Queries The Warehouse NZ for product search, specials, product details, and store locations. Supports keyword search, SKU lookup, and region-based store finder with optional browser mode.
Researches products across the web via Firecrawl search and scrape, comparing prices, specs, and reviews to produce a shopping recommendation or cart-ready summary.
Share bugs, ideas, or general feedback.
오늘의집 공개 오늘의딜 페이지(https://ohou.se/commerces/today_deals)의 서버 렌더링 초기 데이터(__NEXT_DATA__)를 읽어 특가 상품을 조회한다.
urllib 한 호출로 안 되면 실패 모드로 처리한다.별도 입력 없이 실행 가능. 선택적으로 아래를 지정할 수 있다:
--query: 상품명/브랜드 키워드--min-discount: 최소 할인율 (0~100 정수)--free-delivery: 무료배송 상품만--sort: 정렬 기준 (discount, price, review, annual-sales)--limit: 결과 개수 (양의 정수, 기본 10)--html-file: 오프라인 HTML/JSON fixture 경로https://ohou.se/commerces/today_dealshttps://store.ohou.se/today_deals를 노출하지만, 브라우저 접근용 공개 URL은 ohou.se/commerces/today_deals다.__NEXT_DATA__ 안 React Query dehydratedState에서 today-deal-feed, special-today-deal-feed queryKey 두 곳의 todayDealFeed.slots만 명시적으로 읽는다. 다른 페이지 모듈(navigation, banner 등)에 type: DEAL 노드가 있어도 무시한다.User-Agent: k-skill-ohou-today-deal/1.0 (+https://github.com/NomaDamas/k-skill)로 보낸다. ohou.se 앞단 Akamai bot manager는 익명/단축 UA를 차단하지만 봇 이름 + contact URL이 포함된 well-formed UA는 통과시키므로 우회/조작 없이 정직한 자기소개로 요청한다.python3오늘의집 오늘의딜 공개 페이지에서 상품 목록을 가져온다. 기본 정렬은 할인율 높은 순이다.
python3 ohou-today-deal/scripts/ohou_today_deal.py list --limit 10
응답 예시:
{
"source": {
"name": "ohou-today-deal",
"url": "https://ohou.se/commerces/today_deals",
"fetched_at": "2026-05-18T01:44:16+00:00",
"surface": "__NEXT_DATA__ today-deal-feed + special-today-deal-feed"
},
"filters": {"query": null, "min_discount": null, "free_delivery": false, "sort": "discount", "limit": 10},
"count": 10,
"total_count": 72,
"filtered_count": 72,
"items": [
{
"id": "823405",
"title": "삼익가구 BEST상품 총집합",
"brand": "삼익가구",
"url": "https://ohou.se/productions/823405/selling",
"original_price": 449000,
"selling_price": 132000,
"discount_rate": 70,
"best_price": 118800,
"best_discount_rate": 73,
"best_discount_description": "쿠폰 할인가",
"review_count": 53818,
"review_average": 4.7,
"free_delivery": false,
"sold_out": false
}
]
}
bestDiscountPrice.discountRate(쿠폰/결제혜택 반영 할인율)가 있으면 우선 사용하고, 없으면 상품 기본 discountRate를 사용한다.
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
--sort discount \
--limit 5
정렬 옵션: discount(할인율), price(낮은 가격), review(리뷰 많은 순), annual-sales(연간 판매량).
상품명 또는 브랜드에 키워드가 포함된 상품만 걸러내고, 최소 할인율과 무료배송 조건을 조합할 수 있다.
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
--query 러그 \
--min-discount 30 \
--free-delivery \
--limit 5
실제 네트워크 없이 저장된 HTML/JSON 파일로 동일한 파싱을 테스트한다.
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
--html-file ./today-deals.html \
--limit 3
기본 출력은 들여쓰기 JSON (indent=2). 파이프/스크립트에서 사용할 때는 출력을 jq 등으로 후처리한다.
주요 필드:
| 필드 | 설명 |
|---|---|
source.fetched_at | 조회 시각 (UTC ISO 8601) |
count | 반환된 상품 수 |
total_count | 전체 오늘의딜 상품 수 |
filtered_count | 필터 적용 후 상품 수 |
items[].best_price | 쿠폰/결제혜택 반영 최저가 (없으면 null) |
items[].best_discount_rate | 혜택 반영 할인율 (없으면 null) |
items[].free_delivery | 무료배송 여부 |
items[].sold_out | 품절 여부 |
이 스킬이 호출하는 공개 endpoint:
| Method | URL | 용도 |
|---|---|---|
| GET | https://ohou.se/commerces/today_deals | 오늘의딜 공개 HTML (서버 렌더링) |
비로그인 / 무인증. 헤더는 User-Agent + Accept 만.
__NEXT_DATA__ 미발견: 오늘의집이 Next.js SSR 구조를 변경하거나, 서버 렌더링 대신 클라이언트 렌더링으로 전환하면 ValueError 발생. 스킬 파서 수정이 필요하다.extract_deals()는 빈 리스트를 반환한다 (total_count: 0). TODAY_DEAL_FEED_KEYS 상수를 새 키 이름으로 업데이트해야 한다.User-Agent 헤더가 변경되어 봇 자기소개 + contact URL 시그니처를 잃었을 가능성이 높다. 우회 시도하지 않고 에러 출력 후 종료한다.total_count: 0): 오늘의딜이 아직 업데이트되지 않았거나, 페이지 구조가 바뀐 경우. 브라우저에서 직접 확인을 안내한다.best_price는 조회 시점 기준이며, 사용자별 쿠폰/결제수단에 따라 실제 결제가는 다를 수 있다.bestDiscountPrice, badgeProperties.isFreeDelivery, scrapInfo 등이 없을 수 있다. null로 처리된다.