Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add bam-bam-2/solo-skills --skill daangn-searchgit clone --depth 1 https://github.com/bam-bam-2/solo-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bam-bam-2/solo-skills/daangn-search)<a href="https://agentmods.dev/skills/bam-bam-2/solo-skills/daangn-search"><img src="https://agentmods.dev/badge/skills/bam-bam-2/solo-skills/daangn-search/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bam-bam-2/solo-skills/daangn-search"><img src="https://agentmods.dev/badge/skills/bam-bam-2/solo-skills/daangn-search.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00050 | $0.01470 |
| Opus 5 | $0.00025 | $0.00735 |
| Sonnet 5 | $0.00010 | $0.00294 |
| Haiku 4.5 | $0.00005 | $0.00147 |
Grade A, and why
daangn-search scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.
당근마켓 광역 검색
당근 웹(www.daangn.com)의 중고거래 검색은 선택된 행정동 하나의 매물만 보여준다.
"전국 검색" 기능이 없다. 넓게 찾으려면 지역코드를 바꿔가며 순회해야 한다.
URL 구조
https://www.daangn.com/kr/buy-sell/?in=x-<지역ID>&search=<검색어>&only_on_sale=true
in파라미터의 이름 부분은 무시되고 숫자 ID만 유효하다.x-448처럼 아무 이름이나 써도 된다only_on_sale=true를 붙이면 거래완료 매물이 빠진다. 안 붙이면 결과 대부분이 이미 팔린 것- 응답은 서버사이드 렌더링이라 fetch만으로 매물이 다 들어온다 (브라우저 불필요)
지역 ID 지도 (2026-08 실측)
시도 순서로 연속 배치돼 있다. 서울은 구 단위로 아래와 같다.
| 구 | ID | 구 | ID |
|---|---|---|---|
| 종로 | 3~19 | 양천 | 239~260 |
| 중구 | 20~35 | 강서 | 261~280 |
| 용산 | 36~52 | 구로 | 281~296 |
| 성동 | 53~70 | 금천 | 297~306 |
| 광진 | 71~86 | 영등포 | 307~325 |
| 동대문 | 87~110 | 동작 | 326~340 |
| 중랑 | 111~127 | 관악 | 341~361 |
| 성북 | 128~144 | 서초 | 362~380 |
| 강북 | 145~157 | 강남 | 381~403 |
| 도봉 | 158~172 | 송파 | 404~431 |
| 노원 | 173~185 | 강동 | 432~450 |
| 은평 | 186~206 | ||
| 서대문 | 207~220 | 마포 | 221~238 |
서울 밖: 부산 451~, 대구 680830, 인천 831960, 광주 961, 대전 1051,
울산 1151, 세종·경기 12511800, 강원 ~1900, 충북 ~2100, 충남 ~2400, 전북 ~2700, 전남 ~3000.
경계는 정확하지 않다. 확인이 필요하면 아래로 지역명을 읽어 검증한다.
const m = html.match(/data-gtm="search_filter">([^<]+)</); // "서울시 강동구 둔촌동"
매물 파싱
function parseL(html){
const re=/<a data-gtm="search_article"[^>]*href="(\/kr\/buy-sell\/[^"]+)"[\s\S]*?<\/a>/g;
const res=[]; let m;
while((m=re.exec(html))){
const seg=m[0];
const txt=seg.replace(/<img[^>]*>/g,'').replace(/<svg[\s\S]*?<\/svg>/g,'')
.replace(/<[^>]+>/g,'\u0001').split('\u0001').map(s=>s.trim()).filter(Boolean);
res.push({href:'https://www.daangn.com'+m[1], t:txt.join(' | ')}); // "제목 | 가격 | 동네 | 시간"
}
return res;
}
상세 페이지는 fetch 후 매너온도 다음 20줄 정도를 읽으면 본문·채팅수·관심수가 나온다.
속도와 차단
CloudFront가 앞단에 있어 너무 빠르면 403이 뜬다. 한 번 막히면 1~2분 쉬어야 풀린다.
- 안전 구간: 2
3개 병렬 + 250450ms 간격 (초당 약 2.5~5건). 이 속도로 900개 동을 돌았고 차단 0회 - 위험 구간: 10병렬 연속. 약 120건에서 막혔다
- 403이 연속 8건 넘게 나오면 15~20초 쉬고 재개하는 가드를 넣는다
page.goto()(브라우저)는 동당 2.4초로 fetch보다 3~4배 느리다. fetch를 쓴다- REPL 툴콜은 120초에서 끊긴다. 한 콜에 250~300개 동이 한계이니 나눠 돌린다
- 에이전트 탭이 중간에 닫혀
page가 null이 되는 일이 있다. fetch 방식이면 영향 없다
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 13d ago First seen · 99 lines · 50 tokens per session scan A c6749790599e
daangn-search is a skill published in the GitHub repository bam-bam-2/solo-skills (363 stars, last pushed 9d ago), licensed MIT. It adds 50 tokens to every session and 1,470 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gws-gmail
Gmail: Send, read, and manage email.
recipe-block-focus-time
Create recurring focus time blocks on Google Calendar to protect deep work hours.
recipe-create-vacation-responder
Enable a Gmail out-of-office auto-reply with a custom message and date range.
recipe-save-email-attachments
Find Gmail messages with attachments and save them to a Google Drive folder.
happiness-skill
A Chinese-language guide to happiness based on reducing unmet wants, focusing on the present, and treating happiness as a trainable skill.
post-build-flow
Handles workflow verification and setup after build-workflow succeeds, or when the message contains workflow-verification-follow-up or workflow-setup-required. Load after direct builds, when verificationReadiness requires action, or on orchestrator verify/setup follow-up turns.