# GitHub 프로필 자동 업데이트 방법: 초보자도 쉽게 따라하는 자동화 가이드와 실전 예제

---

# # 📌 서론 – GitHub 프로필 관리, 왜 이렇게 귀찮을까?

GitHub는 개발자에게 **온라인 명함**과 같은 존재입니다.

새로운 블로그 글을 올리면 README에 링크를 추가하고,

뉴스레터가 발행되면 최신 구독자 수를 표시하고…

이런 작은 업데이트를 매번 손으로 하면 **시간 낭비**일 뿐 아니라

실수로 최신 정보를 놓치기 쉽습니다.

> “프로필을 최신 상태로 유지하고 싶지만, 매번 직접 수정해야 해서 귀찮다.”

이 문제를 해결하기 위해 **자동화**가 필요합니다.

이번 포스트에서는 **GitHub API 활용**과 **GitHub Actions**만으로

프로필을 자동으로 업데이트하는 방법을 단계별로 소개합니다.

초보자도 따라 할 수 있도록 친절하게 설명하니, 지금 바로 도전해 보세요!

---

# # 📦 본론

## # 1️⃣ 준비물 체크 – 무엇이 필요할까?

| 준비물 | 설명 |

|--------|------|

| **GitHub 계정** | 자동화를 실행할 레포지토리를 만든 뒤, **Personal Access Token (PAT)** 을 발급합니다. |

| **GitHub Actions** | GitHub에서 제공하는 CI/CD 서비스로, 워크플로우 파일(`.github/workflows/*.yml`)만 있으면 자동 실행됩니다. |

| **Node.js** (또는 Python) | 자동화 스크립트를 작성할 언어. 여기서는 **Node.js** 예시를 사용합니다. |

| **README.md** | 프로필에 표시될 내용이 들어있는 파일. 자동으로 업데이트될 영역을 미리 지정해 둡니다. |

> **SEO 키워드**: `GitHub 프로필 자동화`, `GitHub API 활용`, `GitHub README 자동 업데이트`

---

## # 2️⃣ 자동화 흐름 설계 – 전체 그림 그리기

1️⃣ **새 블로그 포스트가 발행될 때** → RSS 피드 혹은 블로그 API 호출

2️⃣ **스크립트가 최신 포스트 URL을 추출** → 마크다운 형식으로 변환

3️⃣ **GitHub API를 이용해 README.md에 삽입** → 기존 내용 교체

4️⃣ **GitHub Actions가 자동 커밋 & 푸시** → 프로필 페이지가 즉시 업데이트

이 흐름을 구현하면 **새 글을 올리는 순간** 프로필이 자동으로 최신 상태가 됩니다.

---

## # 3️⃣ GitHub Actions 워크플로우 파일 만들기

레포지토리 루트에 `.github/workflows/profile-update.yml` 파일을 생성합니다.

```
yaml

name: Update GitHub Profile

on:

  schedule:

    - cron: '0 * * * *'   # 매시간 실행 (필요에 따라 조정)

  workflow_dispatch:      # 수동 실행도 가능

jobs:

  update-profile:

    runs-on: ubuntu-latest

    steps:

      - name: Checkout repository

        uses: actions/checkout@v3

      - name: Set up Node.js

        uses: actions/setup-node@v3

        with:

          node-version: '20'

      - name: Install dependencies

        run: npm ci

      - name: Run update script

        env:

          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

          BLOG_RSS_URL: https://example.com/rss

        run: node scripts/update-readme.js

      - name: Commit & push changes

        uses: stefanzweifel/git-auto-commit-action@v4

        with:

          commit_message: '🤖 자동 업데이트: 최신 블로그 포스트 반영'

          branch: main

```

> **핵심 포인트**

- `schedule` 로 정기 실행을 지정해 두면 **새 포스트가 언제든** 반영됩니다.

- `GITHUB_TOKEN` 은 기본 제공되는 토큰으로, 별도 PAT 없이도 레포에 푸시가 가능합니다.

