ohou-today-deal

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

오늘의집 오늘의딜 조회

오늘의집今日特惠查询

What this skill does

本技能功能

오늘의집 공개 오늘의딜 페이지(
https://ohou.se/commerces/today_deals
)의 서버 렌더링 초기 데이터(
__NEXT_DATA__
)를 읽어 특가 상품을 조회한다.
  • 오늘의딜/스페셜딜 상품 목록 조회
  • 할인율, 원가, 판매가, 쿠폰/결제혜택 반영 최저가 정리
  • 브랜드, 리뷰 수, 평점, 무료배송 여부, 상품 링크 확인
  • 키워드, 최소 할인율, 무료배송 필터
读取오늘의집公开今日特惠页面(
https://ohou.se/commerces/today_deals
)的服务器渲染初始数据(
__NEXT_DATA__
),查询特价商品。
  • 查询今日特惠/特别特惠商品列表
  • 整理折扣率、原价、售价、优惠券/支付优惠后的最低价
  • 查看品牌、评论数、评分、是否免运费、商品链接
  • 支持关键词、最低折扣率、免运费筛选

When to use

使用场景

  • "오늘의집 오늘의딜 뭐 있어?"
  • "오늘의집에서 할인율 높은 특가 상품 3개 보여줘"
  • "오늘의집 무료배송 특가만 골라줘"
  • "오늘의집에서 러그 특가 찾아줘"
  • "오늘의집今日特惠有什么?"
  • "帮我找오늘의집里折扣率高的3个特价商品"
  • "帮我筛选오늘의집里免运费的特价商品"
  • "帮我找오늘의집里地毯的特价商品"

When not to use

不适用场景

  • 로그인, 장바구니, 구매, 결제 자동화 — 이 스킬은 의도적으로 구매 플로우를 포함하지 않는다.
  • 개인화 추천, 사용자별 쿠폰 적용 확정, 실시간 재고 보장.
  • 법적 증빙 수준의 가격 확정 — 조회 시점 기준 참고용이다.
  • 차단 우회, CAPTCHA 우회 — 표준 라이브러리
    urllib
    한 호출로 안 되면 실패 모드로 처리한다.
  • 登录、购物车、购买、支付自动化——本技能刻意不包含购买流程。
  • 个性化推荐、确认用户专属优惠券适用、实时库存保障。
  • 法律证明级别的价格确认——仅为查询时点的参考信息。
  • 绕过拦截、绕过CAPTCHA——若标准库
    urllib
    单次调用失败,则进入失败模式处理。

Required inputs

所需输入

별도 입력 없이 실행 가능. 선택적으로 아래를 지정할 수 있다:
  • --query
    : 상품명/브랜드 키워드
  • --min-discount
    : 최소 할인율 (0~100 정수)
  • --free-delivery
    : 무료배송 상품만
  • --sort
    : 정렬 기준 (
    discount
    ,
    price
    ,
    review
    ,
    annual-sales
    )
  • --limit
    : 결과 개수 (양의 정수, 기본 10)
  • --html-file
    : 오프라인 HTML/JSON fixture 경로
无需额外输入即可运行,也可选择性指定以下参数:
  • --query
    : 商品名/品牌关键词
  • --min-discount
    : 最低折扣率(0~100整数)
  • --free-delivery
    : 仅显示免运费商品
  • --sort
    : 排序依据(
    discount
    :折扣率、
    price
    :价格、
    review
    :评论数、
    annual-sales
    :年销量)
  • --limit
    : 结果数量(正整数,默认10)
  • --html-file
    : 离线HTML/JSON测试文件路径

Official/public surface

