zipcode-search
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseZipcode Search
邮政编码查询
What this skill does
技能功能
우체국 공식 통합 우편번호 검색 페이지를 조회해서 주소 키워드에 맞는 우편번호와 공식 영문 주소를 함께 찾는다.
通过查询韩国邮政官方综合邮政编码搜索页面,查找与地址关键词匹配的邮政编码及官方英文地址。
When to use
使用场景
- "이 주소 우편번호랑 영문 주소 같이 알려줘"
- "서울특별시 강남구 테헤란로 123 영문 주소로 바꿔줘"
- "해외 결제용으로 한국 주소 영문 표기 필요해"
- "帮我查这个地址的邮政编码和英文地址"
- "帮我把首尔特别市江南区德黑兰路123号转换成英文地址"
- "需要韩国地址的英文表述用于海外支付"
Prerequisites
前置条件
- 인터넷 연결
curlpython3
- 网络连接
curlpython3
Inputs
输入参数
- 주소 키워드
- 도로명 + 건물번호
- 시/군/구 + 도로명
- 동/리 + 지번
- 地址关键词
- 道路名 + 建筑编号
- 市/郡/区 + 道路名
- 洞/里 + 地籍号
Workflow
工作流程
1. Query the official integrated ePost page first
1. 首先查询官方ePost综合页面
비공식 영문주소 변환기나 블로그 표기를 쓰지 말고 아래 우체국 공식 통합 검색 페이지를 먼저 조회한다.
text
https://www.epost.kr/search.RetrieveIntegrationNewZipCdList.comm이 페이지는 파라미터로 우편번호, 국문 주소, 열의 공식 영문 주소를 함께 돌려준다.
keywordEnglish/집배코드请勿使用非官方英文地址转换器或博客表述,优先查询以下韩国邮政官方综合搜索页面。
text
https://www.epost.kr/search.RetrieveIntegrationNewZipCdList.comm该页面通过参数返回邮政编码、韩文地址、列的官方英文地址。
keywordEnglish/집배코드2. Fetch the HTML with curl and extract the viewDetail(...)
rows
viewDetail(...)2. 使用curl获取HTML并提取viewDetail(...)
行
viewDetail(...)현재 ePost 엔드포인트는 응답이 간헐적으로 reset/timeout 될 수 있으므로, 로컬 대신 + 재시도 경로를 기본 예시로 사용한다.
urllibcurl --http1.1 --tls-max 1.2bash
python3 - <<'PY'
import html
import re
import subprocess
query = "서울특별시 강남구 테헤란로 123"
cmd = [
"curl",
"--http1.1",
"--tls-max",
"1.2",
"--silent",
"--show-error",
"--location",
"--retry",
"3",
"--retry-all-errors",
"--retry-delay",
"1",
"--max-time",
"20",
"--get",
"--data-urlencode",
f"keyword={query}",
"https://www.epost.kr/search.RetrieveIntegrationNewZipCdList.comm",
]
page = subprocess.run(
cmd,
check=True,
capture_output=True,
text=True,
encoding="utf-8",
).stdout
matches = re.findall(
r"viewDetail\('([^']*)','([^']*)','([^']*)','([^']*)',\s*'[^']*'\)",
page,
)
if not matches:
raise SystemExit("검색 결과가 없습니다.")
for zip_code, road_address, english_address, jibun_address in matches[:5]:
print(zip_code)
print(html.unescape(road_address))
print(html.unescape(english_address))
print(html.unescape(jibun_address))
print("---")
PY핵심 값은 인자다. 공식 출력은 보통 같은 형식을 그대로 준다.
viewDetail(zip, roadAddress, englishAddress, jibunAddress, rowIndex)123, Teheran-ro, Gangnam-gu, Seoul, 06133, Rep. of KOREA由于当前ePost端点可能会间歇性出现重置/超时情况,因此默认示例使用+重试机制,而非本地。
curl --http1.1 --tls-max 1.2urllibbash
python3 - <<'PY'
import html
import re
import subprocess
query = "서울특별시 강남구 테헤란로 123"
cmd = [
"curl",
"--http1.1",
"--tls-max",
"1.2",
"--silent",
"--show-error",
"--location",
"--retry",
"3",
"--retry-all-errors",
"--retry-delay",
"1",
"--max-time",
"20",
"--get",
"--data-urlencode",
f"keyword={query}",
"https://www.epost.kr/search.RetrieveIntegrationNewZipCdList.comm",
]
page = subprocess.run(
cmd,
check=True,
capture_output=True,
text=True,
encoding="utf-8",
).stdout
matches = re.findall(
r"viewDetail\('([^']*)','([^']*)','([^']*)','([^']*)',\s*'[^']*'\)",
page,
)
if not matches:
raise SystemExit("검색 결과가 없습니다.")
for zip_code, road_address, english_address, jibun_address in matches[:5]:
print(zip_code)
print(html.unescape(road_address))
print(html.unescape(english_address))
print(html.unescape(jibun_address))
print("---")
PY核心参数为。官方输出通常采用这类格式。
viewDetail(zip, roadAddress, englishAddress, jibunAddress, rowIndex)123, Teheran-ro, Gangnam-gu, Seoul, 06133, Rep. of KOREA3. Prefer the shipped helper for repeatable execution
3. 优先使用内置工具进行重复执行
저장소에는 같은 흐름을 감싼 실행 가능한 helper가 포함되어 있다.
bash
python3 scripts/zipcode_search.py "서울특별시 강남구 테헤란로 123"
./scripts/zipcode_search.py "서울특별시 강남구 테헤란로 123"예시 출력:
json
{
"query": "서울특별시 강남구 테헤란로 123",
"results": [
{
"zip_code": "06133",
"road_address": "서울특별시 강남구 테헤란로 123 (역삼동, 여삼빌딩)",
"english_address": "123, Teheran-ro, Gangnam-gu, Seoul, 06133, Rep. of KOREA",
"jibun_address": "서울특별시 강남구 역삼동 648-23 (여삼빌딩)"
}
]
}仓库中包含了封装相同流程的可执行工具。
bash
python3 scripts/zipcode_search.py "서울특별시 강남구 테헤란로 123"
./scripts/zipcode_search.py "서울특별시 강남구 테헤란로 123"示例输出:
json
{
"query": "서울특별시 강남구 테헤란로 123",
"results": [
{
"zip_code": "06133",
"road_address": "서울특별시 강남구 테헤란로 123 (역삼동, 여삼빌딩)",
"english_address": "123, Teheran-ro, Gangnam-gu, Seoul, 06133, Rep. of KOREA",
"jibun_address": "서울특별시 강남구 역삼동 648-23 (여삼빌딩)"
}
]
}4. Normalize for humans
4. 整理为便于阅读的格式
응답은 raw HTML이므로 그대로 붙이지 말고 아래처럼 정리한다.
- 우편번호
- 도로명 국문 주소
- 공식 영문 주소
- 필요하면 지번 주소
- 후보가 여러 개면 상위 3~5개만 보여주고 어느 항목이 가장 근접한지 짚기
由于返回的是原始HTML,请勿直接粘贴,需按以下方式整理:
- 邮政编码
- 韩文道路名地址
- 官方英文地址
- 必要时提供地籍号地址
- 若有多个候选结果,仅展示前3~5个,并指出最匹配的条目
5. Retry with tighter and fuller keywords when needed
5. 必要时使用更精准或完整的关键词重试
검색 결과가 없거나 timeout/reset이 반복되면 아래 순서로 재시도한다.
- 짧은 도로명 + 건물번호:
테헤란로 123 - 시/군/구 포함 전체 주소:
서울 강남구 테헤란로 123 - 동/리 + 지번 또는 대체 표기:
역삼동 648-23
若未找到搜索结果或反复出现超时/重置情况,请按以下顺序重试:
- 简短道路名+建筑编号:
테헤란로 123 - 包含市/郡/区的完整地址:
서울 강남구 테헤란로 123 - 洞/里+地籍号或替代表述:
역삼동 648-23
6. Prefer temp files in wrapped shells
6. 在封装shell中优先使用临时文件
CLI 래퍼나 에이전트 쉘에서는 here-doc + Python one-liner가 깨질 수 있으므로, 실전에서는 같은 임시 파일에 HTML을 저장한 뒤 그 파일을 파싱하는 경로를 우선한다. 응답 일부만 보려고 를 붙이면 다운스트림이 먼저 닫히면서 이 보일 수 있으니, 이 경우도 전체 응답을 임시 파일에 저장한 뒤 확인한다.
mktemp| headcurl: (23)在CLI包装器或Agent shell中,here-doc + Python单行代码可能会失效,因此实际使用时优先采用将HTML保存至等临时文件后再解析的方式。若为查看部分响应而添加,可能会因下游提前关闭而出现错误,这种情况下也需将完整响应保存至临时文件后再查看。
mktemp| headcurl: (23)Done when
完成条件
- 적어도 한 개의 우편번호 후보와 공식 영문 주소가 정리되어 있다
- 다중 후보일 때 사용자가 고를 수 있게 국문/영문 주소 차이가 보인다
- 검색 결과가 없으면 재검색 키워드 방향을 제안했다
- 已整理出至少一个邮政编码候选及官方英文地址
- 若有多个候选结果,需展示韩文/英文地址的差异以便用户选择
- 若未找到搜索结果,需提供重新搜索的关键词方向
Failure modes
失败场景
- 우체국 검색 페이지 마크업이 바뀌면 추출 규칙이 깨질 수 있다
viewDetail(...) - 주소 키워드가 너무 넓으면 결과가 과하게 많아질 수 있다
- 재시도 없이 한 번만 호출하면 timeout/reset 같은 일시 오류가 날 수 있다
- 없이 다른 클라이언트로 바로 붙으면 협상/전송 오류가 날 수 있다
curl
- 若韩国邮政搜索页面的标记语言发生变化,提取规则可能失效
viewDetail(...) - 地址关键词过于宽泛可能导致结果过多
- 若不进行重试仅调用一次,可能出现超时/重置等临时错误
- 若不使用而直接使用其他客户端,可能出现协商/传输错误
curl
Notes
注意事项
- 공식 표기 그대로 유지하는 조회형 스킬이다
- 상대 날짜/실시간 개념은 없으므로 주소 문자열 정제에 집중한다
- 这是一款严格保留官方表述的查询类技能
- 无相对日期/实时概念,需专注于地址字符串的整理