---
# System prepended metadata

title: 使用ATOM 和 RSS 格式把Hexo內容搬到 Wordpress 上的流程
tags: [更新上部落格]

---


# 使用ATOM 和 RSS 格式把Hexo內容搬到 Wordpress 上的流程

# ATOM 和 RSS 的簡介

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

## RSS

![image](https://hackmd.io/_uploads/SyJICyojR.png)

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

## ATOM

![image](https://hackmd.io/_uploads/r15501oiR.png)

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
```

![image](https://hackmd.io/_uploads/H13fgKHjR.png)

### 方法二 : `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畫面
![image](https://hackmd.io/_uploads/rysfWFSsC.png)
>https://gahgah147.github.io/atom.xml


# 將文章導入 WordPress

我後來是使用 FeedWordPress 這個套件來匯入

![image](https://hackmd.io/_uploads/BknKO6YjA.png)

安裝完成之後在 New source 這邊輸入生成的  `http://你的網站域名/atom.xml`
![image](https://hackmd.io/_uploads/H1uou6FsA.png)


然後在這邊點選 Update Now
![image](https://hackmd.io/_uploads/S1j1YatiA.png)

以下是我成功匯入的Hexo 部落格文章
![image](https://hackmd.io/_uploads/rJWAOpqi0.png)

# 為什麼這邊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」部分。
![image](https://hackmd.io/_uploads/B1Nz31os0.png)
   - 會看到一個選項「Permalinks point to:」，將此選項設置為「The local copy on this website」而不是「The original source of the syndicated item」。

![image](https://hackmd.io/_uploads/HJFUhyoj0.png)
>這邊應該要改為The local copy on this website

   這樣設置後，FeedWordPress 會將匯入的文章設置為本地的 WordPress 文章，並且點擊標題後將導向 WordPress 上的文章頁面，而非 Hexo 原始連結。

2. **手動修改匯入的文章：**

   如果希望更加自定義某些文章的行為，也可以在文章匯入後手動編輯文章中的連結。

透過這些設定，就可以讓 FeedWordPress 將 RSS Feed 的文章匯入為 WordPress 本地內容，避免跳轉到 Hexo 的文章頁面。


# 總結 

這樣就可以成功同步 Hexo 的文章到 WordPress 部落格文章上，有些細節還是要花點時間測試調整之後才知道如何改動，這些功能實際大約花了我3天時間，大家如果之後有需要把hexo部落格搬家可以參考看看，同時也可以考慮保留兩邊的部落格，因為自動化導入RSS的功能我覺得其實蠻方便的，另外Hexo加上github的架設其實不用額外花錢維護。


###### tags: `更新上部落格`