
你是不是跟我一樣:文章都寫在 Notion,結果每次要貼到方格子還要手動複製貼上、重新排版、上傳圖片……每次都貼到懷疑人生?
好消息來了!我們可以用 Python 一鍵把 Notion 文章自動貼到方格子草稿區,還能保留格式,貼完直接編輯、發佈,不再重複勞動, 讓我們專注在撰寫精選文章上, 發文的部分就交給機器人吧!🎁 文末我還放了一份專屬的「🎁 開發工具包」讓你加速起跑, 請耐心閱讀完我們的文章並給予鼓勵 👏👏👏,謝謝。
🎯 本篇教你做什麼?
這邊不會教您如何實作, 僅提供流程圖, 也不會貼上程式碼, 因為我們不希望您只會複製貼上, 而是能夠照著我們的流程思路走過一遍並開發, 如此一來學到的才會是自己的!
• 透過 Notion API 取得文章內容。
• 把內容轉成 HTML 格式。
• 用 Playwright 自動登入方格子並建立草稿的流程(不是程式碼內容哦)。
• 自動貼上內容到文章編輯器。
適合:有寫作習慣+會一點點 Python 的你 ✨
如果您看完流程還是不會做, 但又很急需要這個工具, 阿Han也幫你排除萬難了, 幫你把工具包放在「🎁 開發工具包」, 只要省下一個便當錢就能夠給你高效率發文工具, 歡迎支持, 感謝與感恩。
🏗️ 技術架構

🌟 整體流程概覽

🧰 前置準備
1、建立 Notion 整合(Integration)
• 前往 https://www.notion.so/my-integrations
• 建立一個新 integration,取名為 VocusPoster
• 拿到 integration token,例如:secret_abc123456
• 設定權限, 在Access頁籤裡面設定哪些頁面要給intergration機器人存取。

安裝必要套件
# 處理notion相關操作
notion-client==2.4.0
# 模擬貼文操作
playwright==1.53.0
# 讀取環境變數配置
python-dotenv==1.1.1
# 下載圖片
requests==2.32.4
# 複製與貼上圖片
pyperclip==1.8.2
# 圖片處理
Pillow==11.3.0
pywin32==310
🧱 專案重要程式碼說明
notion-to-vocus/
├── notion_fetcher.py # 取得並轉換 Notion block 為 HTML
├── vocus_uploader.py # 自動登入並貼上草稿
├── run.py # 主程式:串連 Notion + Vocus
├── .env # 存放敏感資料(token、帳號)
└── requirements.txt # 所有依賴套件
🧠 notion_fetcher.py
主要透過notion api 取得頁面內容, 並進行html的轉換。
1-1 Notion內容擷取 - 初始化階段

1-2 Notion內容擷取 - 區塊處理階段

✍️ vocus_uploader.py
這個模組主要負責方格子的登入、內容上傳、圖片處理、程式碼區塊, 這邊技術困難度最高的部分就是圖片及程式碼區塊的處理, 因為圖片牽涉到外部連接與權限, 因此需要下載之後再透過暫存剪貼簿複製貼上, 而方格子的編輯器本身存在一些問題, 程式碼區塊常常會在最後一段就很難往下編輯, 因此需要一些黑科技, 這也是阿Han花費非常多心思的核心邏輯, 也希望有此需求的朋友們能夠支持一下。
1-1 方格子登入流程
這邊的重點技術在於Cookie的保存, 避免每次執行都要再進行登入流程, 另外登入的方式除了傳統的方格子帳號登入之外, 也支援第三方Google登入。

1-2 方格子內容上傳流程

1-3 方格子圖片處理流程

