파싱 룰 생성
새로운 웹소설 사이트를 지원하기 위한 파싱 룰을 생성합니다.
파싱 룰이란? (쉬운 설명)
파싱 룰은 웹소설 사이트에서 “어디에 제목이 있고, 어디에 본문이 있는지” 알려주는 지도 같은 것입니다.
왜 필요할까요?
웹소설 사이트마다 페이지 구조가 다릅니다. 예를 들어:
- A 사이트: 제목이 페이지 맨 위에 있음
- B 사이트: 제목이 왼쪽 사이드바에 있음
- C 사이트: 제목이 본문 바로 위에 있음
Transy가 소설을 제대로 가져오려면 “이 사이트에서는 제목이 여기 있어요”라고 알려줘야 합니다. 이것이 바로 파싱 룰입니다.
비유로 이해하기
파싱 룰은 마치 보물찾기 지도와 같습니다:
- “제목은 페이지 상단의 큰 글씨에서 찾아!”
- “회차 목록은 가운데 있는 목록에서 찾아!”
- “본문은 광고 아래 있는 텍스트에서 찾아!”
파싱 룰이 필요한 경우
언제 파싱 룰이 필요할까요?
Transy에는 이미 많은 사이트의 파싱 룰이 내장되어 있습니다. 하지만 다음 경우에는 새 파싱 룰이 필요합니다:
| 상황 | 설명 |
|---|---|
| 새로운 사이트 | 앱에서 지원하지 않는 사이트 |
| 사이트 변경 | 기존 사이트 구조가 바뀐 경우 |
| 특수한 사이트 | 로그인이나 캡차가 필요한 사이트 |
파싱 룰이 없으면?
URL을 입력했을 때 이런 메시지가 나타납니다:
이 사이트에 대한 파싱 룰이 없습니다.
새 파싱 룰을 생성하시겠습니까?
파싱 룰 생성하기: 단계별 가이드
시작하기 전에 준비할 것
- 목차 페이지 URL: 회차 목록이 있는 페이지
- 예:
https://example.com/novel/12345(소설 정보 + 회차 목록)
- 예:
- 본문 페이지 URL: 아무 회차의 본문 페이지
- 예:
https://example.com/novel/12345/chapter/1(1화 내용)
- 예:
방법 1: 소설 추가할 때 자동으로
- URL 입력 후 “불러오기” 클릭
- “파싱 룰이 없습니다” 메시지 확인
- “룰 생성” 버튼 클릭
방법 2: 설정에서 직접
- 설정 > “파싱 룰 관리” 선택
- “AI로 룰 생성” 클릭
1단계: URL 입력
필수 입력
| 입력 항목 | 무엇을 넣나요? | 예시 |
|---|---|---|
| 목차 페이지 URL | 회차 목록이 보이는 페이지 | https://novel-site.com/book/123 |
| 본문 페이지 URL | 1화(또는 아무 회차)의 본문 페이지 | https://novel-site.com/book/123/ch/1 |
어떤 URL을 입력해야 할까요?
올바른 예:
- 목차: 소설 정보와 회차 목록이 함께 보이는 페이지
- 본문: “1화”, “프롤로그” 등 실제 소설 내용이 있는 페이지
잘못된 예:
- 사이트 메인 페이지 (소설 목록 페이지)
- 검색 결과 페이지
- 작가 프로필 페이지
고급 설정 (선택사항)
대부분의 경우 기본 설정으로 충분합니다. 하지만 특수한 사이트에서는:
| 설정 | 언제 사용하나요? |
|---|---|
| 캡차/로그인 있음 | Cloudflare 보안, 로그인 필요 사이트 |
| 로그인 URL | 로그인 페이지 주소 |
| 인증 쿠키명 | 로그인 확인용 쿠키 (고급) |
AI 힌트
사이트의 특성을 알려주면 AI가 더 정확하게 분석합니다:
| 힌트 | 어떤 사이트에 체크하나요? |
|---|---|
| 무한스크롤 | 스크롤하면 회차가 계속 나오는 사이트 |
| 더보기 버튼 | “더보기” 클릭해야 전체 목록 보이는 사이트 |
| 페이지네이션 | 1, 2, 3… 페이지로 회차가 나눠진 사이트 |
| 역순 정렬 | 최신화가 맨 위에 있는 사이트 |
2단계: AI 분석 결과 확인
AI가 사이트를 분석하고 결과를 보여줍니다.
확인해야 할 항목
| 항목 | 설명 | 예시 |
|---|---|---|
| 제목 | 소설 제목이 맞나요? | “나 혼자만 레벨업” |
| 작가 | 작가 이름이 맞나요? | “추공” |
| 회차 목록 | 전체 회차가 다 보이나요? | 1화, 2화, 3화… |
| 본문 | 소설 내용만 보이나요? | 광고 없이 깔끔하게 |
결과가 이상하다면?
걱정하지 마세요! 직접 선택 기능으로 수정할 수 있습니다.
직접 선택 기능 (중요!)
AI가 잘못 분석했을 때 직접 올바른 위치를 지정할 수 있습니다.
직접 선택이란?
웹페이지에서 원하는 부분을 손가락으로 터치하면, 그 위치를 자동으로 기억하는 기능입니다.
직접 선택 사용 방법
- “직접 선택” 버튼 클릭
- 수정하고 싶은 항목 옆의 버튼 클릭
- WebView 열림
- 실제 웹페이지가 화면에 표시됨
- “선택 시작” 버튼 클릭
- 선택 모드 활성화
- 원하는 요소 터치
- 예: 제목을 터치하면 제목 위치가 저장됨
- “적용” 클릭
- 선택한 위치가 저장됨
직접 선택 예시
예시 1: 제목이 잘못 추출될 때
문제: "소설제목 - 웹사이트명"으로 추출됨
해결:
1. 제목 옆 "직접 선택" 클릭
2. 웹페이지에서 실제 제목만 터치
3. "나 혼자만 레벨업"만 선택됨!
예시 2: 회차 목록이 일부만 보일 때
문제: 10화까지만 추출됨 (실제로는 100화까지 있음)
해결:
1. 회차 목록 옆 "직접 선택" 클릭
2. 전체 회차가 있는 영역 터치
3. 또는 "더보기" 버튼 터치하여 전체 로드
예시 3: 본문에 광고가 포함될 때
문제: 번역 결과에 광고 문구가 섞임
해결:
1. 본문 옆 "직접 선택" 클릭
2. 순수한 소설 내용 영역만 터치
3. 광고 제외됨!
직접 선택 팁
| 상황 | 해결 방법 |
|---|---|
| 선택이 너무 넓음 | 더 작은 영역 터치 |
| 선택이 너무 좁음 | 더 넓은 영역 터치 |
| 여러 번 시도해도 안 됨 | JSON 편집 사용 (고급) |
3단계: 검증 및 저장
검증이란?
생성된 파싱 룰이 제대로 작동하는지 테스트하는 것입니다.
검증 결과 확인
| 항목 | 확인 사항 | 성공 기준 |
|---|---|---|
| 제목 | 소설 제목이 맞나요? | 정확한 제목 표시 |
| 작가 | 작가 이름이 맞나요? | 정확한 작가명 표시 |
| 회차 수 | 전체 회차가 추출되나요? | 예상 회차 수와 일치 |
| 본문 | 내용만 깔끔하게 나오나요? | 광고/메뉴 없음 |
검증 점수
검증 결과가 점수로 표시됩니다:
- 90% 이상: 아주 좋음! 바로 사용 가능
- 70~89%: 대체로 괜찮음
- 70% 미만: 일부 수정 필요
파싱 테스트
같은 사이트의 다른 소설로 테스트해볼 수 있습니다.
- “파싱 테스트” 버튼 클릭
- 같은 사이트의 다른 소설 URL 입력
- 정상적으로 파싱되는지 확인
저장
검증에 성공하면 “저장” 버튼을 클릭합니다.
저장 후에는:
- 해당 사이트의 모든 소설에 사용 가능
- 설정 > 파싱 룰 관리에서 확인 가능
특수한 사이트 처리하기
로그인 필요 사이트
일부 사이트는 로그인해야 소설을 볼 수 있습니다.
처리 방법:
- 파싱 룰 생성 시작
- WebView가 열리면 해당 사이트에 로그인
- 로그인 완료 후 파싱 계속 진행
- 쿠키가 자동 저장되어 이후에도 접근 가능
Cloudflare 보안 사이트
“사람인지 확인” 화면이 나오는 사이트입니다.
처리 방법:
- “캡차/로그인 있음” 옵션 체크
- WebView에서 보안 검사 직접 통과
- 통과 후 파싱 자동 진행
캡차 사이트
이미지나 퍼즐을 풀어야 하는 사이트입니다.
처리 방법:
- WebView에서 캡차 직접 해결
- 해결 후 파싱 자동 진행
파싱 룰 관리
파싱 룰 목록 보기
설정 > 파싱 룰 관리
내장 파서 vs 사용자 정의 룰
| 구분 | 설명 | 수정 가능? |
|---|---|---|
| 내장 파서 | 앱에 기본 포함된 룰 | 아니오 |
| 사용자 정의 | 직접 만든 룰 | 예 |
룰 관리 기능
| 기능 | 설명 |
|---|---|
| 편집 | 기존 룰 수정 |
| 삭제 | 사용하지 않는 룰 제거 |
| 이름 변경 | 룰 이름 바꾸기 |
| 내보내기 | JSON 파일로 저장 (공유용) |
| 가져오기 | JSON 파일에서 룰 추가 |
친구와 파싱 룰 공유하기
- 내가 만든 룰 “내보내기”
- JSON 파일을 친구에게 전송
- 친구가 “가져오기”로 룰 추가
- 친구도 같은 사이트 이용 가능!
문제 해결
“룰 생성에 실패했습니다”
원인과 해결:
| 원인 | 해결 방법 |
|---|---|
| 사이트 접근 불가 | 브라우저에서 사이트 열리는지 확인 |
| 복잡한 사이트 구조 | 직접 선택 기능 사용 |
| API 오류 | 잠시 후 재시도 |
제목/작가가 잘못 추출됨
해결 방법:
- 분석 결과 화면에서 해당 항목의 “직접 선택” 클릭
- WebView에서 올바른 요소 터치
- “적용” 후 재검증
회차가 일부만 추출됨
원인과 해결:
| 원인 | 해결 방법 |
|---|---|
| 페이지네이션 | AI 힌트에서 “페이지네이션” 체크 |
| 무한스크롤 | AI 힌트에서 “무한스크롤” 체크 |
| 더보기 버튼 | AI 힌트에서 “더보기 버튼” 체크 |
| 동적 로딩 | 대기 선택자 설정 (고급) |
본문에 광고가 포함됨
해결 방법:
- “직접 선택”으로 본문 영역만 정확히 지정
- 또는 소설별 설정에서 필터 강도 증가
인증이 계속 필요함
해결 방법:
- “캡차/로그인 있음” 옵션 활성화
- 올바른 인증 쿠키명 입력 (고급)
- 로그인 URL 정확히 입력
고급 기능
JSON 직접 편집
기술에 익숙한 분들은 JSON을 직접 편집할 수 있습니다.
동적 로딩 설정
JavaScript로 회차 목록을 불러오는 사이트용:
| 설정 | 설명 |
|---|---|
| Jsoup 우선 사용 | 정적 사이트에서 더 빠름 |
| 챕터 목록 API URL | Ajax 엔드포인트 (개발자용) |
| 대기 선택자 | 특정 요소가 나타날 때까지 대기 |
도움이 필요하신가요?
파싱 룰 생성이 어려우시면:
- 앱 피드백으로 사이트 지원 요청
- 이메일: bran290.dev@gmail.com
요청 시 다음 정보를 포함해 주세요:
- 사이트 URL
- 어떤 문제가 발생했는지
- 시도해본 방법
| ← API 사용량 모니터링 | 다음: 번역 프롬프트 커스터마이징 → |