官方/公开资源

  • 오늘의집 오늘의딜 페이지:
    https://ohou.se/commerces/today_deals
  • 현재 웹 페이지는 canonical/OG URL로
    https://store.ohou.se/today_deals
    를 노출하지만, 브라우저 접근용 공개 URL은
    ohou.se/commerces/today_deals
    다.
  • 응답 HTML의 Next.js
    __NEXT_DATA__
    안 React Query
    dehydratedState
    에서
    today-deal-feed
    ,
    special-today-deal-feed
    queryKey 두 곳의
    todayDealFeed.slots
    만 명시적으로 읽는다. 다른 페이지 모듈(navigation, banner 등)에
    type: DEAL
    노드가 있어도 무시한다.
  • HTTP 요청은
    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는 통과시키므로 우회/조작 없이 정직한 자기소개로 요청한다.
  • 오늘의집今日特惠页面:
    https://ohou.se/commerces/today_deals
  • 当前网页通过规范/OG URL暴露
    https://store.ohou.se/today_deals
    ,但浏览器可访问的公开URL为
    ohou.se/commerces/today_deals
  • 仅从响应HTML中Next.js的
    __NEXT_DATA__
    内React Query的
    dehydratedState
    里,显式读取
    today-deal-feed
    special-today-deal-feed
    这两个queryKey下的
    todayDealFeed.slots
    数据。即使其他页面模块(导航、横幅等)存在
    type: DEAL
    节点,也会忽略。
  • HTTP请求使用
    User-Agent: k-skill-ohou-today-deal/1.0 (+https://github.com/NomaDamas/k-skill)
    发送。ohou.se前端的Akamai机器人管理器会拦截匿名/简短UA,但包含机器人名称+联系URL的合规UA可通过,因此无需绕过/篡改,以真实身份发送请求。

Prerequisites

前置条件

  • python3
  • 별도 로그인/API 키 없음
  • python3
  • 无需额外登录/API密钥

Workflow

工作流程

1. 오늘의딜 상품 조회

1. 查询今日特惠商品

오늘의집 오늘의딜 공개 페이지에서 상품 목록을 가져온다. 기본 정렬은 할인율 높은 순이다.
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list --limit 10
응답 예시:
json
{
  "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
    }
  ]
}
从오늘의집今日特惠公开页面获取商品列表,默认按折扣率从高到低排序。
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list --limit 10
响应示例:
json
{
  "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
    }
  ]
}

2. 할인율 높은 순 정렬

2. 按折扣率从高到低排序

bestDiscountPrice.discountRate
(쿠폰/결제혜택 반영 할인율)가 있으면 우선 사용하고, 없으면 상품 기본
discountRate
를 사용한다.
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
  --sort discount \
  --limit 5
정렬 옵션:
discount
(할인율),
price
(낮은 가격),
review
(리뷰 많은 순),
annual-sales
(연간 판매량).
优先使用
bestDiscountPrice.discountRate
(优惠券/支付优惠后的折扣率),若无则使用商品默认的
discountRate
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
  --sort discount \
  --limit 5
排序选项:
discount
(折扣率)、
price
(低价优先)、
review
(评论数多优先)、
annual-sales
(年销量)。

3. 키워드·할인율·무료배송 필터

3. 关键词·折扣率·免运费筛选

상품명 또는 브랜드에 키워드가 포함된 상품만 걸러내고, 최소 할인율과 무료배송 조건을 조합할 수 있다.
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
  --query 러그 \
  --min-discount 30 \
  --free-delivery \
  --limit 5
可筛选商品名或品牌包含指定关键词的商品,还可组合最低折扣率和免运费条件。
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
  --query 러그 \
  --min-discount 30 \
  --free-delivery \
  --limit 5

4. 오프라인 fixture로 검증

4. 使用离线测试文件验证

실제 네트워크 없이 저장된 HTML/JSON 파일로 동일한 파싱을 테스트한다.
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
  --html-file ./today-deals.html \
  --limit 3
无需实际网络,使用已保存的HTML/JSON文件测试相同的解析逻辑。
bash
python3 ohou-today-deal/scripts/ohou_today_deal.py list \
  --html-file ./today-deals.html \
  --limit 3

Output format

输出格式

기본 출력은 들여쓰기 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
품절 여부
默认输出为缩进格式的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
是否售罄

Endpoints used

使用的端点

이 스킬이 호출하는 공개 endpoint:
MethodURL용도
GET
https://ohou.se/commerces/today_deals
오늘의딜 공개 HTML (서버 렌더링)
비로그인 / 무인증. 헤더는
User-Agent
+
Accept
만.
本技能调用的公开端点:
方法URL用途
GET
https://ohou.se/commerces/today_deals
获取今日特惠公开HTML(服务器渲染)
无需登录/认证,仅使用
User-Agent
+
Accept
请求头。

Response policy

