주요 콘텐츠로 건너뛰기

AI 질문이나 답변을 모아 두는 것은 어떨까..?

AI 질문이나 답변을 모아 두는 것은 어떨까..?

tankja | 수, 2026/07/01- 09:27
AI 질문이나 답변을 모아 두는 것은 어떨까..?

시민들의 의견

댓글 달기

Plain text

  • 웹 페이지 주소 및 이메일 주소는 자동으로 링크로 전환됩니다.
  • 줄과 단락은 자동으로 분리됩니다.
  • 사용할 수 있는 HTML 태그: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd>
이미지
무제한 수의 파일을 이 필드에 업로드할 수 있습니다.
50 MB 한계입니다.
허용된 유형: png gif jpg jpeg.
Enter the YouTube URL. Valid URL formats include: http://www.youtube.com/watch?v=1SqBdS0XkV4 and http://youtu.be/1SqBdS0XkV4.
CAPTCHA
스펨 사용자 차단 질문

가능합니다.

그리고 제가 보기에는 사용자님이 생각하는 방향이 오히려 구글보다 구현하기 쉽습니다.

왜냐하면 전체 웹을 색인(Indexing)하는 것이 아니라,

대한민국 사이트만 대상으로 메타 정보(title, url, 썸네일, 작성일, 본문 일부)만 수집하는 검색엔진

이기 때문입니다.


제가 추천하는 구조

          +--------------------+
          |  Seed 사이트 목록   |
          |  (10만~100만개)     |
          +---------+----------+
                    |
             Crawl Queue
                    |
      +-------------+-------------+
      |                           |
Crawler 1                    Crawler 2
Crawler 3                    Crawler 4
      |                           |
      +-------------+-------------+
                    |
              Parser
                    |
     title
     url
     body(150자)
     image
     date
     language
                    |
              MySQL / Elastic
                    |
            Search API
                    |
          React / Vue / Drupal

1. 먼저 사이트 목록 확보

예를 들어

https://www.korea.kr
https://news.naver.com
https://www.yna.co.kr
https://www.hankyung.com
https://blog.naver.com
https://cpmadang.org
...

또는

robots.txt
sitemap.xml
RSS

를 통해 새로운 URL을 계속 확보합니다.


2. 크롤러

Python이 가장 좋습니다.

예를 들면

aiohttp
httpx
BeautifulSoup
lxml
selectolax

이 정도면 충분합니다.

크롤러는

GET

↓

HTML

↓

파싱

↓

DB 저장

만 하면 됩니다.


3. 저장하는 데이터

예를 들어

id

url

domain

title

description

body

thumbnail

published_at

updated_at

language

status

crawl_time

hash

본문은

150자

정도만 저장하면 됩니다.

예)

윤석열 전 대통령은 ...

...

...

...

...

150자만.


4. 썸네일

대부분

<meta property="og:image">

를 사용합니다.

예를 들면

<meta property="og:image"
content="https://....jpg">

이것만 읽으면 됩니다.

없으면

첫 번째 이미지

를 사용하면 됩니다.


5. 작성일

우선순위

article:published_time

↓

time 태그

↓

JSON-LD

↓

RSS

↓

없으면 Crawl 날짜

6. 제목

<title>

또는

og:title

7. body

가장 어려운 부분입니다.

뉴스 사이트마다

article

main

div.article

div#content

등 구조가 다릅니다.

그래서

Python의 Readability 같은 라이브러리를 이용하면 거의 자동으로 본문을 추출할 수 있습니다.

readability-lxml

trafilatura

goose3

이 세 가지가 많이 사용됩니다.


8. 검색

검색은

MySQL

FULLTEXT

도 가능하지만,

추천은

Elasticsearch

또는

OpenSearch

입니다.

그러면

후보

광명

이재명

AI

검색 속도가 엄청 빠릅니다.


9. 크롤링 서버

저라면

Ubuntu 서버 하나에

Supervisor

↓

Crawler

↓

RabbitMQ

↓

Parser

↓

MySQL

↓

OpenSearch

이렇게 구성합니다.


하루에 얼마나 가능할까?

예를 들어

100개의 비동기 요청만 돌려도

1초

↓

100페이지

가능합니다.

보수적으로 계산하면

1분

6,000페이지

1시간

360,000페이지

하루

800만~1000만 페이지

도 가능합니다.

물론 robots.txt 준수, 요청 간격 조절, 사이트별 속도 제한 등을 적용해야 합니다.


하지만 더 좋은 방법이 있습니다.

사실 구글도 처음부터 HTML만 무한 크롤링하지는 않습니다.

대한민국 사이트라면 많은 곳이

sitemap.xml

을 제공합니다.

예를 들어

https://사이트/sitemap.xml

만 읽으면

URL

작성일

변경일

을 거의 공짜로 얻을 수 있습니다.

그 후

변경된 URL만 크롤링

하면 됩니다.

속도가 수십 배 빨라집니다.


제가 추천하는 최종 구조

사용자님이 운영하는 시민정치마당(cpmadang.org)과도 잘 맞는 구조입니다.

① Seed 사이트 수집
        │
        ▼
robots.txt
sitemap.xml
RSS
        │
        ▼
URL Queue (Redis)
        │
        ▼
Python Async Crawler (httpx + aiohttp)
        │
        ▼
본문 추출 (Trafilatura / Readability)
        │
        ▼
MySQL (메타데이터 저장)
        │
        ▼
OpenSearch (검색 색인)
        │
        ▼
FastAPI 검색 API
        │
        ▼
Drupal 또는 Vue/React 프론트엔드

이 방식이면 수백만~수천만 페이지 규모까지 확장할 수 있습니다.


추가로 한 가지 제안을 드리면, 단순한 검색엔진보다 "대한민국 공개 웹 인덱스(Korea Web Index)"를 목표로 하면 활용도가 훨씬 높습니다. 검색뿐 아니라 API를 제공하여 다른 서비스에서도 사용할 수 있습니다.

예를 들어 페이지마다 다음과 같은 정보를 저장할 수 있습니다.

  • URL

  • 제목

  • 150자 요약

  • 썸네일

  • 작성일

  • 사이트명

  • 카테고리(뉴스, 블로그, 공공기관, 기업 등)

  • 언어

  • Open Graph 정보

  • 본문 해시값(중복 제거)

  • 마지막 크롤링 시간

  • 검색 점수

이렇게 구축하면 검색 서비스뿐 아니라 AI 학습용 RAG, 뉴스 분석, 정치·사회 이슈 모니터링 등 다양한 서비스의 기반 데이터베이스로도 활용할 수 있습니다. 저는 이 방향이 장기적으로 더 가치가 있다고 봅니다.

수, 2026/07/01- 09:24
1
0