
Converts Feishu (Lark) documents into standalone HTML files with faithful Feishu styling, image/attachment downloading, optional base64 embedding, MathJax math, syntax highlighting, async downloads and customizable templates.
A powerful Kotlin Multiplatform library and CLI tool to convert Feishu (Lark) documents to beautiful, standalone HTML files.
๐ Now supports JVM, JS, and Native platforms!
๐ฆ Download Latest Release - Pre-built binaries for macOS, Linux, Windows
๐ View API Documentation - Complete KDoc reference
๐ Maven Central - Use as library dependency
Feishu2HTML faithfully recreates the original styling and layout. Side-by-side comparison:
| Feishu Online | Local HTML Output |
|---|---|
![]() |
![]() |
The generated HTML preserves typography, colors, layout, and all media content with 100% authentic Feishu appearance.
App ID and App Secret
docx:document - View, comment, and export documentsdrive:drive - View and download files in cloud storageImportant: You must grant your app access to the documents you want to export:
Download pre-built binaries from GitHub Releases:
feishu2html-{version}-macosArm64.tar.gz
feishu2html-{version}-macosX64.tar.gz
feishu2html-{version}-linuxX64.tar.gz
feishu2html-{version}-mingwX64.zip
feishu2html-{version}-jvm.jar
Or use Maven Central to add as a library dependency.
Using JAR (Recommended):
Download the JVM JAR from GitHub Releases:
# Download
curl -L -O https://github.com/yidafu/feishu2html/releases/latest/download/feishu2html-1.0.2-jvm.jar
# Basic usage - Export a single document
java -jar feishu2html-1.0.2-jvm.jar <app_id> <app_secret> <document_id>
# Export multiple documents
java -jar feishu2html-1.0.2-jvm.jar <app_id> <app_secret> <doc_id_1> <doc_id_2> <doc_id_3>
# With options for standalone HTML (embedded images and CSS)
java -jar feishu2html-1.0.2-jvm.jar --inline-images --inline-css <app_id> <app_secret> <document_id>
# Clean output (hide unsupported block warnings)
java -jar feishu2html-1.0.2-jvm.jar --hide-unsupported <app_id> <app_secret> <document_id>
# All options combined
java -jar feishu2html-1.0.2-jvm.jar -t fragment --inline-images --inline-css --hide-unsupported <app_id> <app_secret> <document_id>CLI Options:
Options:
-t, --template <mode> HTML template mode: default | fragment | full
--inline-images Embed images as base64 data URLs
--inline-css Embed CSS styles inline in <style> tag
--hide-unsupported Hide unsupported block type warnings
-h, --help Show help message
Using Gradle (from source):
# Clone the repository
git clone https://github.com/yidafu/feishu2html.git
cd feishu2html
# Build and run
./gradlew runJvm --args="<app_id> <app_secret> <document_id>"
./gradlew runJvm --args="--inline-images --inline-css <app_id> <app_secret> <document_id>"Example:
java -jar feishu2html-1.0.2-jvm.jar cli_a1234567890abcde your_app_secret_here doxcnABC123XYZ456Output files will be saved to ./output/ directory by default.
Kotlin Multiplatform Project:
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("dev.yidafu.feishu2html:feishu2html:1.0.2")
}
}
}
}JVM-only Project:
dependencies {
implementation("dev.yidafu.feishu2html:feishu2html-jvm:1.0.2")
}JS Project:
dependencies {
implementation("dev.yidafu.feishu2html:feishu2html-js:1.0.2")
}import dev.yidafu.feishu2html.Feishu2Html
import dev.yidafu.feishu2html.Feishu2HtmlOptions
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret"
)
// Use .use {} for automatic resource management
Feishu2Html(options).use { converter ->
converter.export("doxcnABC123XYZ456")
println("Export completed successfully!")
}
}import dev.yidafu.feishu2html.Feishu2Html
import dev.yidafu.feishu2html.Feishu2HtmlOptions
import dev.yidafu.feishu2html.TemplateMode
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
outputDir = "./output", // HTML output directory
imageDir = "./output/images", // Image save directory
fileDir = "./output/files", // Attachment save directory
imagePath = "images", // Relative path for images in HTML
filePath = "files", // Relative path for files in HTML
externalCss = false, // Inline CSS (true = external file)
customCss = null, // Custom CSS (optional)
templateMode = TemplateMode.DEFAULT, // HTML template mode
inlineImages = true, // Embed images as base64
showUnsupportedBlocks = false // Hide unsupported block warnings
)
// Automatic resource cleanup with use {}
Feishu2Html(options).use { converter ->
// Batch export multiple documents
val documentIds = listOf(
"doxcnABC123XYZ456",
"doxcnDEF789GHI012",
"doxcnJKL345MNO678"
)
converter.exportBatch(documentIds)
println("Batch export completed!")
}
}Available Options:
| Option | Type | Default | Description |
|---|---|---|---|
appId |
String | required | Feishu application App ID |
appSecret |
String | required | Feishu application App Secret |
outputDir |
String | "./output" |
HTML output directory |
imageDir |
String | "./output/images" |
Image save directory |
fileDir |
String | "./output/files" |
Attachment save directory |
imagePath |
String | "images" |
Relative path for images in HTML |
filePath |
String | "files" |
Relative path for files in HTML |
customCss |
String? | null |
Custom CSS styles |
externalCss |
Boolean | true |
Use external CSS file (false = inline) |
cssFileName |
String | "feishu-style-optimized.css" |
CSS filename |
templateMode |
TemplateMode | DEFAULT |
HTML template mode |
inlineImages |
Boolean | false |
Embed images as base64 data URLs |
showUnsupportedBlocks |
Boolean | true |
Show unsupported block warnings |
By default, exported HTML uses an optimized version extracted from official Feishu CSS:
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
externalCss = true, // Use external CSS file (default)
cssFileName = "feishu-style-optimized.css" // Optimized CSS (default, 16KB)
)
Feishu2Html(options).use { converter ->
converter.export("document_id")
}
// Output:
// - document.html (with <link> to CSS)
// - feishu-style-optimized.css (optimized styles, only 16KB!)Why Optimized CSS? 98.4% smaller (16KB vs 1MB), faster load times, only needed selectors, 100% authentic appearance.
Use inline CSS for single-file portability (no separate CSS file):
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
externalCss = false // Embed CSS in <style> tag
)Override with your own CSS (requires inline mode):
val customCss = """
.protyle-wysiwyg { font-family: "Inter", sans-serif; }
.heading-h1 { color: #2c3e50; border-bottom: 3px solid #3498db; }
/* Add more custom styles... */
""".trimIndent()
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
externalCss = false, // Must use inline mode
customCss = customCss
)Detailed platform-specific usage guides:
Feishu2HTML is built with Kotlin Multiplatform, enabling it to run on multiple platforms from a single codebase.
| Platform | Status | Notes |
|---|---|---|
| JVM | โ Production Ready | Full features (Library + CLI) |
| JS (Node.js) | โ Fully Supported | Core library features |
| Native (macOS) | โ Verified | Core library features, tested on Intel & Apple Silicon |
| Native (Linux x64) | ๐ Experimental | Core library features |
| Native (Windows x64) | ๐ Experimental | Core library features |
| iOS | ๐ Experimental | Core library features |
Build for specific platforms:
# JVM
./gradlew compileKotlinJvm
./gradlew jvmJar
# JS
./gradlew compileKotlinJs
./gradlew jsJar
# Native (macOS ARM64)
./gradlew compileKotlinMacosArm64
# All platforms
./gradlew buildAll platforms use the same API (see Library Usage for examples):
runBlocking coroutine scopeGlobalScope.promise for async executionrunBlocking coroutine scopeThe document ID can be extracted from the Feishu document URL:
https://example.feishu.cn/docx/doxcnABC123XYZ456
โโโโโโโโโโโโโโโโโโโ
Document ID
For example:
https://company.feishu.cn/docx/TPDddjY5foJZ8axlf9fctf2Wnse
TPDddjY5foJZ8axlf9fctf2Wnse
Error: Failed to get token: app access token invalid
Solutions:
app_id and app_secret are correctError: Failed to get document content: no permission
Solutions:
Solutions:
drive:drive permissionWhen a Feishu document contains references to other documents (e.g., embedded documents, links to other docs), you must grant your app access to all referenced documents as well. The tool cannot automatically propagate permissions.
Workaround: Manually share each referenced document with your app before exporting.
Content from real-time collaboration features (e.g., comments, suggestions) is not included in the export.
Some advanced block types are not yet supported (ISV, Mindnote, Sheet, Task, OKR, Wiki Catalog, Agenda, Link Preview, etc.). By default, these will display a placeholder message for debugging purposes.
Solution: Use the --hide-unsupported CLI option or set showUnsupportedBlocks = false in library usage to hide these warnings for cleaner output.
# CLI: Hide unsupported block warnings
java -jar feishu2html.jar --hide-unsupported <app_id> <app_secret> <document_id>// Library: Hide unsupported block warnings
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
showUnsupportedBlocks = false // Hide warnings
)See the Supported Block Types table for a complete list.
The Feishu API has rate limits. The tool includes built-in rate limiting (QPS=2) to avoid exceeding limits, but very large documents may take time to process.
Complete API documentation is automatically generated and published to GitHub Pages:
๐ View Online API Documentation
The documentation is automatically updated on every push to the main branch.
| Block Type | Type Code | Support Status | Notes |
|---|---|---|---|
| Page | 1 | โ Full | - |
| Text | 2 | โ Full | - |
| Heading 1-9 | 3-11 | โ Full | All 9 levels supported |
| Bullet List | 12 | โ Full | - |
| Ordered List | 13 | โ Full | - |
| Code Block | 14 | โ Full | 70+ languages |
| Quote | 15 | โ Full | - |
| Equation | 16 | โ Full | MathJax rendering |
| Todo | 17 | โ Full | - |
| Bitable | 18 | Placeholder only | |
| Callout | 19 | โ Full | - |
| Chat Card | 20 | Placeholder only | |
| Diagram | 21 | โ Full | - |
| Divider | 22 | โ Full | - |
| File | 23 | โ Full | - |
| Grid | 24 | โ Full | Column layout |
| Grid Column | 25 | โ Full | - |
| Iframe | 26 | โ Full | Multiple embed types |
| Image | 27 | โ Full | - |
| ISV | 28 | โ Unsupported | - |
| Mindnote | 29 | โ Unsupported | - |
| Sheet | 30 | โ Unsupported | - |
| Table | 31 | โ Full | - |
| Table Cell | 32 | โ Full | - |
| View | 33 | โ Unsupported | - |
| Quote Container | 34 | โ Full | - |
| Task | 35 | โ Unsupported | - |
| OKR | 36 | โ Unsupported | - |
| OKR Objective | 37 | โ Unsupported | - |
| OKR Key Result | 38 | โ Unsupported | - |
| OKR Progress | 39 | โ Unsupported | - |
| Add-ons | 40 | โ Unsupported | Plugin components |
| Jira Issue | 41 | โ Unsupported | - |
| Wiki Catalog | 42 | โ Unsupported | Legacy wiki subpage list |
| Board | 43 | โ Full | Electronic whiteboard |
| Agenda | 44 | โ Unsupported | - |
| Agenda Item | 45 | โ Unsupported | - |
| Agenda Item Title | 46 | โ Unsupported | - |
| Agenda Item Content | 47 | โ Unsupported | - |
| Link Preview | 48 | โ Unsupported | - |
| Source Synced | 49 | โ Unsupported | - |
| Reference Synced | 50 | โ Unsupported | - |
| Sub Page List | 51 | โ Unsupported | Wiki subpage list (new) |
| AI Template | 52 | โ Unsupported | - |
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! See CONTRIBUTING.md for architecture, coding standards, and PR guidelines.
This project was inspired by feishu2md.
20:53:59.100 [main] INFO dev.yidafu.feishu2html.api.FeishuAuthService -- Requesting new tenant_access_token 20:53:59.100 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App ID: cli_a8790687b4bdd01c 20:53:59.101 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App Secret: 3sXNpzmX4ErVg07gNMOgdMkQn2usPg
20:54:47.596 [main] INFO dev.yidafu.feishu2html.api.FeishuAuthService -- Requesting new tenant_access_token 20:54:47.596 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App ID: cli_a8790687b4bdd01c 20:54:47.596 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App Secret: 3sxXNpzmX4ErVg07gNMOgdMkQn2usPgq
A powerful Kotlin Multiplatform library and CLI tool to convert Feishu (Lark) documents to beautiful, standalone HTML files.
๐ Now supports JVM, JS, and Native platforms!
๐ฆ Download Latest Release - Pre-built binaries for macOS, Linux, Windows
๐ View API Documentation - Complete KDoc reference
๐ Maven Central - Use as library dependency
Feishu2HTML faithfully recreates the original styling and layout. Side-by-side comparison:
| Feishu Online | Local HTML Output |
|---|---|
![]() |
![]() |
The generated HTML preserves typography, colors, layout, and all media content with 100% authentic Feishu appearance.
App ID and App Secret
docx:document - View, comment, and export documentsdrive:drive - View and download files in cloud storageImportant: You must grant your app access to the documents you want to export:
Download pre-built binaries from GitHub Releases:
feishu2html-{version}-macosArm64.tar.gz
feishu2html-{version}-macosX64.tar.gz
feishu2html-{version}-linuxX64.tar.gz
feishu2html-{version}-mingwX64.zip
feishu2html-{version}-jvm.jar
Or use Maven Central to add as a library dependency.
Using JAR (Recommended):
Download the JVM JAR from GitHub Releases:
# Download
curl -L -O https://github.com/yidafu/feishu2html/releases/latest/download/feishu2html-1.0.2-jvm.jar
# Basic usage - Export a single document
java -jar feishu2html-1.0.2-jvm.jar <app_id> <app_secret> <document_id>
# Export multiple documents
java -jar feishu2html-1.0.2-jvm.jar <app_id> <app_secret> <doc_id_1> <doc_id_2> <doc_id_3>
# With options for standalone HTML (embedded images and CSS)
java -jar feishu2html-1.0.2-jvm.jar --inline-images --inline-css <app_id> <app_secret> <document_id>
# Clean output (hide unsupported block warnings)
java -jar feishu2html-1.0.2-jvm.jar --hide-unsupported <app_id> <app_secret> <document_id>
# All options combined
java -jar feishu2html-1.0.2-jvm.jar -t fragment --inline-images --inline-css --hide-unsupported <app_id> <app_secret> <document_id>CLI Options:
Options:
-t, --template <mode> HTML template mode: default | fragment | full
--inline-images Embed images as base64 data URLs
--inline-css Embed CSS styles inline in <style> tag
--hide-unsupported Hide unsupported block type warnings
-h, --help Show help message
Using Gradle (from source):
# Clone the repository
git clone https://github.com/yidafu/feishu2html.git
cd feishu2html
# Build and run
./gradlew runJvm --args="<app_id> <app_secret> <document_id>"
./gradlew runJvm --args="--inline-images --inline-css <app_id> <app_secret> <document_id>"Example:
java -jar feishu2html-1.0.2-jvm.jar cli_a1234567890abcde your_app_secret_here doxcnABC123XYZ456Output files will be saved to ./output/ directory by default.
Kotlin Multiplatform Project:
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("dev.yidafu.feishu2html:feishu2html:1.0.2")
}
}
}
}JVM-only Project:
dependencies {
implementation("dev.yidafu.feishu2html:feishu2html-jvm:1.0.2")
}JS Project:
dependencies {
implementation("dev.yidafu.feishu2html:feishu2html-js:1.0.2")
}import dev.yidafu.feishu2html.Feishu2Html
import dev.yidafu.feishu2html.Feishu2HtmlOptions
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret"
)
// Use .use {} for automatic resource management
Feishu2Html(options).use { converter ->
converter.export("doxcnABC123XYZ456")
println("Export completed successfully!")
}
}import dev.yidafu.feishu2html.Feishu2Html
import dev.yidafu.feishu2html.Feishu2HtmlOptions
import dev.yidafu.feishu2html.TemplateMode
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
outputDir = "./output", // HTML output directory
imageDir = "./output/images", // Image save directory
fileDir = "./output/files", // Attachment save directory
imagePath = "images", // Relative path for images in HTML
filePath = "files", // Relative path for files in HTML
externalCss = false, // Inline CSS (true = external file)
customCss = null, // Custom CSS (optional)
templateMode = TemplateMode.DEFAULT, // HTML template mode
inlineImages = true, // Embed images as base64
showUnsupportedBlocks = false // Hide unsupported block warnings
)
// Automatic resource cleanup with use {}
Feishu2Html(options).use { converter ->
// Batch export multiple documents
val documentIds = listOf(
"doxcnABC123XYZ456",
"doxcnDEF789GHI012",
"doxcnJKL345MNO678"
)
converter.exportBatch(documentIds)
println("Batch export completed!")
}
}Available Options:
| Option | Type | Default | Description |
|---|---|---|---|
appId |
String | required | Feishu application App ID |
appSecret |
String | required | Feishu application App Secret |
outputDir |
String | "./output" |
HTML output directory |
imageDir |
String | "./output/images" |
Image save directory |
fileDir |
String | "./output/files" |
Attachment save directory |
imagePath |
String | "images" |
Relative path for images in HTML |
filePath |
String | "files" |
Relative path for files in HTML |
customCss |
String? | null |
Custom CSS styles |
externalCss |
Boolean | true |
Use external CSS file (false = inline) |
cssFileName |
String | "feishu-style-optimized.css" |
CSS filename |
templateMode |
TemplateMode | DEFAULT |
HTML template mode |
inlineImages |
Boolean | false |
Embed images as base64 data URLs |
showUnsupportedBlocks |
Boolean | true |
Show unsupported block warnings |
By default, exported HTML uses an optimized version extracted from official Feishu CSS:
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
externalCss = true, // Use external CSS file (default)
cssFileName = "feishu-style-optimized.css" // Optimized CSS (default, 16KB)
)
Feishu2Html(options).use { converter ->
converter.export("document_id")
}
// Output:
// - document.html (with <link> to CSS)
// - feishu-style-optimized.css (optimized styles, only 16KB!)Why Optimized CSS? 98.4% smaller (16KB vs 1MB), faster load times, only needed selectors, 100% authentic appearance.
Use inline CSS for single-file portability (no separate CSS file):
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
externalCss = false // Embed CSS in <style> tag
)Override with your own CSS (requires inline mode):
val customCss = """
.protyle-wysiwyg { font-family: "Inter", sans-serif; }
.heading-h1 { color: #2c3e50; border-bottom: 3px solid #3498db; }
/* Add more custom styles... */
""".trimIndent()
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
externalCss = false, // Must use inline mode
customCss = customCss
)Detailed platform-specific usage guides:
Feishu2HTML is built with Kotlin Multiplatform, enabling it to run on multiple platforms from a single codebase.
| Platform | Status | Notes |
|---|---|---|
| JVM | โ Production Ready | Full features (Library + CLI) |
| JS (Node.js) | โ Fully Supported | Core library features |
| Native (macOS) | โ Verified | Core library features, tested on Intel & Apple Silicon |
| Native (Linux x64) | ๐ Experimental | Core library features |
| Native (Windows x64) | ๐ Experimental | Core library features |
| iOS | ๐ Experimental | Core library features |
Build for specific platforms:
# JVM
./gradlew compileKotlinJvm
./gradlew jvmJar
# JS
./gradlew compileKotlinJs
./gradlew jsJar
# Native (macOS ARM64)
./gradlew compileKotlinMacosArm64
# All platforms
./gradlew buildAll platforms use the same API (see Library Usage for examples):
runBlocking coroutine scopeGlobalScope.promise for async executionrunBlocking coroutine scopeThe document ID can be extracted from the Feishu document URL:
https://example.feishu.cn/docx/doxcnABC123XYZ456
โโโโโโโโโโโโโโโโโโโ
Document ID
For example:
https://company.feishu.cn/docx/TPDddjY5foJZ8axlf9fctf2Wnse
TPDddjY5foJZ8axlf9fctf2Wnse
Error: Failed to get token: app access token invalid
Solutions:
app_id and app_secret are correctError: Failed to get document content: no permission
Solutions:
Solutions:
drive:drive permissionWhen a Feishu document contains references to other documents (e.g., embedded documents, links to other docs), you must grant your app access to all referenced documents as well. The tool cannot automatically propagate permissions.
Workaround: Manually share each referenced document with your app before exporting.
Content from real-time collaboration features (e.g., comments, suggestions) is not included in the export.
Some advanced block types are not yet supported (ISV, Mindnote, Sheet, Task, OKR, Wiki Catalog, Agenda, Link Preview, etc.). By default, these will display a placeholder message for debugging purposes.
Solution: Use the --hide-unsupported CLI option or set showUnsupportedBlocks = false in library usage to hide these warnings for cleaner output.
# CLI: Hide unsupported block warnings
java -jar feishu2html.jar --hide-unsupported <app_id> <app_secret> <document_id>// Library: Hide unsupported block warnings
val options = Feishu2HtmlOptions(
appId = "your_app_id",
appSecret = "your_app_secret",
showUnsupportedBlocks = false // Hide warnings
)See the Supported Block Types table for a complete list.
The Feishu API has rate limits. The tool includes built-in rate limiting (QPS=2) to avoid exceeding limits, but very large documents may take time to process.
Complete API documentation is automatically generated and published to GitHub Pages:
๐ View Online API Documentation
The documentation is automatically updated on every push to the main branch.
| Block Type | Type Code | Support Status | Notes |
|---|---|---|---|
| Page | 1 | โ Full | - |
| Text | 2 | โ Full | - |
| Heading 1-9 | 3-11 | โ Full | All 9 levels supported |
| Bullet List | 12 | โ Full | - |
| Ordered List | 13 | โ Full | - |
| Code Block | 14 | โ Full | 70+ languages |
| Quote | 15 | โ Full | - |
| Equation | 16 | โ Full | MathJax rendering |
| Todo | 17 | โ Full | - |
| Bitable | 18 | Placeholder only | |
| Callout | 19 | โ Full | - |
| Chat Card | 20 | Placeholder only | |
| Diagram | 21 | โ Full | - |
| Divider | 22 | โ Full | - |
| File | 23 | โ Full | - |
| Grid | 24 | โ Full | Column layout |
| Grid Column | 25 | โ Full | - |
| Iframe | 26 | โ Full | Multiple embed types |
| Image | 27 | โ Full | - |
| ISV | 28 | โ Unsupported | - |
| Mindnote | 29 | โ Unsupported | - |
| Sheet | 30 | โ Unsupported | - |
| Table | 31 | โ Full | - |
| Table Cell | 32 | โ Full | - |
| View | 33 | โ Unsupported | - |
| Quote Container | 34 | โ Full | - |
| Task | 35 | โ Unsupported | - |
| OKR | 36 | โ Unsupported | - |
| OKR Objective | 37 | โ Unsupported | - |
| OKR Key Result | 38 | โ Unsupported | - |
| OKR Progress | 39 | โ Unsupported | - |
| Add-ons | 40 | โ Unsupported | Plugin components |
| Jira Issue | 41 | โ Unsupported | - |
| Wiki Catalog | 42 | โ Unsupported | Legacy wiki subpage list |
| Board | 43 | โ Full | Electronic whiteboard |
| Agenda | 44 | โ Unsupported | - |
| Agenda Item | 45 | โ Unsupported | - |
| Agenda Item Title | 46 | โ Unsupported | - |
| Agenda Item Content | 47 | โ Unsupported | - |
| Link Preview | 48 | โ Unsupported | - |
| Source Synced | 49 | โ Unsupported | - |
| Reference Synced | 50 | โ Unsupported | - |
| Sub Page List | 51 | โ Unsupported | Wiki subpage list (new) |
| AI Template | 52 | โ Unsupported | - |
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! See CONTRIBUTING.md for architecture, coding standards, and PR guidelines.
This project was inspired by feishu2md.
20:53:59.100 [main] INFO dev.yidafu.feishu2html.api.FeishuAuthService -- Requesting new tenant_access_token 20:53:59.100 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App ID: cli_a8790687b4bdd01c 20:53:59.101 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App Secret: 3sXNpzmX4ErVg07gNMOgdMkQn2usPg
20:54:47.596 [main] INFO dev.yidafu.feishu2html.api.FeishuAuthService -- Requesting new tenant_access_token 20:54:47.596 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App ID: cli_a8790687b4bdd01c 20:54:47.596 [main] DEBUG dev.yidafu.feishu2html.api.FeishuAuthService -- App Secret: 3sxXNpzmX4ErVg07gNMOgdMkQn2usPgq