네이버 카페(가입)
채널 코드 naver_cafe_member · 수집 환경 linux
404 unknown_channel). 아래 내용은 참고용입니다.요청 파라미터
아래 값들을 POST /api/v1/collect 의 params 객체에 담아 보냅니다.
| 키 | 타입 | 필수 | 기본 | 설명 |
|---|---|---|---|---|
| cafe | text | 예 | — | 카페 슬러그 또는 주소(예: robotclear 또는 https://cafe.naver.com/robotclear). 숫자 cafe_id는 자동 해석 |
| keyword | text | 예 | — | 카페 내 검색 키워드 |
| naver_id | text | 예 | — | 회원 전용 카페 접근용. 세션은 쿠키로 재사용됨 |
| naver_pw | password | 예 | — | 마스킹 입력. 로그/응답에 노출되지 않습니다 |
| limit | number | — | 100 | 최대 수집 글 수 |
| max_pages | number | — | 10 | 검색 결과 페이지 탐색 한도 |
| start_date | date (YYYY-MM-DD) | — | — | 비우면 제한 없음. 최신순이라 이 날짜 이전 글을 만나면 종료 |
| end_date | date (YYYY-MM-DD) | — | — | 당일 포함. 비우면 오늘까지 |
| cafe_menu | text | — | — | 특정 게시판만. 비우면 0(전체글) |
| collect_body | bool | — | true | 글 상세를 받아 본문·정확한 시각 보강 |
| collect_comments | bool | — | false | 상세의 댓글까지 수집(각 글 extra.comments[]) |
| exclude_keywords | text | — | — | 이 단어가 들어간 글은 제외. 쉼표로 여러 개, 한 단어 안 띄어쓰기 허용 |
start_date ~ end_date)검색은 최신순이라 위에서부터 훑어 내려갑니다.
- 둘 다 비우면 → 가장 최신 글부터
limit개수까지 수집합니다. start_date만 → 그 날짜 이후 글만 (그보다 오래된 글을 만나면 수집 종료).end_date만 → 그 날짜까지(당일 포함). 그보다 최신 글은 건너뜁니다.- 둘 다 → 두 날짜 사이 구간만 수집.
exclude_keywords)이 단어가 들어간 글은 수집 단계에서 걸러집니다. 쉼표(
,)로 여러 개를 넣고,
한 단어 안에 띄어쓰기도 쓸 수 있습니다(예: "무료 나눔, 광고" → 무료 나눔·광고 두 개).
대소문자는 구분하지 않고 부분 일치로 판정합니다.
- 기본은 제목 기준 — 상세 요청을 보내기 전에 걸러서 빠르고, 수집 상한(
limit)도 차감하지 않습니다. - 본문 수집(
collect_body: true)을 켜면, 이미 받아온 본문에서도 한 번 더 걸러냅니다(추가 요청 없음). - 비우면 → 제외 없이 전부 수집.
collect_comments: true)기본은 제목·본문만 HTTP로 빠르게 수집합니다. 댓글까지 받으려면 이 값을 켜세요. 댓글은 JS로 로드되어 글마다 Chrome으로 접속하므로 시간이 더 걸립니다(댓글 0개 글은 건너뜀). 수집된 댓글은 각 글의
extra.comments[] 배열에 담깁니다.
회원 전용 카페라 네이버 로그인이 필요합니다. 아래 오류는 다시 시도해도 같은 결과이고, 반복 로그인은 계정 잠금까지 부를 수 있어 한 번 시도 후 곧바로
failed로 끝냅니다(자동 재시도 안 함).
일시적 오류(페이지 로드 실패·네트워크 등)만 기존처럼 재시도합니다. 사유는 GET /requests/{id}의 error로 옵니다.
네이버 로그인 실패 — 아이디/비밀번호 확인→naver_id·naver_pw값을 다시 확인하세요.네이버 캡차(보안문자) / 새 기기 인증 / 2단계 인증 필요→ 해당 계정으로 이 수집 서버에서 1회 수동 로그인·인증 후 다시 요청하세요(이후 세션 쿠키 재사용).회원 전용 카페 — 접근 불가/cafe_id 자동 해석 실패→ 그 계정이 카페에 가입(회원)되어 있는지,cafe슬러그/URL이 맞는지 확인하세요.
naver_id·naver_pw를 아예 빼고 보내면 요청 즉시 422 invalid_params로 거부됩니다(잡 생성 안 됨). 위 failed는 값은 보냈으나 틀렸을 때입니다. 비밀번호는 로그·응답 어디에도 노출되지 않습니다.요청 예시
응답 (202 Accepted)
요청은 즉시 큐에 적재되고 request_id 를 돌려줍니다. 실제 수집은 워커가 비동기로 처리합니다.
결과 조회 — GET /requests/{id}
같은 API 키로 request_id 를 조회합니다. 상태에 따라 응답이 달라집니다.
결과(items)는 요청별로 보관되므로 같은 글이 다른 요청(다른 키워드·재수집)에 겹쳐도 이 요청의 결과는 그대로입니다 —
여러 요청에 걸친 중복 정리는 post_id로 호출 쪽에서 하세요.
보존 기간은 완료 후 90일입니다. 보존 기간이 지나면 items 는 빈 배열이고 items_expired: true, items_keep_days 가 함께 옵니다(status 는 그대로 done).
진행 중 (pending / running)
아직 끝나지 않았으면 progress 로 진행 상황만 옵니다(items 없음).
완료 (done) — 댓글 포함
status 가 done 이면 data.items[] 에 결과가 담깁니다.
실패 시엔 status: "failed" 와 error 가 옵니다.
실패 (failed)
status 가 failed 면 error 에 사유가 옵니다(items 없음).
네이버 로그인 자격증명·인증 오류는 자동 재시도되지 않습니다(위 안내 참고).
최상위 data에는 항상 request_id·channel·status·external_ref·result_count·started_at·finished_at·duration_ms·duration_sec·created_at·updated_at이 포함되고, 상태에 따라 items(done)·progress+elapsed_ms(진행 중)·error(failed/cancelled)가 추가됩니다. duration_*는 허브가 잰 수집 소요 시간(시작~종료) — 자세히는 비동기 & 콜백. 요청을 잘못 시작했다면 취소 API로 중단할 수 있습니다.
결과 필드 (items[])
| 필드 | 설명 |
|---|---|
| post_id | 글 고유 ID — 숫자 cafe_id/글번호. 재수집 중복 제거 키 |
| url | 원문 주소 |
| title / body | 제목 / 본문 — collect_body=false면 본문은 빈 값(목록에 본문이 없음), true면 전체 본문 |
| author | 작성자 닉네임 |
| posted_at | 작성 시각 (ISO8601, KST) |
| views / comment_count | 조회수 / 댓글 수 |
| recommends | 미제공 — 항상 null |
| source | 네이버 카페 / 슬러그(또는 숫자 cafe_id) |
| extra.cafe_id | 숫자 카페 ID(자동 해석) |
| extra.cafe_menu | 게시판 메뉴 ID(전체글=0) |
| extra.club_slug | 카페 슬러그 |
| extra.article_no | 글번호 |
| extra.source_kind | cafe_member_search |
| extra.comments | 댓글 배열(아래 표) — collect_comments=true일 때 |
- 회원 전용 카페라 네이버 로그인 세션이 필요합니다(허브 수집 인증). 목록에 조회수가 없는 레이아웃에서는 조회수가 0일 수 있습니다.
댓글 필드 (extra.comments[])
| 필드 | 설명 |
|---|---|
| comment_id | 댓글 고유 ID |
| author | 작성자 |
| text | 내용 — 글자 없이 이미지·스티커(디시콘 등)만 있는 댓글은 [이미지] 같은 대체 텍스트 또는 빈 문자열 |
| date | 작성 시각 |
| is_reply | 대댓글 여부(true=답글) |
결과 수신(폴링·콜백) 방식은 비동기 & 콜백을 참고하세요.