k-skill/docs/features/naver-blog-research.md
owen 4f015c5680
feat: 네이버 블로그 리서치 스킬 추가 (#107)
* feat: 네이버 블로그 리서치 스킬 추가

API 키 없이 python3 표준 라이브러리만으로 네이버 블로그 검색, 원문 읽기, 이미지 다운로드를 수행하는 스킬.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Restore Naver blog search paging and newest-sort behavior

Naver's current blog search surface does not honor the older
where=blog + sort query pattern used by this skill. The request
now targets the blog tab surface, uses the observed NSO sort
controls, and trims each parsed page to the visible 15-result
window so count-based pagination returns distinct results.

Constraint: Must keep using stdlib-only HTTP scraping without adding dependencies
Constraint: Current Naver blog tab behavior requires ssc/tab parameters plus nso sort controls
Rejected: Keep where=blog and tune start values only | still returned repeated first-page results
Rejected: Leave sort=date as-is | current endpoint ignored it and returned relevance ordering
Confidence: medium
Scope-risk: narrow
Reversibility: clean
Directive: Re-verify request params against live Naver markup before changing paging or sort semantics again
Tested: python3 -m py_compile on naver-blog-research scripts and new regression test; PYTHONPATH=.:scripts python3 -m unittest scripts.test_naver_blog_search; npm run lint; live naver_search.py --count 20/30 --sort sim; live naver_search.py --count 10/20 --sort date
Not-tested: Full npm run test remains blocked by unrelated local pyexpat/libexpat environment failures in patent-search tests

* Surface the new Naver blog skill in the main README

PR 107 adds the skill and feature guide, but the repository landing page
still omitted it from the user-facing capability list. This commit keeps the
README aligned with the actual shipped skill set so users can discover the
new entry point from the main docs.

Constraint: README capability tables and feature lists should stay aligned with docs/features entries
Rejected: Leave README unchanged until merge | hides the new skill from the main index during PR review
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: When adding a new skill guide, update both the summary table and the included-features list together
Tested: README diff review; verified docs/features/naver-blog-research.md link target exists
Not-tested: Full npm run ci (docs-only change)

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Jeffrey (Dongkyu) Kim <vkehfdl1@gmail.com>
2026-04-13 00:06:18 +09:00

2.2 KiB

네이버 블로그 리서치 가이드

이 기능으로 할 수 있는 일

  • 네이버 블로그 키워드 검색 (관련도순/최신순 정렬)
  • 블로그 포스트 원문 텍스트 추출
  • 블로그 포스트 내 이미지 URL 추출 및 로컬 다운로드
  • 구글 검색과 병행한 한국어 콘텐츠 교차 검증 리서치

먼저 필요한 것

  • python3 3.8+
  • 인터넷 연결
  • API 키 불필요

입력값

  • 검색: 검색어 문자열 (예: "서울 맛집 추천")
  • 원문 읽기: 네이버 블로그 포스트 URL (PC 또는 모바일)
  • 이미지 다운로드: 이미지 URL 목록 또는 naver_read.py 파이프 출력

공식 표면

  • 검색: https://search.naver.com/search.naver?where=blog&query={query}
  • 블로그 원문 (모바일): https://m.blog.naver.com/{userId}/{postId}
  • 이미지 CDN: blogfiles.naver.net, postfiles.pstatic.net

기본 흐름

  1. naver_search.py로 네이버 블로그 검색 실행
  2. 검색 결과에서 상위 3~5개 포스트 선택
  3. naver_read.py로 선택한 포스트의 원문 읽기
  4. 필요 시 naver_download_images.py로 이미지 로컬 저장
  5. 구글 검색(WebSearch) 결과와 교차 검증하여 정보 신뢰도 확보

예시

블로그 검색:

python3 scripts/naver_search.py "제주도 여행 코스" --count 5 --sort sim

블로그 원문 읽기:

python3 scripts/naver_read.py "https://blog.naver.com/user123/224212849946"

이미지 다운로드:

python3 scripts/naver_read.py "https://blog.naver.com/user123/224212849946" \
  | python3 scripts/naver_download_images.py --output ./images/ --max 5

주의 사항

  • 네이버 검색엔진에 직접 요청하므로 대량 자동화 시 IP 차단 가능성이 있다. 한 세션에 과도한 요청을 자제한다.
  • 이 스킬은 소량·비상업적 콘텐츠 리서치 용도로 설계되었다.
  • 네이버 HTML 구조 변경 시 파싱이 실패할 수 있다. 에러 발생 시 스크립트 업데이트가 필요하다.
  • PC 버전(blog.naver.com)은 iframe 구조여서 모바일 버전(m.blog.naver.com)을 사용한다.
  • 블로그 출처(URL, 작성자)를 사용자에게 반드시 함께 안내한다.