
AI 에이전트와 함께 블로그를 읽기 위해 pluckmd를 사용하는 방법
요약
LLM 에이전트가 블로그 기사를 학습하고 위키에 인덱싱할 수 있도록 웹 콘텐츠를 마크다운으로 추출하는 도구인 pluckmd 사용법을 소개합니다. 별도의 설정 없이도 페이지네이션과 자바스크립트 렌더링을 지원하며, 로그인 기반 콘텐츠 처리 방법도 제공합니다.
핵심 포인트
- 웹 기사를 프론트매터가 포함된 마크다운으로 자동 변환
- 설정 없이 페이지네이션 및 JS 렌더링 자동 지원
- 브라우저 세션을 이용한 유료/로그인 콘텐츠 추출 가능
- LLM 기반 위키 구축을 위한 데이터 파이프라인 도구
저는 단순히 혼자 읽는 것이 아니라, LLM (Large Language Model)이 루프에 포함된 상태로 블로그 포스트를 읽고 싶었습니다.
이러한 욕구는 두 가지 계기에서 비롯되었습니다. 주제를 학습함에 따라 모델이 마크다운 (markdown) 노트 폴더를 유지하는 Karpathy의 LLM Wiki 아이디어, 그리고 현재 Anthropic 블로그에도 올라와 있는 Claude가 인터랙티브 HTML을 얼마나 잘 생성하는지에 대한 Thariq의 포스트입니다. 이 둘을 결합하여 제가 원했던 워크플로 (workflow)는 다음과 같았습니다: 블로그 기사를 마크다운으로 가져오고, 에이전트 (agent)가 이를 위키 (wiki)에 인덱싱하게 한 뒤, 학습을 위한 인터랙티브 HTML 페이지를 생성하는 것입니다.
첫 번째 단계가 걸림돌이었습니다. 웹사이트에서 깨끗한 기사를 추출하는 과정이 계속 실패했고, 모든 도구는 사이트마다 별도의 설정 (config)을 요구했습니다. 그래서 저는 오직 그 부분만을 처리하기 위해 pluckmd를 만들었습니다. 이 포스트는 제가 그것을 어떻게 사용하는지에 대한 내용입니다. 아키텍처 (architecture)에 대한 설명은 별도로 작성되었습니다.
배경 지식이 궁금하시다면 다음 참조 문헌을 확인하세요:
- Karpathy의 LLM Wiki: https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
- Thariq의 HTML의 비합리적 유효성 (The Unreasonable Effectiveness of HTML): https://x.com/trq212/status/2052809885763747935
기본 사례
npx pluckmd download https://example.com/blog -o ./articles
이 명령은 목록 페이지를 탐색하고, 페이지네이션 (pagination)을 따라가며, 각 기사를 가져와 프론트매터 (frontmatter: 제목, 날짜, 저자, 태그)가 포함된 마크다운으로 작성합니다. 작은 블로그의 경우 몇 초 안에 약 5개의 포스트를 저장할 수 있습니다. 사이트 설정도, 별도의 설정도 필요 없습니다.
만약 페이지에 자바스크립트 (javascript)가 많이 사용되었다면, 렌더링 (render)을 위해 조용히 실제 브라우저로 전환합니다. 사용자가 선택하는 것이 아니라 시스템이 결정합니다.
유료 및 로그인 전용 콘텐츠
제가 실제로 관심을 갖는 글의 상당수는 로그인 뒤에 숨겨져 있습니다. 이를 처리하는 두 가지 방법이 있습니다.
pluckmd login https://example.com/login
이 명령은 브라우저를 한 번 열고, 사용자가 수동으로 로그인하면 세션 (session)이 유지됩니다. 그 이후에는 일반적인 다운로드가 바로 작동합니다.
또는 자격 증명 (credentials)을 전혀 넘겨주고 싶지 않다면, 확장이 설치된 Chrome에서 페이지를 열고 다음을 실행하세요:
pluckmd download --active-tab -o ./articles
이 방식은 이미 로그인되어 있는 탭에서 직접 읽어옵니다. CLI 자체는 사용자의 쿠키 (cookies)를 절대 읽지 않습니다.
에이전트 (agent) 부분
이것이 제가 이 도구를 사용하는 이유입니다. 저는 실제로 대부분의 경우 CLI를 수동으로 실행하지 않습니다. pluckmd는 Claude Code와 Codex를 위한 스킬 (skills)을 제공하므로, 저는 그저 에이전트에게 말만 하면 에이전트가 저를 대신해 적절한 명령어를 실행합니다.
전체 학습 루프 (learning loop)는 세 개의 메시지로 이루어집니다:
https://example.com/blog에서 포스트들을 수집해줘
에이전트는 다운로드를 실행하고 모든 것을 raw/ 폴더에 마크다운 (markdown) 형식으로 저장합니다.
이것들로 위키 (wiki)를 만들어줘
에이전트는 마크다운을 읽고, 개념 (concepts)을 추출하여 위키 노트로 연결합니다 (Obsidian vault처럼 작동합니다). 이것이 Karpathy LLM Wiki 부분으로, 제가 학습함에 따라 모델이 유지 관리하는 노트 세트입니다.
이 개념을 위한 인터랙티브 HTML을 생성해줘
에이전트는 개념을 학습용 인터랙티브 HTML 페이지로 변환하는데, 이것이 Thariq HTML 아이디어입니다. 원본 파일은 건드리지 않은 채 유지되며, 위키와 HTML은 에이전트가 재생성하는 것들입니다.
따라서 저는 원할 때가 아니면 플래그 (flags)나 경로 (paths)를 전혀 건드리지 않습니다. 저는 원하는 것을 설명하고, 에이전트가 pluckmd를 구동합니다. 만약 추출 (extraction) 자체를 위한 LLM 키 (key)가 설정되어 있지 않더라도 여전히 작동합니다. pluckmd가 페이지를 설명하는 파일을 작성하면, 에이전트가 이를 읽고 추출 규칙 (extraction rules)을 만들어냅니다. 에이전트가 두뇌라면, CLI는 손입니다.
한계점
솔직히 말해서, 모든 사이트가 협조적인 것은 아닙니다. 휴리스틱 (heuristics)이 깔끔한 기사 패턴을 찾지 못해 에이전트 폴백 (fallback)에 의존해야 했던 레이아웃을 몇 번 만났습니다. 무한 스크롤 (infinite scroll) 피드는 '더 보기'가 어떻게 연결되어 있는지에 따라 성공 여부가 갈립니다. 만약 특이한 사이트에서 시도했다가 실패한다면, 저에게는 그것 또한 유용한 정보가 됩니다.
npm install -g pluckmd
Repo (MIT): https://github.com/taisei-ide-0123/pluckmd
사람들이 자신의 에이전트(agents)를 어디로 향하게 하는지 궁금하신가요? 위키(wiki)에서 가장 먼저 읽어들이길 원하는 내용은 무엇인가요?
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기