- `BLOG_RSS_URL` 은 블로그 RSS 피드 주소이며, 환경 변수로 전달해 스크립트에서 사용합니다.

---

## # 4️⃣ 자동 업데이트 스크립트 (`scripts/update-readme.js`)

```
javascript

import fetch from 'node-fetch';

import fs from 'fs';

import path from 'path';

// 1️⃣ RSS 피드에서 최신 포스트 추출

async function getLatestPost(rssUrl) {

  const res = await fetch(rssUrl);

  const text = await res.text();

  const match = text.match(/<item>.*?<title>(.*?)<\/title>.*?<link>(.*?)<\/link>/s);

  if (!match) throw new Error('RSS 파싱 실패');

  return { title: match[1], link: match[2] };

}

// 2️⃣ README.md에 삽입할 마크다운 문자열 생성

function buildMarkdown(post) {

  return `### 📚 최신 블로그 포스트\n- [${post.title}](${post.link})`;

}

// 3️⃣ README.md 읽고, 지정된 영역 교체

function updateReadme(newSection) {

  const readmePath = path.resolve('README.md');

  let content = fs.readFileSync(readmePath, 'utf-8');

  const startTag = '<!-- AUTO-START -->';

  const endTag   = '<!-- AUTO-END -->';

  const regex = new RegExp(`${startTag}[\\s\\S]*?${endTag}`);

  const replacement = `${startTag}\n${newSection}\n${endTag}`;

  content = content.replace(regex, replacement);

  fs.writeFileSync(readmePath, content);

}

// 메인 로직

(async () => {

  const rssUrl = process.env.BLOG_RSS_URL;

  const post = await getLatestPost(rssUrl);

  const markdown = buildMarkdown(post);

  updateReadme(markdown);

})();

```

**README.md** 예시 (자동 교체 구역 포함)

```
markdown

# 👋 안녕하세요! 저는 Nicky

<!-- AUTO-START -->

## # 📚 최신 블로그 포스트

- [예시 포스트] (https://example.com/post)

<!-- AUTO-END -->

...

```

위와 같이 `<!-- AUTO-START -->`와 `<!-- AUTO-END -->` 사이에만 내용이 바뀌므로

다른 섹션은 그대로 유지됩니다.

---

## # 5️⃣ 자동화 후 확인 및 유지 보수 팁

| 체크리스트 | 내용 |

|-----------|------|

| **액션 로그** | GitHub Actions > 워크플로우 > 실행 기록에서 오류 여부 확인 |

| **README 미리보기** | `https://github.com/사용자명?tab=readme` 로 직접 확인 |

| **RSS 피드 포맷** | 블로그 플랫폼마다 RSS 구조가 다를 수 있으니, `getLatestPost` 함수 수정 필요 |

| **보안** | `GITHUB_TOKEN` 외에 별도 API 키가 필요하면 `Secrets`에 추가하고 `env` 로 전달 |

정기적으로 **액션 실행 결과**를 모니터링하면, 자동화가 중단되는 상황을 빠르게 파악할 수 있습니다.

---

# # 🎯 결론 – 지금 바로 자동화를 시작해 보세요!

GitHub 프로필을 **수동으로 관리**하느라 시간을 낭비하지 마세요.

위에서 소개한 **GitHub Actions + Node.js 스크립트** 조합만 있으면

새 블로그 글이 올라올 때마다 자동으로 최신 정보를 반영할 수 있습니다.

1️⃣ 레포에 워크플로우 파일을 추가하고,

2️⃣ 스크립트를 작성한 뒤,

3️⃣ `GITHUB_TOKEN`을 활용해 자동 커밋을 설정하면 끝!

> **행동 유도**: 지금 바로 이 포스트를 북마크하고, 내 레포에 `profile-update.yml`을 복제해 보세요.

> 자동화된 GitHub 프로필이 여러분의 **개발자 브랜드**를 한층 더 빛나게 할 것입니다. 🚀

*궁금한 점이나 오류가 발생하면 댓글로 알려 주세요. 함께 해결해 나가겠습니다!*
