8.5 KiB
🦞 OpenClaw DeepReader
OpenClaw 에이전트의 기본 웹 콘텐츠 게이트웨이. X (Twitter), Reddit, YouTube 및 모든 웹페이지 읽기 — 제로 설정, 제로 API 키.
DeepReader는 OpenClaw 에이전트 프레임워크의 내장 콘텐츠 리더입니다. 대화에 URL을 붙여넣으면 DeepReader가 자동으로 가져오고, 파싱하고, 고품질 Markdown을 에이전트의 장기 메모리에 저장합니다. 소셜 미디어와 현대 웹을 위해 설계되었습니다.
🌍 번역: English · 中文 · Español · 日本語 · العربية · Français
⚡ 설치
npx clawhub@latest install deepreader
또는 수동 설치:
git clone https://github.com/astonysh/OpenClaw-DeepReeder.git
cd OpenClaw-DeepReeder
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
🎯 사용 시나리오
- 트윗, 스레드 또는 X 아티클을 읽어서 OpenClaw 메모리에 추가해야 할 때
- Reddit 게시물을 인기 댓글과 토론 컨텍스트와 함께 수집해야 할 때
- YouTube 자막을 나중에 참조하거나 분석하기 위해 저장하고 싶을 때
- 블로그, 기사 또는 문서 페이지를 깔끔한 Markdown으로 클리핑하고 싶을 때
- 에이전트에 기본 웹 리더가 필요할 때 — API 키 없이, 설정 없이 바로 작동
✨ 지원 소스
| 파서 | 소스 | 방법 | API 키? |
|---|---|---|---|
| 🐦 Twitter / X | 트윗, 스레드, X 아티클 | FxTwitter API + Nitter 대체 | ❌ 없음 |
| 게시물 + 댓글 스레드 | Reddit .json API |
❌ 없음 | |
| 🎬 YouTube | 동영상 자막 | youtube-transcript-api | ❌ 없음 |
| 🌐 모든 URL | 블로그, 기사, 문서 | Trafilatura + BeautifulSoup | ❌ 없음 |
API 키 제로. 로그인 제로. 속도 제한 제로. 붙여넣기만 하면 읽기.
🐦 Twitter / X — 심층 통합
FxTwitter API 기반. x-tweet-fetcher에서 영감을 받았습니다.
| 콘텐츠 유형 | 지원 |
|---|---|
| 일반 트윗 | ✅ 전체 텍스트 + 참여 통계 |
| 긴 트윗 (Twitter Blue) | ✅ 전체 텍스트 |
| X 아티클 (장문) | ✅ 전체 기사 + 단어 수 |
| 인용 트윗 | ✅ 중첩 콘텐츠 포함 |
| 미디어 (이미지, 동영상, GIF) | ✅ URL 추출 |
| 답글 스레드 | ✅ Nitter 대체를 통해 (처음 5개) |
| 참여 통계 | ✅ ❤️ 좋아요, 🔁 리트윗, 👁️ 조회, 🔖 북마크 |
🟠 Reddit — 네이티브 JSON 통합
Reddit의 내장 .json URL 접미사 사용 — API 키 불필요, OAuth 불필요, 등록 불필요.
| 콘텐츠 유형 | 지원 |
|---|---|
| 셀프 포스트 (텍스트) | ✅ 전체 Markdown 본문 |
| 링크 포스트 | ✅ URL + 메타데이터 |
| 인기 댓글 (점수순 정렬) | ✅ 최대 15개 댓글 |
| 중첩 답글 스레드 | ✅ 최대 3단계 깊이 |
| 미디어 (이미지, 갤러리, 동영상) | ✅ URL 추출 |
| 게시물 통계 | ✅ ⬆️ 점수, 💬 댓글 수, 추천 비율 |
| Flair 태그 | ✅ 포함 |
🚀 빠른 시작
from deepreader_skill import run
# 트윗 읽기 → 에이전트 메모리에 저장
result = run("이 트윗을 확인하세요: https://x.com/elonmusk/status/123456")
# Reddit 토론 읽기 → 게시물 + 인기 댓글 캡처
result = run("좋은 토론: https://www.reddit.com/r/python/comments/abc123/my_post/")
# YouTube 비디오 읽기 → 전체 자막 저장
result = run("이것을 보세요: https://youtube.com/watch?v=dQw4w9WgXcQ")
# 모든 기사 읽기 → 깨끗한 콘텐츠 추출
result = run("흥미로운 글: https://example.com/blog/ai-agents-2026")
# 여러 URL 일괄 처리
result = run("""
여기 몇 가지 링크가 있습니다:
https://x.com/user/status/123456
https://www.reddit.com/r/MachineLearning/comments/xyz789/new_paper/
https://youtube.com/watch?v=dQw4w9WgXcQ
https://example.com/article
""")
📓 NotebookLM & 오디오 통합
이제 DeepReader는 Google NotebookLM과 완벽하게 통합됩니다.
메시지에 notebooklm, audio 또는 podcast와 같은 키워드가 포함 된 경우 DeepReader는 자동으로 다음을 수행합니다:
- 요청된 URL을 Markdown으로 파싱합니다.
- Google NotebookLM 계정에 새 노트를 만듭니다.
- 깔끔한 Markdown 콘텐츠를 소스로 업로드합니다.
- (선택 사항) 매력적인 오디오 개요(팟캐스트 형식)를 생성하고 에이전트의 메모리 폴더에 직접 다운로드합니다.
지원되는 NotebookLM 아티팩트 생성: 오디오 개요와 함께 이 통합을 쉽게 확장하여 다음을 자동으로 생성하고 저장할 수 있습니다:
- 🎙️ Audio Overview (오디오 팟캐스트)
- 🎥 Video Overview (비디오 개요)
- 🧠 Mind Map (마인드맵)
- 📄 Reports (보고서)
- 📇 Flashcards (플래시카드)
- ❓ Quiz (퀴즈)
- 📊 Infographic (인포그래픽)
- 🖥️ Slide Deck (슬라이드 덱)
- 📈 Data Table (데이터 테이블)
⚠️ 참고: 인증 필요 NotebookLM 통합을 사용하기 전에 터미널에서 인증해야 합니다(이 작업은 한 번만 수행하면 됩니다):
notebooklm login
🏗️ 아키텍처
deepreader_skill/
├── __init__.py # 진입점 — run() 함수
├── manifest.json # 스킬 메타데이터 및 트리거 설정
├── SKILL.md # ClawHub 스킬 설명
├── requirements.txt # 의존성 목록
├── core/
│ ├── router.py # URL → 파서 라우팅 로직
│ ├── storage.py # Markdown 파일 생성 및 저장
│ └── utils.py # URL 추출 및 유틸리티 함수
└── parsers/
├── base.py # 추상 기본 파서 및 ParseResult 모델
├── generic.py # 범용 기사/블로그 파서
├── twitter.py # Twitter/X 파서 (FxTwitter + Nitter)
├── reddit.py # Reddit 파서 (.json API)
└── youtube.py # YouTube 자막 파서
🔧 설정
| 변수 | 기본값 | 설명 |
|---|---|---|
DEEPREEDER_MEMORY_PATH |
../../memory/inbox/ |
콘텐츠 저장 경로 |
DEEPREEDER_LOG_LEVEL |
INFO |
로깅 상세 수준 |
FIRECRAWL_API_KEY |
"" |
선택 사항. 설정 시 차단/유료 콘텐츠를 우회 스크래핑하는 Firecrawl의 폴백으로 사용됩니다. |
💡 왜 DeepReader인가?
| 기능 | DeepReader | 수동 스크래핑 | 브라우저 도구 |
|---|---|---|---|
| 트리거 | URL 자동 트리거 | 코드 작성 필요 | 수동 작업 |
| Twitter/X | ✅ 완전 지원 | ❌ 차단됨 | ⚠️ 부분적 |
| Reddit 스레드 | ✅ + 댓글 | ⚠️ 복잡 | ⚠️ 느림 |
| YouTube 자막 | ✅ 내장 | ❌ 별도 도구 | ❌ 불가 |
| API 키 | ❌ 불필요 | ✅ 자주 필요 | ✅ 때때로 |
| 출력 형식 | 깔끔한 Markdown | 원시 HTML | 스크린샷 |
| 메모리 통합 | ✅ 자동 저장 | ❌ 수동 | ❌ 수동 |
🙏 크레딧
- FxTwitter / FixTweet — Twitter/X 콘텐츠 가져오기용 공개 API
- x-tweet-fetcher — FxTwitter 통합 접근 방식에 영감
- Trafilatura — 강력한 웹 콘텐츠 추출
- youtube-transcript-api — YouTube 자막 가져오기
🤝 기여
기여를 환영합니다!
- 저장소를 Fork 합니다
- 기능 브랜치를 생성합니다 (
git checkout -b feature/amazing-parser) - 변경 사항을 커밋합니다 (
git commit -m '놀라운 파서 추가') - 브랜치를 푸시합니다 (
git push origin feature/amazing-parser) - Pull Request를 엽니다
📄 라이선스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 — 자세한 내용은 LICENSE 파일을 참조하세요.
OpenClaw에서 🦞 로 만들었습니다