# 使用ATOM 和 RSS 格式把Hexo內容搬到 Wordpress 上的流程
# ATOM 和 RSS 的簡介
**RSS(Really Simple Syndication)** 和 **ATOM** 都是用來分發網路內容的標準格式。它們的主要目的是幫助使用者訂閱和自動獲取網站更新,無需手動訪問網頁。這對於部落格或新聞網站非常有用,因為它能讓讀者即時接收新文章的通知。
## RSS

RSS 是一種 XML 格式,常見的版本為 RSS 2.0。使用 RSS,網站可以將最新的內容發布到訂閱者的 RSS 閱讀器中。讀者可以使用 RSS 閱讀器訂閱 RSS Feed,當網站更新時,內容會自動推送到他們的裝置上。
## ATOM

ATOM 是另一種 XML 格式,功能類似於 RSS,但有更多可自定義的元素。ATOM 被認為是 RSS 的改進版,因為它具有更好的格式和結構,適合用於更複雜的內容發佈需求。
## 如何使用
用戶只需將網站提供的 RSS 或 ATOM 連結添加到他們的 RSS 閱讀器中即可。對於網站管理員來說,提供 RSS 或 ATOM Feed 是吸引讀者的重要方式之一,能有效提升內容曝光率。
# 產出 Hexo 的 RSS 摘要格式文章檔案
RSS 摘要格式可以方便 WordPress 導入,在 _config.yml 檔案中調整設定
在 Hexo 中,如果要生成 RSS 摘要(也稱為 RSS Feed),你需要安裝一個 RSS 插件並進行相應設定。以下是詳細步驟:
## 安裝 RSS 插件
### 方法一 : `hexo-generator-feed`
首先,你需要安裝 `hexo-generator-feed` 插件。打開終端機並在你的 Hexo 專案目錄下執行以下命令:
```bash
npm install hexo-generator-feed --save
```

### 方法二 : `hexo-migrator-rss`
後來有看到這一篇hexo官方說明文件
https://hexo.io/zh-tw/docs/migration
裡面有提到使用 `hexo-migrator-rss` 這個工具來進行轉移
首先,安裝 hexo-migrator-rss 外掛。
```
$ npm install hexo-migrator-rss --save
```
一旦外掛安裝完成,執行下列指令,從 RSS 轉移所有文章。 source 可以是檔案路徑或網址。
```
$ hexo migrate rss <source>
```
這邊我最終是使用 hexo-generator-feed 產生的
## 配置 `_config.yml`
安裝完成後,你需要在 Hexo 的主配置檔 `_config.yml` 中添加 RSS 的相關設定。以下是我設定的配置:
```yaml
feed:
type:
- atom
- rss2
path:
- atom.xml
- rss2.xml
limit: 0
hub:
content: true
```
:::info
變數內容說明
- **enable**:啟用或停用此插件。預設為啟用。
- **type**:Feed 的類型。可以是 `atom` 或 `rss2`。指定為 `['atom', 'rss2']` 以輸出這兩種類型。(預設:`atom`)
- **path**:Feed 的路徑。如果指定了多種類型,路徑必須按照類型的順序排列。(預設:`atom.xml/rss2.xml`)
- **limit**:Feed 中顯示的最大文章數量。(設為 `0` 或 `false` 以顯示所有文章)
- **hub**:PubSubHubbub hub 的 URL。(如果不使用,請保持空白)
- **content**:(可選)設為 `true` 時,會在 Feed 中包含整篇文章的內容。
- **content_limit**:(可選)摘要內容的字數上限。僅在 `content` 設為 `false` 且沒有自訂文章描述時使用。
- **content_limit_delim**:(可選)如果使用 `content_limit` 來縮短文章內容,僅在達到字數上限前的最後一個指定分隔符處截斷內容。預設不使用。
- **order_by**:Feed 的排序方式。(預設:`-date`,即按日期倒序)
- **icon**:(可選)自訂 Feed 圖示。預設使用主設定中的 email 對應的 Gravatar。
- **autodiscovery**:自動發現 Feed 的設定。(預設:`true`)許多主題已提供此功能,如果需要停用,可能需要調整主題設定。
- **template**:自訂模板路徑。這個檔案將用來生成 Feed 的 XML 檔案,預設模板為 `atom.xml` 和 `rss2.xml`。即使插件設定為輸出多種 Feed 類型,也可以只指定一個自訂模板。
:::
依照這樣以上設定執行產生時,會生成下面兩種內容的網址:
https://gahgah147.github.io/atom.xml
https://gahgah147.github.io/rss2.xml
## 生成靜態文件
設定完成後,執行以下命令生成靜態文件:
```bash
hexo generate
```
或是
```bash
hexo g
```
生成後,RSS 文件會自動保存在你的 public 資料夾中,路徑是 `public/rss.xml`(或者你在配置中設定的路徑)。
實際上我平常部屬到github.io網頁上的流程是這樣,一樣可以更新到RSS 或是ATOM
```
hexo clean && hexo deploy
```
## 驗證 RSS
在瀏覽器中打開 `http://你的網站域名/atom.xml` 或是 `http://你的網站域名/rss2.xml`(或你設定的路徑)檢查 RSS 是否正確生成。
例如我這邊產生的是
`https://gahgah147.github.io/atom.xml`和`https://gahgah147.github.io/rss2.xml`
我這邊成功產生的RSS畫面

