Communitygithub.com

RSS / Atom 피드 리더

표준 라이브러리만으로 RSS 2.0 또는 Atom 피드를 정규화된 항목 딕셔너리(title, link, id, published, summary)로 파싱합니다. feedparser 없이 사용자가 RSS/Atom 피드를 읽거나, 블로그/뉴스 피드를 폴링하거나, 피드 항목을 추출하거나, 피드를 게시하는 사이트를 감시할 때 사용하세요.

Atom 피드 리더란 무엇인가요?

이 스킬은 Python의 `xml.etree.ElementTree`만 사용하여 RSS 2.0 및 Atom 피드를 파싱하는 경량 유틸리티를 제공합니다. 주요 목적은 두 피드 형식에서 `title`, `link`, `id`, `published`, `summary` 필드를 추출하여 단일 표준화된 딕셔너리 세트를 생성하는 것입니다. 이를 통해 다운스트림 코드(중복 제거, 다이제스트, 알림)가 피드 유형에 따라 분기할 필요가 없어집니다. 이 스킬은 Claude Code, Cursor, Codex 등의 AI 코딩 에이전트 환경에서 사용자가 RSS/Atom 피드를 읽거나, 블로그 피드를 폴링하거나, 최신 항목을 가져오거나, 사이트의 새 게시물을 감시하도록 요청할 때 이상적입니다. 또한 `feedparser` 같은 외부 패키지를 설치할 수 없는 제한된 환경에서 유용하며, `assets/feed.py` 파일 형태로 참조 구현을 제공합니다. 이 스킬은 작성자의 뉴스 수집 프로젝트에서 추출되었으며, `gmail-imap-digest`, `sqlite-state`, `pipeline-orchestrator` 같은 다른 스킬과 함께 사용하여 완전한 자동화 봇을 구축할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/baronguyen001/ai-automation-skills/tree/HEAD/skills/rss-feed-reader

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Atom 피드 리더은(는) 무엇을 하나요?

스크립트가 피드를 읽어야 하고, RSS 2.0과 Atom 모두에서 동일한 표준화된 형태를 원하며, 타사 의존성을 원하지 않을 때 이 스킬을 사용하세요. 단일 ElementTree 패스로 title, link, id, published, summary를 두 형식에서 모두 추출하므로, 다운스트림 코드(중복 제거, 다이제스트, 알림)는 피드 유형에 따라 분기할 필요가 없습니다.

호출 시점

  • 사용자가 "이 RSS 피드를 읽어줘", "블로그 피드를 폴링해줘", "Atom 피드에서 최신 항목을 가져와줘", "새 게시물이 있는지 사이트를 감시해줘"라고 말할 때.
  • 코드가 이미 피드 바이트를 가져왔고 구조화된 항목이 필요할 때.

호출하지 말아야 할 경우

  • 소스에 실제 JSON API가 있는 경우 - 피드를 스크래핑하는 대신 API를 호출하세요.
  • 완전한 feedparser의 비정상 처리(모든 변형된 방언)가 필요한 경우 - feedparser를 설치하세요.

구체적인 예제

사용자 입력:

https://example.com/feed.xml을 읽고 각 게시물의 제목과 링크를 출력해줘.

출력:

# assets/feed.py를 프로젝트에 복사한 후:
from urllib.request import urlopen
from feed import parse_feed

with urlopen("https://example.com/feed.xml", timeout=20) as r:
    for item in parse_feed(r.read()):
        print(item["title"], "->", item["link"])

피드가 RSS든 Atom이든 모든 항목은 동일한 키를 가진 딕셔너리이므로, 특별한 경우를 나누지 않고 id로 중복 제거하고 published로 정렬할 수 있습니다.

적용 패턴

  1. xml.etree.ElementTree로 한 번 파싱; item(RSS)과 {atom}entry(Atom)를 순회합니다.
  2. 안정적인 키 세트로 정규화하여 나머지 파이프라인이 피드 형식에 구애받지 않도록 합니다.
  3. guid/atom id가 없으면 링크로 대체하여 모든 항목이 중복 제거를 위한 안정적인 ID를 갖도록 합니다.
  4. 네트워크를 파서 밖으로 유지: 바이트/텍스트를 전달하여 순수하고 테스트 가능하게 유지합니다.

참고: assets/feed.py.

출처

작성자의 뉴스 수집 프로젝트에서 추출했습니다. v1.0.0.

관련 스킬: [[gmail-imap-digest]], [[sqlite-state]], [[pipeline-orchestrator]].

→ Trawlkit으로 완전히 실행 가능한 봇을 구축하세요.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

baronguyen001/ai-automation-skills

Schedule any script to run on a recurring schedule on Windows (Task Scheduler) or Linux (cron) - register, list, and remove jobs from one command, with logging to a file and a guard against overlapping runs. Use for schedule a script, run nightly, set up a cron job, windows task scheduler, or run on a timer.

baronguyen001/ai-automation-skills

Turn a run's list of result dicts into a schema'd CSV and a Markdown table from one column spec - declare columns once, emit both, with stable ordering and safe escaping, stdlib only, no pandas. Use when the user asks to write results to CSV, export a report, make a markdown summary table, or save a run's output as a spreadsheet.

baronguyen001/ai-automation-skills

Strip HTML to clean plain text with the standard library only (no BeautifulSoup/lxml): drops script/style, turns block tags into line breaks, and collapses whitespace. Use when the user wants readable text from an HTML page/email, to clean scraped HTML before sending it to an LLM, or to build a text index from web content.

baronguyen001/ai-automation-skills

Persist records between scheduled runs as append-only JSON Lines (one object per line) with streaming reads and optional key-based dedup, stdlib only. Use when the user wants to log run results to JSONL, append events to a file, dedup records by id across runs, or keep a simple durable history without a database.

baronguyen001/ai-automation-skills

Extract text and simple table-like rows from a PDF for downstream AI without OCR binaries. Use when the user asks to read a PDF, turn a PDF into text, pull simple tables from statements/reports, or feed PDF content into an LLM pipeline.

baronguyen001/ai-automation-skills

Rotate a pool of HTTP/SOCKS proxies with round-robin selection, failure tracking, and a cooldown that benches dead proxies before retrying. BYO proxy list via env - none are shipped. Use for rotate proxies, spread requests across proxies, avoid IP bans, retry through a different proxy, or proxy health check.

baronguyen001/ai-automation-skills

Upload and download run artifacts from S3-compatible storage with BYO bucket and credentials from env. Use when the user asks to store scraper output, archive reports, publish artifacts to object storage, fetch a prior run file, or use MinIO/R2/Spaces/S3 without hardcoding credentials.

baronguyen001/ai-automation-skills

Draft a short-form TikTok/Reels/Shorts or long-form video script from a topic and creator persona file - hook variants, beat-structured body, CTA, b-roll cues, caption overlays, and [STORY]/[NUMBER] slots so the model never fabricates personal facts. Use for write a video script, tiktok script, youtube script, or /shortform-script.

baronguyen001/ai-automation-skills

Give scheduled scripts memory between runs with one SQLite file - a seen-set for dedup, a key/value cursor to resume where you left off, and order-preserving new-item filtering. Use for dedup across runs, don't re-alert the same item, remember the last id, resume a scraper, or persist state between cron runs.

관련 스킬