검색 K
밝은/어두운 배경
밝은/어두운 배경
게시물 정보
스크래퍼가 생성하는 파일은 JSON 스토어와 Markdown 파일 두 종류입니다.
docs/
├── src/
│ ├── _data/ ← JSON 스토어 루트 (dataDir)
│ │ └── 2026/
│ │ └── 06/
│ │ ├── example-com.json
│ │ └── news-go-kr.json
│ │
│ └── {folderName}/ ← VitePress 소스 루트
│ ├── index.md ← 폴더 인덱스 (최초 1회 생성)
│ └── 2026/
│ ├── index.md ← 연도 인덱스 (최초 1회 생성)
│ └── 06/
│ └── {feedTitle}.md ← 피드별 월별 Markdownsrc/_data/{year}/{MM}/{urlToFileName(feedUrl)}.jsonurlToFileName() 변환 규칙: URL에서 프로토콜·슬래시·점을 하이픈으로 치환하고 소문자로 정규화합니다.
예시:
https://example.com/rss → example-com-rss.json
https://www.news.go.kr/rss/allNewsList.do → www-news-go-kr-rss-allnewslist-do.json동일 RSS URL을 여러 folderName에서 참조해도 JSON 파일은 하나만 생성됩니다.
{
"feedUrl": "https://example.com/rss",
"feedTitle": "예시 피드",
"year": 2026,
"month": 6,
"updatedAt": "2026-06-03T14:22:01.000+09:00",
"totalCount": 42,
"posts": [ /* PostRecord[] — pubDate 내림차순 */ ]
}{
// 식별자
"id": "example-com-rss-a1b2c3d4", // urlToFileName(feedUrl) + sha256(feedUrl:link) 앞 8자
// 피드 메타
"feedUrl": "https://example.com/rss",
"feedTitle": "예시 피드",
"sourceLink": "https://example.com",
// 포스트 원본
"link": "https://example.com/post/123",
"pubDate": "2026-06-01T09:00:00.000Z",
"title": "포스트 제목",
"author": "홍길동",
"category": "정책",
"tags": ["태그1", "태그2"],
"imageSrc": "https://example.com/img.jpg", // include_image = true 일 때만
"fullText": "본문 전체 텍스트...", // 길이 제한 없음
// 수집 메타
"collectedAt": "2026-06-03T14:22:01.000+09:00",
// 원문 보강 (현재는 항상 기본값)
"contentStatus": "none", // 'none' | 'pending' | 'fetched' | 'failed'
"content": null,
"contentFetchedAt": null,
// AI 분석 (현재는 항상 기본값)
"aiSummary": null,
"aiProcessedAt": null
}content와 aiSummary 필드는 향후 원문 수집·AI 요약 파이프라인을 위해 예약된 필드입니다. 현재 스크래퍼는 이 필드에 기록하지 않습니다.
src/{folderName}/{year}/{MM}/{feedTitle}.md예시:
src/policy-news/2026/06/환경부 공지사항.md동일 RSS URL이 두 folderName(policy-news, env-watch)에 등록된 경우:
src/policy-news/2026/06/환경부 공지사항.md ← 각각 생성
src/env-watch/2026/06/환경부 공지사항.mdJSON은 하나지만 Markdown은 folderName 수만큼 생성됩니다.
| 파일 | 생성 조건 |
|---|---|
src/{folderName}/index.md | 해당 경로가 없을 때 최초 1회 |
src/{folderName}/{year}/index.md | 해당 경로가 없을 때 최초 1회 |
이미 존재하면 덮어쓰지 않으므로, 내용을 수동으로 편집해도 유지됩니다.
---
date: 2026-06-01
updated: 2026-06-03T14:22:01.000+09:00
writers:
- 익숙해질기회
description: 피드 제목
pageClass: sysDocs
tags:
- 피드 제목
- 모니터링
- RSS
---
---
date: 2026-06-08
writers: claude.ai
description: 피드 제목
pageClass: sysDocs
tags:
- 기술 문서
- 운영 매뉴얼
- claude.ai
- 피드 제목
---
# 피드 제목
<div aria-hidden="true" class="aria-hidden">
:::info 게시물 정보
- 작성일: <Date />
- 글쓴이: <Writers />
- 주제어: <TagLinks />
:::
</div>
:::tip 게시물 정보
- 출처: [웹사이트](sourceLink) · [RSS](feedUrl)
- 마지막 업데이트: {{ $frontmatter.updated }}
:::
<Img s="/folderName/logo-assets/logo.png" ... /> ← logo_name 설정 시만
## [06.01] [포스트 제목](link)
:::info 포스트 정보 ← meta_display = true 일 때만
- **발행일**: 2026.06.01(월)
- **카테고리**: 정책
- **저자**: 홍길동
:::
본문 요약 텍스트 (최대 mdSummaryLength 글자)...
## [06.02] [다른 포스트 제목](link)
...매 스크래퍼 실행 시 Markdown 파일은 전체를 다시 씁니다. 부분 업데이트는 없습니다.
재빌드가 실행되는 경우:
재빌드가 실행되지 않는 경우:
피드가 철회(active = false, withdrawn_at IS NOT NULL)되면 다음 스크래퍼 실행 시 관련 파일이 삭제됩니다.
삭제 대상:
src/{folderName}/{year}/{MM}/{feedTitle}.md ← Markdown 파일
src/_data/{year}/{MM}/{urlToFileName}.json ← 해당 URL을 참조하는
active 피드가 없을 때만빈 디렉토리는 자동으로 정리됩니다. index.md만 남은 연도 디렉토리도 함께 삭제됩니다.