>https://gahgah147.github.io/atom.xml
# 將文章導入 WordPress
我後來是使用 FeedWordPress 這個套件來匯入

安裝完成之後在 New source 這邊輸入生成的 `http://你的網站域名/atom.xml`

然後在這邊點選 Update Now

以下是我成功匯入的Hexo 部落格文章

# 為什麼這邊Wordpress 的標題點進去之後都會導引到hexo的文章連結?
當使用 RSS 將 Hexo 的文章同步到 WordPress 時,如果標題點進去後會導引到 Hexo 的文章連結,這通常是因為 RSS Feed 中的文章連結 (link 標籤) 指向的是原始網站(即 Hexo 部署的站點)。
原因分析: RSS Feed 的結構中,每篇文章都有一個 link 標籤,這個標籤是用來指定該文章的原始連結。在你將 RSS Feed 匯入到 WordPress 時,這些連結會保留原本的目標(即 Hexo 部落格的 URL),因此在 WordPress 中點擊標題後會導向原始的 Hexo 網頁。
使用 FeedWordPress 套件時,默認情況下匯入的文章會保留 RSS Feed 中的原始連結,因此點擊標題時會跳轉到 Hexo 的文章連結。然而,FeedWordPress 提供了一些選項,可以讓你調整這種行為。
你可以按照以下步驟來修改:
1. **設定 FeedWordPress 將文章匯入為 WordPress 本地內容:**
- 在 WordPress 後台,進入「FeedWordPress」的設定頁面。
- 在「Feeds & Updates」中,找到並點選你已經設定的 RSS Feed。
- 在該 Feed 的詳細設定中,找到「Posts & Links」部分。

- 會看到一個選項「Permalinks point to:」,將此選項設置為「The local copy on this website」而不是「The original source of the syndicated item」。

>這邊應該要改為The local copy on this website
這樣設置後,FeedWordPress 會將匯入的文章設置為本地的 WordPress 文章,並且點擊標題後將導向 WordPress 上的文章頁面,而非 Hexo 原始連結。
2. **手動修改匯入的文章:**
如果希望更加自定義某些文章的行為,也可以在文章匯入後手動編輯文章中的連結。
透過這些設定,就可以讓 FeedWordPress 將 RSS Feed 的文章匯入為 WordPress 本地內容,避免跳轉到 Hexo 的文章頁面。
# 總結
這樣就可以成功同步 Hexo 的文章到 WordPress 部落格文章上,有些細節還是要花點時間測試調整之後才知道如何改動,這些功能實際大約花了我3天時間,大家如果之後有需要把hexo部落格搬家可以參考看看,同時也可以考慮保留兩邊的部落格,因為自動化導入RSS的功能我覺得其實蠻方便的,另外Hexo加上github的架設其實不用額外花錢維護。
###### tags: `更新上部落格`