响应规则

  • 상위 3~5개만 먼저 보여준다.
  • 상품명, 브랜드, 할인가, 원가, 할인율, 평점/리뷰 수, 무료배송 여부, 링크를 정리한다.
  • 가격, 할인, 품절, 쿠폰/결제혜택은 "조회 시각 기준"으로 변동 가능하다고 명시한다.
  • 구매/장바구니/결제는 자동화하지 말고 상품 링크만 제공한다.
  • "지금 사라" 같은 행위 유도 금지 — 사용자가 직접 페이지에서 구매한다.
  • 优先展示前3~5个商品。
  • 整理商品名、品牌、折扣价、原价、折扣率、评分/评论数、是否免运费、链接。
  • 需明确说明价格、折扣、售罄状态、优惠券/支付优惠均为“查询时点”的信息,可能发生变动。
  • 不自动化购买/购物车/支付流程,仅提供商品链接。
  • 禁止诱导“立即购买”等行为——需由用户自行前往页面完成购买。

Done when

完成标准

  • 오늘의딜 상품 후보가 JSON 또는 요약 목록으로 반환된다.
  • 할인율/가격 기준과 조회 시점이 분리되어 설명된다.
  • 로그인, 구매, 결제, 개인화 기능을 시도하지 않았다.
  • 今日特惠商品候选以JSON或摘要列表形式返回。
  • 折扣率/价格依据与查询时点分别说明。
  • 未尝试登录、购买、支付、个性化相关功能。

Failure modes

失败场景

  • __NEXT_DATA__
    미발견
    : 오늘의집이 Next.js SSR 구조를 변경하거나, 서버 렌더링 대신 클라이언트 렌더링으로 전환하면
    ValueError
    발생. 스킬 파서 수정이 필요하다.
  • today-deal-feed queryKey 미발견: React Query 키 이름이 바뀌면
    extract_deals()
    는 빈 리스트를 반환한다 (
    total_count: 0
    ).
    TODAY_DEAL_FEED_KEYS
    상수를 새 키 이름으로 업데이트해야 한다.
  • HTTP 403: ohou.se 앞단 Akamai bot manager가 요청을 차단한 경우.
    User-Agent
    헤더가 변경되어 봇 자기소개 + contact URL 시그니처를 잃었을 가능성이 높다. 우회 시도하지 않고 에러 출력 후 종료한다.
  • HTTP 4xx/5xx (기타): 일시 장애. 우회 시도하지 않고 에러 출력 후 종료.
  • 빈 응답 (
    total_count: 0
    )
    : 오늘의딜이 아직 업데이트되지 않았거나, 페이지 구조가 바뀐 경우. 브라우저에서 직접 확인을 안내한다.
  • 가격/쿠폰 변동:
    best_price
    는 조회 시점 기준이며, 사용자별 쿠폰/결제수단에 따라 실제 결제가는 다를 수 있다.
  • 필드 누락: 일부 상품에
    bestDiscountPrice
    ,
    badgeProperties.isFreeDelivery
    ,
    scrapInfo
    등이 없을 수 있다. null로 처리된다.
  • 未找到
    __NEXT_DATA__
    :若오늘의집修改了Next.js SSR结构,或从服务器渲染切换为客户端渲染,将触发
    ValueError
    ,需修改技能解析器。
  • 未找到today-deal-feed queryKey:若React Query的键名变更,
    extract_deals()
    将返回空列表(
    total_count: 0
    ),需将
    TODAY_DEAL_FEED_KEYS
    常量更新为新的键名。
  • HTTP 403:ohou.se前端的Akamai机器人管理器拦截请求,大概率是
    User-Agent
    头被修改,丢失了机器人身份+联系URL的标识。此时不尝试绕过,输出错误后终止。
  • 其他HTTP 4xx/5xx:临时故障,不尝试绕过,输出错误后终止。
  • 空响应(
    total_count: 0
    :今日特惠尚未更新,或页面结构变更,需引导用户直接通过浏览器查看。
  • 价格/优惠券变动
    best_price
    为查询时点的价格,实际支付价格可能因用户专属优惠券/支付方式不同而变化。
  • 字段缺失:部分商品可能没有
    bestDiscountPrice
    badgeProperties.isFreeDelivery
    scrapInfo
    等字段,将以null处理。

Notes

注意事项

  • read-only 스킬이다.
  • 화면 선택자보다 서버 렌더링 초기 JSON을 우선한다.
  • 새 dependency 없이 Python 표준 라이브러리만 사용한다.
  • 本技能为只读技能。
  • 优先使用服务器渲染的初始JSON,而非页面选择器。
  • 仅使用Python标准库,无额外依赖。