# 用python把notion筆記搬到hackmd (部分自動) 需求: 希望把notion的筆記全都搬到hackmd,但不想手動建立。 可用 python 幫忙處理 **hackmd建立筆記** 這段動作。 大致需要準備三件事: 1.安裝 Python(如果你本來就有就跳過) 2.取得你的 HackMD API Token 3.有一個資料夾,裡面放著你 Notion 匯出的 .md 檔 ## 第一步:拿到 HackMD 的 API Token (這是讓你的小程式能登入你的 HackMD) 打開 HackMD,登入你的帳號 進到這個頁面 ➔ ```HackMD API``` 設定 按下``` Generate API Token``` 複製那一串長長的 Token(很重要!要保密) (等一下要貼進 Python 程式裡) ## 第二步:準備 Python 環境 如果你有 Python 了直接跳過~ 如果沒有,去 Python官網 下載一個就好,很快。 (安裝時記得勾選 Add Python to PATH) 然後要裝一個小工具: ```bash! pip install requests ``` 這個是用來連線到 HackMD 的。 ## 第三步:超簡單自動上傳腳本 我直接寫給你(你可以複製下面這段): ```python! import os import requests # 你的 HackMD API Token HACKMD_API_TOKEN = '這裡貼上你的 Token' # 你的 md 檔案放的資料夾路徑 MARKDOWN_FOLDER = r'C:\Users\你的使用者名稱\Desktop\notion-export' # HackMD API網址 API_URL = 'https://api.hackmd.io/v1/notes' # 設定 headers headers = { 'Authorization': f'Bearer {HACKMD_API_TOKEN}', 'Content-Type': 'application/json' } # 遍歷資料夾內所有.md檔案 for filename in os.listdir(MARKDOWN_FOLDER): if filename.endswith('.md'): filepath = os.path.join(MARKDOWN_FOLDER, filename) with open(filepath, 'r', encoding='utf-8') as f: content = f.read() # 取檔名當筆記標題(去掉副檔名) title = os.path.splitext(filename)[0] # 送出建立新筆記的請求 data = { 'title': title, 'content': content, 'readPermission': 'everyone', # 可改成 'owner' 只自己看 'writePermission': 'signed_in' # 可改成 'owner' 只有自己能改 } response = requests.post(API_URL, headers=headers, json=data) if response.status_code == 200: print(f"成功上傳:{title}") else: print(f"失敗:{title},錯誤:{response.text}") ``` 跑法很簡單 把上面這段貼到一個 ```upload_to_hackmd.py ```檔案 改成你的資料夾路徑 把你的 HackMD Token 貼上 在命令列(cmd/Terminal)裡跑: ```bash! python upload_to_hackmd.py ``` 然後它就會一篇一篇自動建立筆記在你的 HackMD 帳號上啦! 額外提醒 這個 ```script``` 預設每篇都開放閱讀(```readPermission: everyone```) 如果想讓筆記只有自己看到,可以把 ```readPermission``` 改成``` 'owner'``` 如果筆記有很多圖片,要另外補上 HackMD 支援的圖片連結(因為 Notion匯出時圖片是本機檔) ----- ## 其他說明或問題: **Q:如何檢查自己電腦環境是否安裝過python?** **A:** Windows:打開命令提示字元(CMD) 快捷鍵:Win + R → 輸入 cmd → 按 Enter 輸入以下指令並按 Enter: python --version 或者: py --version 若有安裝,會顯示python的版本號碼,類似: Python 3.11.4 ----- **Q:我的資料夾架構長相** A:我直接放截圖(如下) 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up