🚀 run.py(主程式)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Notion 到方格子自動化工具
主程式:整合 Notion 內容擷取和方格子自動上傳
"""
from notion_fetcher import fetch_notion_page_html, get_page_title
from vocus_uploader import paste_to_vocus, test_vocus_login
import os
from dotenv import load_dotenv
import argparse
def main():
"""
主程式入口
"""
load_dotenv()
# 解析命令列參數
parser = argparse.ArgumentParser(description='Notion 到方格子自動化工具')
parser.add_argument('--test-login', action='store_true', help='測試方格子登入')
parser.add_argument('--page-id', type=str, help='指定 Notion 頁面 ID')
parser.add_argument('--google-login', action='store_true', help='使用 Google 登入')
args = parser.parse_args()
# 檢查環境變數
notion_token = os.getenv("NOTION_TOKEN")
notion_page_id = args.page_id or os.getenv("NOTION_PAGE_ID")
vocus_email = os.getenv("VOCUS_EMAIL")
print(vocus_email)
vocus_password = os.getenv("VOCUS_PASSWORD")
if not all([notion_token, notion_page_id, vocus_email, vocus_password]):
print("❌ 缺少必要的環境變數!")
print("請確認 .env 檔案包含以下設定:")
print("- NOTION_TOKEN")
print("- NOTION_PAGE_ID")
print("- VOCUS_EMAIL")
print("- VOCUS_PASSWORD")
return
# 測試登入功能
if args.test_login:
print("🧪 開始測試方格子登入...")
if args.google_login:
print("🔐 使用 Google 登入模式")
test_vocus_login(vocus_email, vocus_password, use_google_login=args.google_login)
return
# 主要流程
print("🚀 開始 Notion 到方格子自動化流程...")
print(f"📄 目標頁面 ID: {notion_page_id}")
if args.google_login:
print("🔐 使用 Google 登入模式")
# 1. 從 Notion 取得內容
print("\n📖 正在從 Notion 取得內容...")
html_content = fetch_notion_page_html(notion_page_id)
if not html_content:
print("❌ 無法取得 Notion 內容,請檢查頁面 ID 和權限設定")
return
# 取得頁面標題
page_title = get_page_title(notion_page_id)
print(f"📝 文章標題: {page_title}")
# 顯示內容預覽
preview = html_content[:200] + "..." if len(html_content) > 200 else html_content
print(f"📄 內容預覽: {preview}")
# 2. 自動上傳到方格子
print("\n📤 正在上傳到方格子...")
paste_to_vocus(
email=vocus_email,
password=vocus_password,
content=html_content,
title=page_title,
use_google_login=args.google_login
)
print("\n🎉 自動化流程完成!")
print("💡 請檢查方格子中的草稿並手動發佈")
if __name__ == "__main__":
main()
🎉 工具的使用教學
1、下載專案
2、準備環境
python setup_venv.py
3、設定配置
複製 config.example.env 為 .env 並填入相關配置, 裡面都有詳細說明, 如果不會使用歡迎留言告訴我, 我非常樂意為您解答。
# Notion API 設定
# 前往 https://www.notion.so/my-integrations 建立整合
NOTION_TOKEN=secret_xxx
# Notion 頁面 ID(從頁面 URL 取得)
# 例如:https://www.notion.so/My-Page-1234567890abcdef
# 頁面 ID 就是 1234567890abcdef
NOTION_PAGE_ID=xxxxxxxxxxxxxxxxxxxxxx
# 方格子登入資訊
# 如果使用 Google 登入,請填入你的 Google 帳號和密碼
# 如果使用方格子帳號,請填入方格子帳號和密碼
VOCUS_EMAIL=your@email.com
VOCUS_PASSWORD=yourpassword
4、 登入並產生緩存Cookie
python run.py --test-login --google-login
5、 執行程式
python run.py --google-login
- Playwright 會開啟瀏覽器、自動登入。
- 建立一篇草稿。
- 把 Notion 內容自動貼上。
- ✅ 完成!你可以自行修改內容或發佈文章。
💡 過程我們遇到的坑
• 每次登入都要二階段驗證?
• 按不到某些按鈕?
• 無法貼上圖片?
• 程式碼區塊無法順利貼上?
相信您在實作程式碼的過程中多多少少會遇到我們以上踩過的坑, 沒關係, 這些問題我們都幫您解決了, 如果您需要, 歡迎下載我們的「🎁 開發工具包」, 小額購買, 讓您專注在事務的價值處理上。
🧸 結語:讓創作回到單純
寫作是件開心的事,不應該被複製貼上這種重複性工作消磨熱情。這套 Notion → 方格子自動貼文流程,希望能幫你節省時間、提高創作效率。如果你覺得有幫助,歡迎分享、轉發、拍手👏
最後也謝謝您的閱讀, 本章節的工具詳細內容盡在「🎁 開發工具包」歡迎自行下載使用。
如果你想讓這流程支援圖文排版、封面設定、自動發佈,我也可以幫你做進一步升級, 甚預有BUG也請回報給我,我會持續進行修正, 給您最好的服務體驗的❤️。