RSS(Really Simple Syndication)는 웹사이트의 콘텐츠 업데이트를 쉽게 확인할 수 있게 해주는 피드 형식입니다. XML 형식으로 데이터를 제공하는데, 실제로 한번 살펴볼까요?
티스토리의 RSS 피드를 브라우저에서 열어보면 이런 형태로 되어있습니다:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>블로그 제목</title>
<link>https://example.tistory.com</link>
<item>
<title>첫 번째 글</title>
<link>https://example.tistory.com/1</link>
<description>글 내용...</description>
<pubDate>Wed, 15 Jan 2025 12:00:00 +0900</pubDate>
</item>
<!-- 더 많은 item들... -->
</channel>
</rss>
RSS의 장점 |
RSS 피드를 파싱한다는 것은 이 XML 데이터를 우리가 사용하기 좋은 형태로 변환하는 것을 말합니다. Node.js에서는 rss-parser
라이브러리를 사용하면 아주 쉽게 할 수 있어요.
import Parser from 'rss-parser';
const parser = new Parser();
// RSS 피드 파싱하기
const feed = await parser.parseURL('https://example.tistory.com/rss');
console.log(feed.title); // 블로그 제목
feed.items.forEach(item => {
console.log(item.title); // 각 글의 제목
console.log(item.link); // 각 글의 링크
});
파싱된 결과는 이런 형태의 JavaScript 객체가 됩니다!
{
title: "블로그 제목",
items: [
{
title: "첫 번째 글",
link: "https://example.tistory.com/1",
pubDate: "2025-01-15T12:00:00+09:00"
},
// 더 많은 글들...
]
}
GitHub Actions는 GitHub에서 제공하는 자동화 도구입니다. CI/CD(지속적 통합/배포)를 위한 도구지만, 우리처럼 다른 자동화 작업에도 활용할 수 있죠.
Workflow (워크플로우)
.github/workflows
디렉토리의 YAML 파일로 정의Event (이벤트)
on:
push:
branches: [ main ]
schedule:
- cron: "0 */1 * * *" # 매 시간마다 실행
Jobs (작업)
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
run: npm start
Steps (단계)
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
GitHub Actions에서는 민감한 정보를 시크릿으로 저장하고 사용할 수 있습니다:
steps:
- name: Use a secret
env:
SUPER_SECRET: ${{ secrets.GITHUB_TOKEN }}
run: echo "Using secret"
💡 Tip: GitHub Actions에서 자주 사용되는 환경 변수들
GITHUB_WORKSPACE
: 워크플로우의 작업 디렉토리GITHUB_TOKEN
: GitHub API 접근용 토큰GITHUB_REPOSITORY
: 현재 저장소 이름