| Crates.io | notion2md |
| lib.rs | notion2md |
| version | 0.1.0-alpha.3 |
| created_at | 2025-05-06 06:21:04.363627+00 |
| updated_at | 2025-05-08 01:54:07.134653+00 |
| description | A Rust library for converting Notion pages to Markdown |
| homepage | |
| repository | https://github.com/4kk11/notion2md |
| max_upload_size | |
| id | 1661925 |
| size | 103,947 |
NotionのページをMarkdownに変換するためのRustライブラリです。Notion APIを使用してページの内容を取得し、様々なブロックタイプに対応したMarkdown形式に変換します。
[dependencies]
notion2md = "0.1.0"
use notion2md::builder::NotionToMarkdownBuilder;
use notion_client::endpoints::Client;
use anyhow::Result;
async fn convert_page() -> Result<String> {
// Notion APIトークンを環境変数から取得
let notion_token = std::env::var("NOTION_TOKEN")?;
// Notion APIクライアントを初期化
let notion_client = Client::new(notion_token, None)?;
// コンバーターをビルド
let converter = NotionToMarkdownBuilder::new(notion_client)
.build();
// ページを変換
let page_id = "your-page-id";
let markdown = converter.convert_page(page_id).await?;
Ok(markdown)
}
各ブロックタイプの変換方法をカスタマイズできます:
use notion2md::builder::NotionToMarkdownBuilder;
use notion_client::endpoints::Client;
async fn custom_converter() -> Result<()> {
let notion_client = Client::new(notion_token, None)?;
// カスタムコンバーターを設定
let converter = NotionToMarkdownBuilder::new(notion_client)
.heading_1(|payload| {
let text = NotionToMarkdown::rich_text_to_markdown(&payload.value.rich_text);
Ok(format!("# {}\n", text))
})
.code(|payload| {
let text = NotionToMarkdown::rich_text_to_markdown(&payload.value.rich_text);
let lang = format!("{:?}", payload.value.language).to_lowercase();
Ok(format!("```{}\n{}\n```\n", lang, text))
})
.build();
// 変換を実行
let markdown = converter.convert_page(page_id).await?;
Ok(())
}
use std::fs;
use std::path::PathBuf;
async fn save_to_file() -> Result<()> {
let markdown = converter.convert_page(page_id).await?;
// 出力ディレクトリを作成
let output_dir = PathBuf::from("output");
fs::create_dir_all(&output_dir)?;
// ファイルに保存
let output_path = output_dir.join("page.md");
fs::write(output_path, markdown)?;
Ok(())
}
MIT License