mirror of
https://github.com/NomaDamas/k-skill.git
synced 2026-06-24 02:04:11 +00:00
docs: document Daangn search skills
This commit is contained in:
parent
12adac4eb8
commit
95d5e9d05b
7 changed files with 222 additions and 0 deletions
|
|
@ -82,6 +82,10 @@ Claude Code, Codex, OpenCode, OpenClaw/ClawHub 등 각종 코딩 에이전트
|
|||
| 택배 배송조회 | `delivery-tracking` | CJ대한통운·우체국 송장 번호로 배송 상태 조회 | 불필요 | [택배 배송조회 가이드](docs/features/delivery-tracking.md) |
|
||||
| 쿠팡 상품 검색 | `coupang-product-search` | 쿠팡 상품 검색, 로켓배송 필터, 가격대 검색, 비교, 베스트, 골드박스 특가 조회 | 선택사항 (운영 키 있으면 로컬 HMAC 경로, 없으면 hosted fallback) | [쿠팡 상품 검색 가이드](docs/features/coupang-product-search.md) |
|
||||
| 번개장터 검색 | `bunjang-search` | 번개장터 검색, 상세조회, 선택적 찜/채팅, AI TOON export | 불필요 | [번개장터 검색 가이드](docs/features/bunjang-search.md) |
|
||||
| 당근 중고거래 검색 | `daangn-used-goods-search` | 당근 중고거래 공개 웹 데이터 표면으로 키워드·지역 기반 매물 검색과 상세 조회 | 불필요 | [당근 중고거래 검색 가이드](docs/features/daangn-used-goods-search.md) |
|
||||
| 당근부동산 검색 | `daangn-realty-search` | 당근부동산 공개 웹 데이터 표면으로 지역 기반 부동산 매물 검색과 상세 확인 | 불필요 | [당근부동산 검색 가이드](docs/features/daangn-realty-search.md) |
|
||||
| 당근알바 검색 | `daangn-jobs-search` | 당근알바 공개 웹 데이터 표면으로 키워드·지역 기반 알바 공고 검색과 상세 조회 | 불필요 | [당근알바 검색 가이드](docs/features/daangn-jobs-search.md) |
|
||||
| 당근중고차 검색 | `daangn-cars-search` | 당근중고차 공개 웹 데이터 표면으로 지역·가격 조건 기반 차량 검색과 상세 조회 | 불필요 | [당근중고차 검색 가이드](docs/features/daangn-cars-search.md) |
|
||||
| 중고차 가격 조회 | `used-car-price-search` | 중고차 인수가/월 렌트료 비교 조회 | 불필요 | [중고차 가격 조회 가이드](docs/features/used-car-price-search.md) |
|
||||
| 한국어 맞춤법 검사 | `korean-spell-check` | 한국어 텍스트 맞춤법/문법 검사 및 교정안 정리 | 불필요 | [한국어 맞춤법 검사 가이드](docs/features/korean-spell-check.md) |
|
||||
| 네이버 블로그 리서치 | `naver-blog-research` | 네이버 블로그 검색, 원문 읽기, 이미지 다운로드, 한국어 콘텐츠 교차 검증 | 불필요 | [네이버 블로그 리서치 가이드](docs/features/naver-blog-research.md) |
|
||||
|
|
@ -183,6 +187,10 @@ Claude Code, Codex, OpenCode, OpenClaw/ClawHub 등 각종 코딩 에이전트
|
|||
- [택배 배송조회](docs/features/delivery-tracking.md)
|
||||
- [쿠팡 상품 검색](docs/features/coupang-product-search.md)
|
||||
- [번개장터 검색 가이드](docs/features/bunjang-search.md)
|
||||
- [당근 중고거래 검색 가이드](docs/features/daangn-used-goods-search.md)
|
||||
- [당근부동산 검색 가이드](docs/features/daangn-realty-search.md)
|
||||
- [당근알바 검색 가이드](docs/features/daangn-jobs-search.md)
|
||||
- [당근중고차 검색 가이드](docs/features/daangn-cars-search.md)
|
||||
- [중고차 가격 조회 가이드](docs/features/used-car-price-search.md)
|
||||
- [한국어 맞춤법 검사 가이드](docs/features/korean-spell-check.md)
|
||||
- [네이버 블로그 리서치 가이드](docs/features/naver-blog-research.md)
|
||||
|
|
|
|||
43
docs/features/daangn-cars-search.md
Normal file
43
docs/features/daangn-cars-search.md
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# 당근중고차 검색 가이드 (`daangn-cars-search`)
|
||||
|
||||
당근중고차 공개 웹 데이터 표면을 사용해 지역·키워드·가격 조건 기반 차량을 검색하고, 개별 차량 상세를 읽기 전용으로 확인하는 스킬입니다.
|
||||
|
||||
## 사용 시나리오
|
||||
|
||||
- "당근중고차 합정동 레이 찾아봐"
|
||||
- "당근에서 천만원 이하 중고차 검색해줘"
|
||||
- "이 당근 중고차 URL 상세 요약해줘"
|
||||
|
||||
## 구현 표면
|
||||
|
||||
브라우저 자동화, 로그인, 채팅, 문의, 구매 자동화를 사용하지 않습니다.
|
||||
|
||||
1. 지역 해석: `https://www.daangn.com/kr/api/v1/regions/keyword?keyword=<지역명>`
|
||||
2. 검색: `https://www.daangn.com/kr/cars/?in=<지역명>-<id>&onlyOnSale=1&_data=routes/kr.cars._index`
|
||||
3. 상세: `<차량 URL>?_data=routes%2Fkr.cars.%24car_post_id`
|
||||
|
||||
## 로컬 실행
|
||||
|
||||
```bash
|
||||
python3 daangn-cars-search/scripts/daangn_cars.py search "레이" --region "합정동" --limit 5
|
||||
python3 daangn-cars-search/scripts/daangn_cars.py search --region "합정동" --price-max 10000000 --limit 5
|
||||
python3 daangn-cars-search/scripts/daangn_cars.py detail "https://www.daangn.com/kr/cars/.../"
|
||||
```
|
||||
|
||||
## 지역 필터
|
||||
|
||||
지역명은 당근 region API로 내부 id를 해석한 뒤 `in=<지역명>-<id>` 형태로 검색 URL에 넣습니다.
|
||||
|
||||
```text
|
||||
합정동 → 서울특별시 마포구 합정동, id=231 → in=합정동-231
|
||||
```
|
||||
|
||||
## 출력 해석
|
||||
|
||||
검색 결과는 `title`, `price`, `price_text`, `region`, `status`, `driveDistance`, `carData`, `chatRoomCount`, `url`을 우선 확인합니다. 차량 연식, 주행거리, 사고/정비 이력처럼 원문 의존도가 높은 정보는 상세 조회의 `carPost` 원문을 함께 확인합니다.
|
||||
|
||||
## 제한사항
|
||||
|
||||
- 공개 Remix `_data` route 이름이나 JSON shape가 바뀌면 실패할 수 있습니다.
|
||||
- 문의, 시승 예약, 구매, 결제, 채팅 자동화는 실행하지 않습니다.
|
||||
- 가격·판매 상태는 실시간으로 바뀔 수 있어 원문 URL을 함께 제시합니다.
|
||||
42
docs/features/daangn-jobs-search.md
Normal file
42
docs/features/daangn-jobs-search.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# 당근알바 검색 가이드 (`daangn-jobs-search`)
|
||||
|
||||
당근알바 공개 웹 데이터 표면을 사용해 키워드·지역 기반 알바 공고를 검색하고, 개별 공고 상세를 읽기 전용으로 확인하는 스킬입니다.
|
||||
|
||||
## 사용 시나리오
|
||||
|
||||
- "당근알바 합정동 카페 알바 찾아봐"
|
||||
- "홍대 근처 주말 알바 검색해줘"
|
||||
- "이 당근알바 공고 상세 요약해줘"
|
||||
|
||||
## 구현 표면
|
||||
|
||||
브라우저 자동화, 로그인, 채팅, 지원, 문의 자동화를 사용하지 않습니다.
|
||||
|
||||
1. 지역 해석: `https://www.daangn.com/kr/api/v1/regions/keyword?keyword=<지역명>`
|
||||
2. 검색: `https://www.daangn.com/kr/jobs/?in=<지역명>-<id>&search=<키워드>&_data=routes/kr.jobs._index`
|
||||
3. 상세: `<공고 URL>?_data=routes%2Fkr.jobs.%24job_post_id`
|
||||
|
||||
## 로컬 실행
|
||||
|
||||
```bash
|
||||
python3 daangn-jobs-search/scripts/daangn_jobs.py search "카페" --region "합정동" --limit 5
|
||||
python3 daangn-jobs-search/scripts/daangn_jobs.py detail "https://www.daangn.com/kr/jobs/.../"
|
||||
```
|
||||
|
||||
## 지역 필터
|
||||
|
||||
지역명은 당근 region API로 내부 id를 해석한 뒤 `in=<지역명>-<id>` 형태로 검색 URL에 넣습니다.
|
||||
|
||||
```text
|
||||
합정동 → 서울특별시 마포구 합정동, id=231 → in=합정동-231
|
||||
```
|
||||
|
||||
## 출력 해석
|
||||
|
||||
검색 결과는 `title`, `company`, `region`, `address`, `salary`, `salaryType`, `workDays`, `workTimeStart`, `workTimeEnd`, `closed`, `url`을 우선 확인합니다. 지원 가능 여부나 근무 조건은 상세 조회의 `jobPost` 원문까지 본 뒤 정리합니다.
|
||||
|
||||
## 제한사항
|
||||
|
||||
- 공개 Remix `_data` route 이름이나 JSON shape가 바뀌면 실패할 수 있습니다.
|
||||
- 마감·삭제·비공개 전환된 공고는 상세 조회가 실패할 수 있습니다.
|
||||
- 지원, 채팅, 문의, 개인정보 제출 자동화는 범위 밖입니다.
|
||||
43
docs/features/daangn-realty-search.md
Normal file
43
docs/features/daangn-realty-search.md
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# 당근부동산 검색 가이드 (`daangn-realty-search`)
|
||||
|
||||
당근부동산 공개 웹 데이터 표면을 사용해 지역 기반 부동산 매물 후보를 검색하고, 상세 페이지의 공개 메타를 읽기 전용으로 확인하는 스킬입니다.
|
||||
|
||||
## 사용 시나리오
|
||||
|
||||
- "당근부동산 합정동 월세 매물 찾아봐"
|
||||
- "마포구 전세 후보 당근에서 봐줘"
|
||||
- "이 당근부동산 URL 상세 요약해줘"
|
||||
|
||||
## 구현 표면
|
||||
|
||||
브라우저 자동화, 로그인, 채팅, 문의, 예약, 계약 자동화를 사용하지 않습니다.
|
||||
|
||||
1. 지역 해석: `https://www.daangn.com/kr/api/v1/regions/keyword?keyword=<지역명>`
|
||||
2. 검색: `https://www.daangn.com/kr/realty/?in=<지역명>-<id>&_data=routes/kr.realty._index`
|
||||
3. 상세: `https://realty.daangn.com/articles/<id>`의 `application/ld+json` 및 `<title>`
|
||||
|
||||
## 로컬 실행
|
||||
|
||||
```bash
|
||||
python3 daangn-realty-search/scripts/daangn_realty.py search --region "합정동" --limit 5
|
||||
python3 daangn-realty-search/scripts/daangn_realty.py search --region "합정동" --sales-type "APARTMENT" --trade-type "MONTHLY_RENT"
|
||||
python3 daangn-realty-search/scripts/daangn_realty.py detail "https://realty.daangn.com/articles/..."
|
||||
```
|
||||
|
||||
## 지역 필터
|
||||
|
||||
지역명은 당근 region API로 내부 id를 해석한 뒤 `in=<지역명>-<id>` 형태로 검색 URL에 넣습니다.
|
||||
|
||||
```text
|
||||
합정동 → 서울특별시 마포구 합정동, id=231 → in=합정동-231
|
||||
```
|
||||
|
||||
## 출력 해석
|
||||
|
||||
검색 결과는 `title`, `salesType`, `trade`, `area`, `areaPyeong`, `totalManageCost`, `url`을 우선 확인합니다. 부동산 판단에는 실시간 상태, 보증금/월세, 관리비, 면적, 중개/직거래 여부가 중요하므로 원본 URL을 함께 제시합니다.
|
||||
|
||||
## 제한사항
|
||||
|
||||
- 당근부동산 목록 JSON과 `realty.daangn.com` 상세 HTML 구조 변경에 영향을 받습니다.
|
||||
- 문의, 방문 예약, 계약, 결제, 채팅은 실행하지 않습니다.
|
||||
- 공고 내용은 실시간 상태와 달라질 수 있어 최종 판단 전 원문 확인이 필요합니다.
|
||||
45
docs/features/daangn-used-goods-search.md
Normal file
45
docs/features/daangn-used-goods-search.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# 당근 중고거래 검색 가이드 (`daangn-used-goods-search`)
|
||||
|
||||
당근 중고거래 공개 웹 데이터 표면을 사용해 키워드·지역 기반 매물을 검색하고, 개별 매물 상세를 읽기 전용으로 확인하는 스킬입니다.
|
||||
|
||||
## 사용 시나리오
|
||||
|
||||
- "당근에서 합정동 맥북 매물 찾아봐"
|
||||
- "이 당근 중고거래 URL 상세 요약해줘"
|
||||
- "아이폰 15 Pro 중고 매물 중 판매중인 것만 봐줘"
|
||||
|
||||
## 구현 표면
|
||||
|
||||
브라우저 자동화, 로그인, 채팅, 찜, 거래 제안, 구매 자동화를 사용하지 않습니다.
|
||||
|
||||
1. 지역 해석: `https://www.daangn.com/kr/api/v1/regions/keyword?keyword=<지역명>`
|
||||
2. 검색: `https://www.daangn.com/kr/buy-sell/all/?in=<지역명>-<id>&search=<키워드>&only_on_sale=true&_data=routes/kr.buy-sell._index`
|
||||
3. 상세: `<매물 URL>?_data=routes%2Fkr.buy-sell.%24buy_sell_id`
|
||||
|
||||
## 로컬 실행
|
||||
|
||||
```bash
|
||||
python3 daangn-used-goods-search/scripts/daangn_used_goods.py search "맥북" --region "합정동" --limit 5
|
||||
python3 daangn-used-goods-search/scripts/daangn_used_goods.py detail "https://www.daangn.com/kr/buy-sell/.../"
|
||||
```
|
||||
|
||||
## 지역 필터
|
||||
|
||||
지역명은 바로 URL에 넣지 않고 당근 region API로 내부 id를 먼저 조회합니다.
|
||||
|
||||
```text
|
||||
합정동 → 서울특별시 마포구 합정동, id=231 → in=합정동-231
|
||||
```
|
||||
|
||||
동일 지명이 여러 곳에 있으면 정확 일치 후보, 서울 동 단위 후보, 첫 번째 후보 순으로 선택합니다. 결과에는 적용 지역(`effective_region`)과 원본 URL을 함께 남깁니다.
|
||||
|
||||
## 출력 해석
|
||||
|
||||
검색 결과는 `title`, `price`, `price_text`, `status`, `region`, `url` 중심으로 1차 후보를 고릅니다. 조회수, 채팅수, 설명 같은 상세 판단은 상세 조회 결과의 `product` 원문을 확인한 뒤 정리합니다.
|
||||
|
||||
## 제한사항
|
||||
|
||||
- 공개 Remix `_data` route 이름이나 JSON shape가 바뀌면 실패할 수 있습니다.
|
||||
- 삭제·판매완료·비공개 전환된 글은 상세 조회가 실패할 수 있습니다.
|
||||
- CAPTCHA, 로그인벽, 봇 차단이 나오면 실패 모드로 보고하고 우회하지 않습니다.
|
||||
- 상대방에게 영향을 주는 채팅, 찜, 거래 제안, 구매 자동화는 범위 밖입니다.
|
||||
|
|
@ -129,6 +129,13 @@
|
|||
- coupang_partners hosted fallback PR (merged): https://github.com/retention-corp/coupang_partners/pull/1
|
||||
- bunjang-cli package: https://www.npmjs.com/package/bunjang-cli
|
||||
- bunjang-cli repo: https://github.com/pinion05/bunjangcli
|
||||
- 당근 메인: https://www.daangn.com/
|
||||
- 당근 지역 검색 API: https://www.daangn.com/kr/api/v1/regions/keyword?keyword=<지역명>
|
||||
- 당근 중고거래 검색 Remix data route: https://www.daangn.com/kr/buy-sell/all/?_data=routes/kr.buy-sell._index
|
||||
- 당근부동산 검색 Remix data route: https://www.daangn.com/kr/realty/?_data=routes/kr.realty._index
|
||||
- 당근알바 검색 Remix data route: https://www.daangn.com/kr/jobs/?_data=routes/kr.jobs._index
|
||||
- 당근중고차 검색 Remix data route: https://www.daangn.com/kr/cars/?_data=routes/kr.cars._index
|
||||
- 당근부동산 상세 페이지: https://realty.daangn.com/articles/<id>
|
||||
- 블루리본 메인: https://www.bluer.co.kr/
|
||||
- 블루리본 지역 검색: https://www.bluer.co.kr/search/zone
|
||||
- 블루리본 주변 맛집 JSON: https://www.bluer.co.kr/restaurants/map
|
||||
|
|
|
|||
|
|
@ -186,6 +186,40 @@ test("README links to the contribution guide", () => {
|
|||
assert.match(readme, /\[기여 가이드\]\(CONTRIBUTING\.md\)/);
|
||||
});
|
||||
|
||||
|
||||
test("repository docs advertise Daangn read-only search skills", () => {
|
||||
const readme = read("README.md");
|
||||
const sources = read(path.join("docs", "sources.md"));
|
||||
const skills = [
|
||||
["daangn-used-goods-search", "당근 중고거래 검색"],
|
||||
["daangn-realty-search", "당근부동산 검색"],
|
||||
["daangn-jobs-search", "당근알바 검색"],
|
||||
["daangn-cars-search", "당근중고차 검색"],
|
||||
];
|
||||
|
||||
assert.match(sources, /www\.daangn\.com\/kr\/api\/v1\/regions\/keyword/);
|
||||
assert.match(sources, /realty\.daangn\.com\/articles/);
|
||||
|
||||
for (const [skillName, label] of skills) {
|
||||
const skill = read(path.join(skillName, "SKILL.md"));
|
||||
const featureDocPath = path.join(repoRoot, "docs", "features", `${skillName}.md`);
|
||||
const featureDoc = read(path.join("docs", "features", `${skillName}.md`));
|
||||
|
||||
assert.ok(fs.existsSync(featureDocPath), `expected docs/features/${skillName}.md to exist`);
|
||||
assert.ok(
|
||||
readme.includes(`| ${label} | \`${skillName}\``),
|
||||
`README should advertise ${skillName}`,
|
||||
);
|
||||
assert.ok(
|
||||
readme.includes(`](docs/features/${skillName}.md)`),
|
||||
`README should link docs/features/${skillName}.md`,
|
||||
);
|
||||
assert.match(skill, /kr\/api\/v1\/regions\/keyword/);
|
||||
assert.match(featureDoc, /kr\/api\/v1\/regions\/keyword/);
|
||||
assert.match(featureDoc, /(로그인|채팅|구매|문의|지원).*자동화/);
|
||||
}
|
||||
});
|
||||
|
||||
test("hwp skill documents kordoc-based parsing and supported operations", () => {
|
||||
const skillPath = path.join(repoRoot, "hwp", "SKILL.md");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue