跳至主要內容
技術

GitHub README 排版術:把開源專案首頁變成 landing page

GitHub README 排版術:把開源專案首頁變成 landing page
一個人做產品 第 17 / 18 篇

本篇是「一個人做產品」系列的第 17 / 18 篇。你可以從系列總覽開始閱讀,也可以直接接著看本文。

README 的 10 秒首屏,就是你的 landing page

打開一個沒聽過的 GitHub repo,你會花多少時間決定要不要 star?

Nielsen Norman Group 多年的網頁瀏覽研究告訴我們:訪客平均在 10 秒內決定是否繼續看下去。README 的「首屏」(不用滾動就能看到的部分)就是這 10 秒的決勝點。

對開源專案來說,README 就是你的 landing page。但開源專案的 README 跟商業 landing page 不一樣。你沒有設計師、沒有 A/B 測試、也沒有複雜的 CMS。

只有 Markdown 和一點 HTML。

這篇講「用 GitHub 原生支援的 markdown 語法,把 README 排成像 landing page 的版面」。給第一次發 OSS、或一直覺得自己 README 看起來「不夠專業」的人。

一個好 README 的視覺骨架

直接看範例:

<div align="center">

  <img src="logo.png" width="120" alt="Logo" />

  # Project Name

  **One-line tagline that explains the value**

  A 1-2 sentence elevator pitch.

  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
  [![Release](https://img.shields.io/github/v/release/USER/REPO)](.../releases/latest)
  ![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey)

  <img src="demo.gif" width="700" alt="Demo" />

</div>

> Optional callout: a key thing visitors should know upfront.

## How It Works

| Step | Action |
| :--: | ------ |
| **1.** | Install with `brew install ...` |
| **2.** | Run `command` |
| **3.** | See the result |

## Features
...

這個結構在 GitHub 上 render 起來就是一個 hero 區塊 + 三步驟引導 + 功能介紹。完全用 markdown + 兩個 <div><img> 標籤。

接下來拆解每個元素的細節。

元素 1:Centered Hero Block

GitHub markdown 支援 <div align="center"> 把內容居中。這是排出 landing-page-style hero 的基礎。

<div align="center">

  <img src="logo.png" width="120" alt="Logo" />

  # Project Name

  **Tagline**

</div>

幾個容易踩的細節:

  • <div> 開合之間要留空行,markdown 才會 render 裡面的 # 標題和 **bold**
  • <img>width="120" 屬性控制大小,不要用 inline style="...",GitHub 的 HTML sanitizer 會 strip 掉 style
  • 居中的 # 標題在 mobile 上也會正確居中

元素 2:Badges(4 個就好)

shields.io 是事實上的標準,支援數十種服務(CI、套件庫、coverage、社群平台等)的動態 badges,再加上無限自訂的靜態 badge。

該放的 4 個

[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Release](https://img.shields.io/github/v/release/USER/REPO)](.../releases/latest)
[![Build](https://img.shields.io/github/actions/workflow/status/USER/REPO/ci.yml)](.../actions)
![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey)

對應訪客要判斷的 4 件事:

Badge訪客在問
License能不能用?商業?fork?
Release version專案還活著嗎?最近一次更新多久前?
Build status品質如何?CI 過得了嗎?
Platform支援我的環境嗎?

不該放的

  • ❌ Downloads count、code coverage、star count,這些數字一旦停滯反而扣分
  • ❌ Discord / Slack / 廣告 badges,會分散訪客注意力
  • ❌ 超過 4 個,開始看起來像 CI pipeline 而不是 landing page

GitHub repo 頁面本來就有 star count,README 不用重複放。

元素 3:Hero Image / GIF / Video

視覺是 10 秒內最快傳達訊息的方式。三個選擇:

  • Screenshot:靜態,但能放最高解析度
  • GIF:動態 demo,相容性最好(任何 markdown viewer 都吃)
  • Video:真正的播放器,但只能透過 GitHub 拖放上傳,且只在 github.com 顯示

哪個適合你的場景?我寫過一篇詳細的 《GitHub README 動態 demo 的 5 種策略:從 GIF 到自架 CDN》,附決策樹幫你選。

元素 4:一句話定位(最重要的元素)

直接看兩個對比:

<!-- ❌ 工程師寫法 -->
TypeLate is a cross-platform push-to-talk dictation app built with Tauri v2
that uses Groq Whisper for transcription and LLM-based post-processing.

<!-- ✅ User-facing 寫法 -->
**Too late to type — just speak.**

Press a hotkey to start, speak naturally, press again to stop.
Your voice becomes polished text in under 3 seconds — right where you type.

兩個關鍵差別:

  1. 擺放位置:藏在內文第一行 vs 獨立的 **bold tagline**——訪客掃讀的第一視覺重點
  2. 「has feature X」vs「does Y for you」:把焦點放在「使用者得到什麼」而不是「我們做了什麼」

對 indie hacker / solo builder:tagline 要在 60 字內傳達「給誰、解決什麼、用什麼方式」。寫不出來代表產品定位還沒想清楚。

想看更多範例?Awesome README 是 GitHub 上精選的 README 範例集,找一個跟你類似的專案抄結構。

元素 5:Quick Start(30 秒能試到)

如果讀者讀到這裡還沒被勸退,他在想「我怎麼試試看」。給他最短路徑:

## Quick Start

```bash
brew install your-cli
your-cli init
your-cli run
```

三行裝完三行跑

如果你的安裝需要 10 個步驟,不要硬塞進 Quick Start。那代表你該重新設計安裝流程了。一個典型問題:「先設定環境變數、再裝依賴、再 build、再執行 migration、再啟動……」,這些都該包成單一指令(make installnpx create-foo)。

元素 6:章節順序模板

對小型開源工具,這個順序我用了很多次:

# Project Name (hero block 已含)

## How It Works
(一個 table 或三個 emoji bullets 講工作原理)

## Features
(4-6 個關鍵功能,每個一段話)

## Quick Start
(裝 → 用 → 看到結果)

## Documentation
(連到完整文件 / wiki / website)

## Contributing
(接受 PR 嗎?要遵守什麼規範?)

## License
(一行就好:MIT / Apache 2.0)

長 README(超過 10 個章節)才需要 Table of Contents。短於 5 個章節的 README 加 TOC,反而讓 TOC 佔滿首屏、把真正的 hero 內容推到滾動線以下。

5 個常見錯誤

寫 README 的地雷:

  1. 一上來放安裝指令 — 訪客還不知道這是什麼就要他裝?先 hook 再裝
  2. 沒有視覺 — 純文字 README 就像沒有截圖的 App Store 頁面
  3. Badges 排了一整行 — 超過 4 個就開始看起來像 CI dashboard
  4. 章節順序亂跳 — 「先講安裝、再講功能、再講為什麼、再講安裝」這種輪迴看不下去
  5. Tagline 是「This is a tool that…」 — 直接寫 user value,不要解釋自己是什麼

兩個現成工具

如果不想從零寫:

  • readme-md-generator:interactive CLI,問 10 個問題產出標準結構的 README。⚠️ 老牌但已停更(最後發布 v1.0.0 / 2019 年),在新版 Node.js 上可能有相容性問題;建議當作結構參考,或改用線上工具 readme.so
  • Awesome README:GitHub 精選範例集,找類似專案抄結構

3 分鐘快速上手 readme-md-generator

注意:此工具最後一次發布是 v1.0.0(2019 年),已多年未更新,在新版 Node.js 上可能裝不起來或跑不動。以下流程僅供參考其產出結構,若安裝失敗請改用 readme.so 之類仍在維護的線上產生器。

# 安裝
npm install -g readme-md-generator

# 進入專案根目錄
cd your-project

# 啟動 interactive 模式
readme-md-generator

執行後會依序問你:

  1. 專案名稱(自動從 package.json 抓)
  2. 描述、版本、作者
  3. 想包含哪些章節(Installation、Usage、Tests、Contributing…)
  4. 授權類型

每個問題都有預設值(直接按 Enter 就行),跑完一輪會在當前目錄生成 README.md。產出的結構不是最美但很完整,可以當骨架再手動精修

TL;DR

把 README 排成 landing page 的 6 個元素:

  1. Centered hero block(logo + 標題 + tagline)
  2. Badges(4 個就好:license、release、build、platform)
  3. Hero image / GIF / video(視覺先行)
  4. 一句話定位(user value,不是 feature list)
  5. Quick Start(30 秒能試到)
  6. 章節順序模板(How → Features → Install → Docs)

訪客只給你 10 秒。這 6 個元素是讓那 10 秒值得的最低標準。

接下來

學會基本排版後,如果想把產品 demo 影片塞進 README:

👉 《GitHub README 動態 demo 的 5 種策略:從 GIF 到自架 CDN》 — 5 種策略決策樹,幫你選最適合的呈現方式 👉 《把 30 秒產品介紹塞進 GitHub README 的最後一哩》<video> 標籤的踩雷紀錄,60 秒手動操作的真相 👉 《為什麼一支 30 秒影片是 OSS 上架最大的槓桿》 — 把視覺先行的觀念延伸到 OSS 上架策略 👉 《Landing Page 與 SEO:讓產品被找到》 — landing page 核心概念從 README 延伸到完整產品曝光

留言討論

esc
輸入關鍵字搜尋文章...
查看收藏 →