維護 GitHub 個人資料很麻煩。新部落格文章?更新個人資料。新郵件清單?更新個人資料。製作了影片?也一樣。
我會在多個平台上發佈內容:我的部落格nickyt.co 、我的電子報OneTipAWeek.com 、我的 YouTube 頻道影片、工作影片以及 我作為嘉賓參與的影片。幾年前,我厭倦了手動更新,所以我決定將其自動化。
我的 GitHub 個人資料頁面( github.com/nickytonline)現在可以自動更新,無需我任何操作即可獲取我的最新內容。以下是我的實作方法。

首先,我們來了解一下基礎知識。 GitHub 有一個很棒的功能:如果你建立一個與你的使用者名稱同名的公共倉庫,例如nickytonline/nickytonline ,它就會變成一個特殊的個人資料倉庫,倉庫中的 README.md 檔案會直接顯示在你的個人資料頁面上。
您可以按照GitHub 的官方指南進行設置,但基本步驟如下:
建立一個新的公共倉庫,名稱與您的使用者名稱完全相同。
建立時請務必勾選「新增 README 檔案」。
編輯 README.md 文件,新增您的個人資料內容。
大多數人都知道這部分內容,然後就止步於靜態內容了。但很少人意識到,當它與 GitHub Actions 結合使用時,威力會變得多麼強大。
我的個人資料展示了三種類型的動態內容:
- [my YouTube channel](https://youtube.com/@nickytonline)
- [work video content](https://www.youtube.com/@pomerium_io)
- [videos where I'm a guest](https://www.youtube.com/watch?v=VmsuoZHiW5s&list=PLcR4ZgxWXeIAa0VXPJQ7fgXkx73A5TeGU)
所有這些資訊都會自動更新。我撰寫內容,發布後,它就會出現在我的GitHub個人資料頁面上。
自動化流程是透過 GitHub Actions 的工作流程實現的。腳本執行後,會更新 README 文件,然後 git 會將更改直接提交到主分支。下面我將向您展示我使用的三個工作流程。
對於 RSS 來源,我使用 Gautam krishna R 開發的部落格文章工作流程。這不需要額外的腳本編寫。
關於新聞簡訊文章:
name: Latest Newsletter Posts
on:
schedule:
# 1pm UTC on Mondays
- cron: '0 13 * * MON'
workflow_dispatch:
jobs:
update-readme-with-blog:
name: Update this repo's README with latest blog posts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: gautamkrishnar/blog-post-workflow@master
with:
feed_list: 'https://rss.beehiiv.com/feeds/NggVbrRMab.xml'
comment_tag_name: 'NEWSLETTER-POST-LIST'
部落格文章:
name: Latest content I make workflow
on:
schedule:
# Runs every day at midnight UTC
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
update-readme-with-blog:
name: Update this repo's README with latest blog posts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: gautamkrishnar/blog-post-workflow@master
with:
feed_list: 'https://www.nickyt.co/feed'
針對 YouTube 影片:
對於 YouTube 影片,我有一個自訂工作流程,它利用 YouTube API,拉取我最新的影片內容,然後將更改直接提交到主分支。
name: Update readme videos
on:
schedule:
# Runs every Monday at 1pm UTC
- cron: '0 13 * * 1'
workflow_dispatch:
jobs:
update_profile_data:
name: Update readme videos
runs-on: ubuntu-latest
environment: all
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Update README
env:
YOUTUBE_API_KEY: ${{ vars.YOUTUBE_API_KEY }}
run: |
cd scripts
npm install
node --experimental-transform-types update-readme.ts
- name: Commit changes
id: commit
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
git pull origin main
git add .
if [[ -n "$(git status --porcelain)" ]]; then
git commit -m "Update README"
git push origin main
fi
每個工作流程的執行時間表都不同,但無論何時執行,如果該特定類型的內容有新內容,我的 GitHub 個人資料都會更新。
GitHub Actions Marketplace中擁有龐大的 GitHub Actions 生態系統。 blog-post-workflow操作只是利用現有解決方案而非從頭開始編寫程式碼的一個例子。
在編寫自訂工作流程/腳本之前,請先查看GitHub Actions Marketplace ,看看是否已經有人解決了您的問題。
我們將自動化流程與來自特殊倉庫的 README.md 檔案配合使用,該檔案充當模板,其中包含特定的佔位符部分。以下是我的 README 文件的結構:
# Hi! I'm Nick Taylor. 👋🏻
[Static bio content here...]
## Latest Newsletter Posts
<!-- NEWSLETTER-POST-LIST:START -->
<!-- NEWSLETTER-POST-LIST:END -->
## Latest Blog Posts and Talks
<!-- BLOG-POST-LIST:START -->
<!-- BLOG-POST-LIST:END -->
## Upcoming Live Streams
<!-- STREAM-SCHEDULE:START -->
<!-- STREAM-SCHEDULE:END -->
## Latest Videos
<!-- VIDEO-LIST:START -->
<!-- VIDEO-LIST:END -->
HTML 註解之間的每個部分都會自動替換為 GitHub Actions 產生的內容。 blog blog-post-workflow操作會尋找預設的\<!-- BLOG-POST-LIST:START -->和<!-- BLOG-POST-LIST:END --> ,但您可以使用comment_tag_name參數進行自訂,就像我為我的新聞簡報部分 ( NEWSLETTER-POST-LIST ) 所做的那樣。
靜態內容(您的個人簡介、聯絡方式等)保持不變,而動態部分會自動更新。
身為內容創作者,我發布一期電子報、影片或部落格文章,我的 GitHub 個人資料就自動更新了!我無需手動維護多個平台上的內容。我可以專注於創作優質內容,而自動化流程則負責分發。
如果你想建造類似的東西:
建立你的專屬個人資料倉庫。建立一個與你的使用者名稱完全相同的公共倉庫,例如 https://github.com/nickytonline/nickytonline
在 README 檔案中新增佔位符部分,用於放置動態內容。
先從一種內容類型開始(部落格文章通常是最簡單的)。
編寫一個簡單的腳本來取得和格式化資料,或使用現有的操作,例如gautamkrishnar/blog-post-workflow。
設定一個 GitHub Action 來按計劃執行它。
透過自動化功能,您的個人資料會自動保持最新狀態,而不是停留在您上次記得更新時的快照。
已經好幾年了,我的GitHub個人資料一直都是最新的。我從來沒想過這個問題。
如果你定期發佈內容,那麼這個自動化流程就值得搭建。如果你想直接使用整套設置,可以查看我的專屬程式碼庫。
如果你想和我保持聯繫,我的所有社交帳號都在nickyt.online 。
期待下次!
圖片來自Unsplash 用戶 Homa Appliances
原文出處:https://dev.to/nickytonline/how-i-automated-my-github-profile-and-you-can-too-399e