markdown-to-feishu
ローカルのMarkdownドキュメントをFeishuクラウドドキュメントにアップロードし、同時にローカルの画像も自動でアップロードできます。ユーザーがMarkdownファイルのパスを指定して、Feishuに同期しながら基本的なフォーマットと画像を保持したい場合に活用できます。Obsidian、ローカルナレッジベース、$feishu-to-markdownでエクスポートされたMarkdownファイルの逆同期シーンに最適です。
description の原文を見る
将本地 Markdown 文档上传为飞书云文档,并自动上传本地图片。用于用户提供 Markdown 文件路径,希望同步到飞书、保留基础格式和图片时。适合 Obsidian、本地知识库和由 $feishu-to-markdown 导出的 Markdown 回传场景。
SKILL.md 本文
Markdown to Feishu
概要
2層アーキテクチャ:
| 層 | 処理方式 | 対応要素 |
|---|---|---|
| Tier 1 | Python スクリプト自動処理 | 見出し、段落、インラインスタイル、ネイティブ順序付きリスト(ネストを含む)、ネイティブ箇条書きリスト(ネストを含む)、コードブロック、引用、区切り線、画像(Grid レイアウト含む)、Markdown テーブル、HTML テーブル(セル内ネストリスト含む)、タスクリスト |
| Tier 2 | AI が MCP ツール呼び出し | Mermaid フローチャート → Feishu ホワイトボード |
対応要素
- 見出し: H1-H6 → Feishu 見出しブロック(一級見出しの前に自動的にセクション分割用の空行を挿入)
- 段落: 太字、斜体、打ち消し線、下線、ハイライト、色、インラインコード、リンクを含む
- 順序付きリスト: ネイティブ block_type 13、複数層のネスト対応
- 箇条書きリスト: ネイティブ block_type 12、複数層のネスト対応
- タスクリスト:
- [x]/- [ ]→ Feishu todo ブロック - コードブロック: 40+ 言語のシンタックスハイライト対応
- 引用ブロック:
>引用 - 区切り線:
---/*** - 画像: ローカル画像は自動アップロード、並行 Grid レイアウト対応(
で幅制御) - Markdown テーブル:
| head | head |形式、列幅は自動均等配分 - HTML テーブル:
<table>タグ、セル内<ol>/<ul>ネストリスト、<strong>太字、<br/>改行、<a>リンク、colspanに対応、列幅は自動均等配分 - Mermaid フローチャート: コードブロック フォールバック + Tier 2 ホワイトボード レンダリング
初回使用
Feishu オープンプラットフォームの App ID と App Secret が必要です。
# 設定を初期化
python "${SKILL_DIR}\scripts\setup.py" init
# 接続をテスト
python "${SKILL_DIR}\scripts\setup.py" test
# 設定を表示
python "${SKILL_DIR}\scripts\setup.py" show
環境変数でのオーバーライドにも対応:FEISHU_APP_ID、FEISHU_APP_SECRET
依存関係のインストール(初回使用時):
pip install -r "${SKILL_DIR}\requirements.txt"
使用方法
Tier 1: Python スクリプト(自動)
python "${SKILL_DIR}\scripts\main.py" "D:\path\to\document.md"
スクリプトは自動的にすべての Tier 1 要素を処理し、Feishu ドキュメントリンクを出力します。
Tier 2: Mermaid ホワイトボード(AI 補助)
スクリプト出力に ---MERMAID_DATA_START--- マークが含まれている場合、ドキュメント内に Mermaid フローチャートがホワイトボードとしてレンダリングされる必要があります。
手順:
---MERMAID_DATA_START---と---MERMAID_DATA_END---の間の JSON を解析- JSON フォーマット:
{"document_id": "...", "mermaid_blocks": [{"code": "...", "fallback_block_id": "..."}]} - 各 mermaid ブロックについて:
a.
batch_create_feishu_blocksを呼び出してドキュメント内にホワイトボードブロック(whiteboard タイプ)を作成 b.fill_whiteboard_with_plantumlを呼び出して mermaid コードを填充(syntax_type: 2は Mermaid シンタックスを示す) c. 成功後、オプションでフォールバックコードブロック(fallback_block_id)を削除 d. 失敗した場合、フォールバックコードブロックはそのままにして、ユーザーに通知
スクリプト出力に MERMAID_DATA マークが含まれていない場合、Tier 2 操作は不要です。
ワークフロー
1. Python スクリプトを実行 → Feishu ドキュメント作成 + すべての Tier 1 コンテンツをアップロード
2. 出力に MERMAID_DATA が含まれているか確認
3. 含まれている場合 → Tier 2 MCP 操作を実行
4. Feishu ドキュメントリンクをユーザーに返す
画像パスルール
画像パスは Markdown ファイルが配置されているディレクトリを基準に解析されます:
images/xxx.png(同じレベルの images ディレクトリ)ドキュメントタイトル.assets/xxx.png(Obsidian スタイル)./assets/xxx.png(相対パス)- 絶対パス
リモート画像 URL はサポートされていません。
注記
- Feishu API レート制限:3 回/秒、スクリプトに遅延と再試行がビルトイン
- HTML テーブル
colspanは空セルでシミュレート(Feishu はセル結合に未対応) - 順序付きリストのネスト構造は descendant API で一度に作成、3~4 層の深さに対応
- ユーザーの Markdown が
$feishu-to-markdownからのものである場合、ローカル画像参照を直接再利用できます
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Aojianlong
- ライセンス
- MIT
- 最終更新
- 2026/3/14
Source: https://github.com/Aojianlong/markdown-to-feishu / ライセンス: MIT