Crates.io | notion2md |
lib.rs | notion2md |
version | |
source | src |
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 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
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