README file from
GithubEnglish | 中文
Components Library Downloader
An Obsidian plugin for downloading file assets from Feishu wiki bitable libraries into configured folders inside the current vault.
Features
- Built-in presets for three Feishu libraries:
components,xdbjs, andforms - Uses Obsidian native
requestUrlto access Feishu APIs without a custom server - Dedicated library view with tabs for all three libraries
- Card-based grid UI for file metadata, cover previews, and attachments
- Image preview, carousel, and lightbox support
- Download progress feedback
- Duplicate-file handling with skip, rename, or overwrite choices
- Separate download paths for each library
- Special
.jsrouting for theformslibrary - External plugin settings sync support for:
components.foldercomponents.scriptFolderform-flow.formFolderform-flow.scriptFolder
- Built-in Chinese and English i18n
How it works
The plugin uses your Feishu Open Platform app credentials to fetch a tenant_access_token, resolves the built-in wiki links to bitable targets, reads records from the linked tables, and downloads attachment files into your Obsidian vault.
Credentials are stored locally in Obsidian plugin settings and are not kept in source code.
Installation
Manual installation
- Download the build artifacts:
main.js,manifest.json, andstyles.css - Create
.obsidian/plugins/components-lib-downloader/inside your vault - Copy the files into that folder
- Restart Obsidian, or refresh community plugins in settings
- Enable
Components Library Downloader
BRAT installation
- Install BRAT
- Click
Add Beta pluginin BRAT settings - Enter this repository URL
- Install and enable the plugin
Feishu setup
Before first use, create a custom app in Feishu Open Platform and fill in App ID and App Secret in the plugin settings.
Required scopes
{
"scopes": {
"tenant": [
"base:app:read",
"base:block:read",
"base:field:read",
"base:history:read",
"base:record:read",
"base:record:retrieve",
"base:table:read",
"bitable:app:readonly",
"docs:document.media:download",
"drive:file:download",
"wiki:wiki:readonly"
],
"user": [
"base:field:read"
]
}
}
Setup steps
- Open Feishu Open Platform
- Create a custom app
- Import the JSON above in
Permission Management - Publish an app version
- Copy
App IDandApp SecretfromCredentials & Basic Info - Return to Obsidian and fill them in
Usage
1. Open the library view
Available entry points:
- Command palette:
Feishu: Open library viewFeishu: Test connectionFeishu: Refresh default library
- Ribbon icon
2. Browse libraries
Inside the view, you can:
- Switch between
components,xdbjs, andforms - Open the linked Feishu wiki page
- Refresh the current library
- Edit the current library download path
- Sort by updated time or title
3. Download attachments
Use the download button on any attachment row.
The download flow includes:
- target path check
- duplicate file detection
- Feishu access token fetch
- attachment download
- vault write
For the forms library:
- regular form files go to
feishu.downloadPaths.forms .jsfiles go tofeishu.downloadPaths.formScripts
Settings
The settings UI includes two tabs:
GeneralSetup Guide
Main settings
App IDApp Secretxdbjsdownload pathcomponentsdownload pathformscform download pathformsJS download path
External plugin path sync
The sync button beside each path can copy values from other installed and enabled plugins:
componentslibrary ←components.folderxdbjslibrary ←components.scriptFolderformscform ←form-flow.formFolderformsJS ←form-flow.scriptFolder
Development
Requirements
- Node.js
>= 20 - pnpm
Install dependencies
pnpm install
Common commands
pnpm dev
pnpm build
pnpm lint
pnpm test
pnpm i18n:typesafe
pnpm i18n:sync
Tech stack
- TypeScript
- Obsidian Plugin API
- React 18
- Lucide React
- Jest
- typesafe-i18n
Compatibility
- Minimum Obsidian version:
1.11.0 - Desktop only:
isDesktopOnly = true
License
This project is released under the GPL-3.0 license.