如何透過GitHub在本站寫文章
背景
先看Git背景: Git 10 周年访谈:Linus 讲述背后故事
後來 GitHub 推出 GitHub Pages ,結合近年興起的 static site generator , 讓懂技術的部落客有非常powerful的工具來撰寫以前很難做到的部落格功能。
本站利用 Pelican 來製作部落格,有以下的優點:
- 可用 reStructuredText, Markdown, 或 AsciiDoc 等等 簡易標記語言 撰寫
- 因為用標記語言寫,可以自由搬移內容到各處/各服務。
- 因為用標記語言寫,容易轉成其他格式,比方說HTML, PDF, 或是電子書等等。 (可利用 Pandoc 之類的程式進行格式互轉)
- 支援用LaTeX打數學式
- 支援插入片斷的程式碼(包含程式碼上色)
- 支援插入整個檔案的程式碼(包含程式碼上色)
- 很容易就可以 HTML/JavaScript/CSS 程式demo
- 容易在網頁嵌入影片以及聲音檔
- 減少JavaScript,增進瀏覽網頁的速度
- 可自由控制廣告位置,以及如何呈現,或是不放廣告
- 可自由插入網頁評論系統: Google+ comments, Facebook comments, Disqus, ...
- 網站會根據螢幕大小做不同呈現(responsive web design)
- 容易做SEO,以及可以指定Facebook分享時顯示的圖片及參數。
- 支援多語系,同篇文章不同語言版本互相連結。
- 幾乎可以這樣說:只有想不到,沒有做不到。
本網頁主要的repo是 userpages, 含網站template以及網站內容都在此。然後透過 Travis CI 自動編譯並上傳到 siongui.github.io 。
撰寫流程
有兩種方式,一種是pull request方式,一種是collaborator方式。
(1) pull request方式
- 首先註冊 GitHub 帳號
- fork 本站 repo, 利用 rst 格式寫文章,然後 pull request 提交。
如何寫文章
透過範例學習最快,本站每篇文章都有一個 在GitHub上編輯 的連結, 可連回到原始檔案,然後在點選 raw 看原始 rst 格式。
文章的放置位置以及語言
舉例來說,2015年4月21日的文章,就在 content/articles/2015/04/21/ 目錄(若該目錄不存在則自己創建)下新增一個該文章的檔案,檔名取為
SLUG%LANG.rst ,其中 SLUG 是網址上的顯示名稱, LANG 是語言
舉例來說,若新增一個檔案名為 content/articles/2015/04/21/post-on-this-site%zh.rst 則該文章的網址是 /zh/2015/04/21/post-on-this-site/ ,該文章的語言是傳統中文
若新增一個檔案名為 content/articles/2015/04/21/post-on-this-site%en.rst 則該文章的網址是 /2015/04/21/post-on-this-site/ ,該文章的語言是英文
文章內容大致格式
如何透過GitHub在本站寫文章
##########################
:date: 2015-04-21T03:53+08:00
:modified: 2016-01-05T04:06+08:00
:author: 某某某
:tags: Web開發, CSS, HTML
:category: Web開發
:summary: 透過GitHub平台協同撰寫網站
:og_image: http://....
:license: CC|MIT|BSD|Apache2.0 ...
(your main content here)
- date :文章創建日期,可加可不加,不加的話則是用目錄裡的日期當成此文章日期
- modified :文章修改日期
- author :作者名
- tags :可以有好幾個。
- category :只可以有一個。
- summary :文章摘要,此摘要即為 HTML meta description 以及 og:description
- og_image :是此文被分享或貼到Facebook或Google+之類的社交網站上時,顯示的圖片網址。 (參考 [7])
- license :此文章 and/or 程式碼的授權,可以是 CC, MIT, BSD, Apache 2.0, ...
tags, category, author, summary 為建議必填,其他欄位可視情形填或不填。
rst 格式怎樣寫可參考 [1] ,至於用LaTeX寫數學,可看 [2] 。
如何撰寫文章的更多細節,請閱讀 Pelican官方文件
注意事項
每行建議不超過80個字母,一個中文算兩個字母。(非硬性規定)
可利用 線上reStructuredText編輯器 (可線上預覽,但因為CSS不同,預覽與實際網站呈現會有些差異)
亦可利用 Sublime Text + OmniMarkupPreviewer plugin 來撰寫文章並預覽,但同樣因為CSS不同的關係,預覽與實際網站呈現會有些差異
標題下的 # 長度至少要跟標題長度一樣長,或更長,例如以下是錯誤寫法:
[Math] The infamous Grasshopper problem ################################
正確寫法是:
[Math] The infamous Grasshopper problem #######################################
userpages 更改(commit並push到GitHub上)後, Travis CI 會自動編譯 並更新 siongui.github.io 內容。
SEO以及Facebook分享
網站SEO(意指容易在搜尋引擎被找到)有三個重點:
- HTML title: 該網頁的title,必須配合搜尋關鍵字
- URL:舉例來說,若網頁是談有關random number的文章,網址裡最好是: /2015/04/21/random-number/ ,將random number這兩個關鍵字包含在網址裡。 若是用 /2015/04/21/blog-post_21.html 之類的網址,將不利於SEO。
- 日期:文章日期越新越好。
文章被分享或貼到Facebook或Google+之類的社交網站上時, 文章的顯示圖片網址是metadata裡的 og_image, 文章描述則是 summary 裡填寫的描述。 Facebook分享之詳情請參考 [7] 或是 Facebook官方指南 。
預覽整個網站
本站目前只能在 Ubuntu Linux 上將整個網站編譯出來並預覽,詳情請看: README 。 Windows平台理論上應該也可以將整個網站編譯出來並預覽,但從沒試過。
更新網站( https://siongui.github.io/ )
只要將 userpages 的新commit從本機push到GitHub上, Travis CI 會 自動編譯並更新 siongui.github.io 內容,不需要手動操作。
參考:
[1] | reStructuredText |
[2] | reStructuredText Directives - math |
[3] | Online LaTeX Equation Editor - create, integrate and download |
[4] | LaTeX/Mathematics - Wikibooks, open books for an open world |
[5] | 7. 附录:轻量级标记语言 — GotGitHub |
[6] | Online reStructuredText editor |
[7] | (1, 2) Facebook Open Graph META Tags |
[8] | feedfree |
網站SEO:
[9] | 网站结构优化策略-月光博客 |
[10] | 网站页面优化策略-月光博客 |
[11] | 网站内链优化策略-月光博客 |
[a] | Meta 标签与搜索引擎优化 - WEB前端 - 伯乐在线 |
Vim開發環境:
[12] | Vim as Golang IDE · Issue #5 · rainyear/lolita · GitHub |
[13] | Golang开发环境搭建-Vim篇 |
[14] | Dr. Bunsen / The Text Triumvirate (文本三巨头:zsh、tmux 和 vim) |
[15] | Vim入门教程 - 博客 - 伯乐在线 |
附錄: