內容創作者不要再複製粘貼啦,一勞永逸自建個文章多發平台吧!
本文作者:HelloGitHub-蔡文心
大家好!這裡是 HelloGitHub 推出的《講解開源項目》系列,今天給大家帶來的一款基於 Node.js 實現的一文多發平台開源項目——ArtiPub(文章發佈者)。
一、介紹
眾所周知文章每發到一個平台,就能增加一絲讓更多人看到的機會。所以內容創作者們不僅需要編寫高質量的文章,還要手動分發到不同的平台。這個同步可不是簡單地複製粘貼,需要重新排版、上傳圖片等,十分耗時和繁瑣。
HelloGitHub 明白你的痛,所以今天帶來一款免費開源的文章自動分發管理平台——ArtiPub,它可以幫助內容創作者將編寫好的文章自動發佈到掘金、SegmentFault、CSDN、知乎、開源中國等技術社區,傳播技術內容的同時獲取更多的曝光和關注。它不僅能完成文件的在線編輯和同步,還有數據統計的功能,簡直是內容創作的必備神器呀!
讓我們來跟着本文了解下 ArtiPub 的優點和功能,然後跟着步驟用起來,最後讓你從 手動同步 內容變為 自動同步。
1.1 安全性
市面上已經存在一文多發的平台會要求用戶將自己的賬戶信息,例如 Cookie 或賬號密碼上傳到對方服務器這樣不安全。因為一旦平台發生問題,自己的賬戶信息會遭到泄漏。雖然我相信一般平台不會惡意操作用戶的賬戶,但如果出現誤操作,您的賬戶隱私將遭到泄漏,平台上的財產也可能遭到損壞,所以還是要儘可能規避這樣的風險。而 ArtiPub 不要求用戶上傳賬戶信息,所有賬戶信息全部保存在用戶自己本地或者服務器的數據庫中,從而規避了這個安全風險。
1.2 Chrome 插件
ArtiPub 有配套的 Chrome 插件,通過 Chrome 插件可以方便地獲得用戶登陸信息(Cookie),然後將 Cookie 注入到 Puppeteer 操作的 Chromium 瀏覽器中,瀏覽器就可以正常登陸網站進行發文操作了。
1.3 支持的平台
- 掘金
- SegmentFault
- CSDN
- 簡書
- 知乎
- 開源中國
- 今日頭條
- 博客園
1.4 支持的安裝方式
ArtiPub 安裝簡單,提供了多種安裝方式,可以一鍵安裝使用,安裝一般只要 5 分鐘。
- Docker
- Npm
- 源碼
考慮到此項目的受眾可能包括非程序員人群,接下來本文中將演示最方便的一種方案 使用 Docker 安裝。
二、安裝
2.1 Docker
準備
Step 1 在項目根目錄下執行
docker-compose up
命令會根據 docker-compose.yaml
文件創建鏡像和容器。
cd ArtiPub
docker-compose up
Step 2 啟動容器
Step 3 成功
三、使用
3.1 登錄
上文提到了 ArtiPub 是通過 Chrome 插件獲取 Cookie 的,所以還需要安裝 Chrome 插件,插件的下載和安裝方法作者寫在了登錄助手菜單中。
3.2 發佈
發佈後需要一點時間大約 1 分鐘內,就能夠看到已經同步發佈到勾選的各大平台。
四、技術棧
4.1 前端
- React 框架
- UI 是基於阿里出品的 Ant Design Pro 改造而成
4.2 後端
- 基於 Node.js,使用 TS 編寫
- Web 框架則選用了 express
- 爬蟲功能基於 puppeteer(Google 開發的自動化測試工具)實現
- 數據庫選用了主流的 NoSQL 數據庫 Mongodb 主要用於記錄文章與 cookie 信息
4.3 項目結構
.
├── service.json //啟動文件,包含路由註冊,數據庫連接
├── backend
├── config
├── extensions
│ └── src
│ └── popup
├── lib
├── models // 數據庫模型
├── nginx // nginx配置
├── public
│ └── icons
├── routes //相當於MVC中的controller
├── spiders // 爬蟲相關功能
│ └── import
└── src
├── assets
│ └── img
├── components
│ ├── Authorized
│ ├── CopyBlock
│ ├── GlobalHeader
│ ├── HeaderDropdown
│ ├── HeaderSearch
│ ├── NoticeIcon
│ ├── PageLoading
│ ├── SelectLang
│ └── SettingDrawer
├── data
├── e2e
│ └── __mocks__
├── layouts
├── locales
│ ├── en-US
│ ├── pt-BR
│ ├── zh-CN
│ └── zh-TW
├── models
├── pages
│ ├── ArticleEdit
│ ├── ArticleList
│ ├── Demo
│ ├── Environment
│ ├── Helper
│ ├── Paste
│ └── PlatformList
├── services
└── utils
雖然前後端代碼沒有分為兩個倉庫,但是採用的是前後端分離模式,使用 Nginx 作為反向代理。後端部分與傳統 MVC 模式相比有些許改變,但主要的 controller、models 和 service 還是存在(只是名字變了)。
下圖是 ArtiPub 的架構示意圖:
五、最後
ArtiPub 本身並不是一個非常複雜的項目,但是其中包含了很多有趣的功能和思路,比如通過 Chrome 插件獲取用戶在各大平台的 cookie 來解決當用戶賬號太多,授權麻煩的問題。還有通過 puppeteer 一種自動化工具來實現發佈。通過對 ArtiPub 源碼的學習能夠學到除 Node.js 以外的很多技術,並且這些技術使用場景也是非常豐富的。
希望今天推薦的 ArtiPub 你能喜歡,也希望你能在讀完文章後 clone 項目閱讀一番,覺得不錯的話可以關注 「HelloGitHub」 公眾號,收到第一時間的更新。愛你呦~