Skip to main content

CLI tool for uploading Obsidian Markdown documents to Feishu cloud documents

Project description

obshare-cli

A command-line interface tool for uploading Obsidian Markdown documents to Feishu cloud documents.

PyPI version Python License: MIT

中文翻译点此

Installation

pip-install-obshare-cli

Recommended when using obsidian-plugins: install obshare-cli into a dedicated conda environment named obsd.

conda create -n obsd python -y
conda run -n obsd python -m pip install --upgrade pip
conda run -n obsd python -m pip install --upgrade obshare-cli

Optional: Mermaid Support

obshare-cli supports two Mermaid rendering modes:

  1. Local Mermaid CLI rendering:
npm install -g @mermaid-js/mermaid-cli
  1. Obsidian bridge rendering through the bundled companion plugin in obsidian-plugins/.

Use the Obsidian plugin together with obshare-cli. The plugin does not replace the CLI upload flow; it provides visual configuration, document/config management, and Mermaid rendering inside a real Obsidian environment.

Configuration

First, configure your Feishu credentials:

You can get these token by the guidance:

feishu_config_guidance

# Set App ID
conda run -n obsd obshare-cli config set-app-id "cli_xxx"

# Set App Secret
conda run -n obsd obshare-cli config set-app-secret "xxx"

# Set User ID
conda run -n obsd obshare-cli config set-user-id "xxx"

# Set Folder Token
conda run -n obsd obshare-cli config set-folder "xxxxxxx"

# Show current configuration
conda run -n obsd obshare-cli config show

# Test connection
conda run -n obsd obshare-cli config test

Obsidian Companion Plugin

obsidian-plugins is the Obsidian desktop companion plugin for obshare-cli. It is designed to be used together with obshare-cli, not as a standalone uploader.

It provides:

  • Simple visual environment configuration
  • Shared document and configuration management
  • A Mermaid rendering bridge that lets obshare-cli trigger Obsidian to return Mermaid PNG images

Quick Start

  1. Create the recommended conda environment and install obshare-cli:
conda create -n obsd python -y
conda run -n obsd python -m pip install --upgrade pip
conda run -n obsd python -m pip install --upgrade obshare-cli
  1. Copy obsidian-plugins/ to your vault plugin directory: .obsidian/plugins/obshare-cli/
  2. Enable the plugin in Obsidian
  3. In the plugin settings, select the conda (obsd) runtime and set a shared bridge directory
  4. In obshare-cli, configure the same Obsidian bridge values:
conda run -n obsd obshare-cli config set-obsidian-cli obsidian
conda run -n obsd obshare-cli config set-obsidian-bridge-dir /path/to/shared/bridge
conda run -n obsd obshare-cli config set-obsidian-command-id obshare-cli:process-render-request

After that, continue using the normal CLI workflow:

conda run -n obsd obshare-cli upload document.md

When Mermaid blocks are detected, obshare-cli can call the Obsidian plugin bridge to render images and continue the upload flow.

Usage

Upload a Document

# Basic upload
conda run -n obsd obshare-cli upload document.md

# Upload with JSON output (for AI agents)
conda run -n obsd obshare-cli upload document.md --json

# Upload with permissions
conda run -n obsd obshare-cli upload document.md --public --allow-copy --allow-download

View Upload History

conda run -n obsd obshare-cli list history
conda run -n obsd obshare-cli list history --json

Set Document Permissions

conda run -n obsd obshare-cli permission set <token> --public --allow-copy --allow-download

Delete a Document

conda run -n obsd obshare-cli delete <token>

JSON Output Example

{
  "success": true,
  "document": {
    "title": "My Note",
    "token": "doxcnAbcDefGhi",
    "url": "https://feishu.cn/docx/doxcnAbcDefGhi"
  },
  "permissions": {
    "isPublic": false,
    "allowCopy": false,
    "allowCreateCopy": false
  },
  "uploadTime": "2024-01-15T10:30:00Z"
}

Features

  • Upload Markdown documents to Feishu
  • Support for YAML frontmatter
  • Support for Obsidian Callouts
  • Support for Mermaid diagrams (converted to images)
  • Optional Obsidian companion plugin for visual configuration and Mermaid bridge rendering
  • Support for embedded images (Obsidian ![[image.png]] and Markdown ![](image.png))
  • Configurable document permissions
  • Upload history tracking
  • JSON output mode for AI/CLI integration

Claude Code Plugin

This project includes a Claude Code Plugin for AI-assisted usage. The plugin provides skills for environment setup, configuration, uploading notes, managing permissions, and viewing upload history.

Install Plugin

# Step 1: Add marketplace
/plugin marketplace add SuShuHeng/obshare-cli

# Step 2: Install plugin
/plugin install obshare-cli

Available Skills

Skill Invocation Description
Main /obshare-cli:obshare-cli Environment setup & CLI overview
Config /obshare-cli:config Manage Feishu configuration
Upload /obshare-cli:upload Upload documents to Feishu
Permission /obshare-cli:permission Manage document permissions
List /obshare-cli:list Query upload history
Delete /obshare-cli:delete Delete Feishu documents

Usage with Claude Code

# In Claude Code, invoke skills with plugin namespace
/obshare-cli:obshare-cli     # Get environment setup guide
/obshare-cli:config          # Configure Feishu credentials
/obshare-cli:upload note.md  # Upload a document
/obshare-cli:list            # View upload history

Local Development

To test the plugin locally:

claude --plugin-dir /path/to/obshare-cli

Requirements

  • Python 3.8+
  • Node.js >= 16 (optional, for Mermaid rendering)

Development

# Clone the repository
git clone https://github.com/SuShuHeng/obshare-cli.git
cd obshare-cli

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Build package
python -m build

License

MIT License - see LICENSE for details.

Author

SuShuHeng (code.sushuheng@gmail.com)

Thanks

  • Obsidian - The best AI-powered note-taking software

  • Lark Open Platform - Provides technical platform support

  • ObShare - A significant source for this project, thank you.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obshare_cli-0.1.7.tar.gz (39.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

obshare_cli-0.1.7-py3-none-any.whl (45.3 kB view details)

Uploaded Python 3

File details

Details for the file obshare_cli-0.1.7.tar.gz.

File metadata

  • Download URL: obshare_cli-0.1.7.tar.gz
  • Upload date:
  • Size: 39.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for obshare_cli-0.1.7.tar.gz
Algorithm Hash digest
SHA256 4e327a4be81ec72b49c322d5cec51f006abf0568cdfb2461c96cee6045b577d6
MD5 282cf80536d51fb2b60127df72ae2bd7
BLAKE2b-256 9bfd863fc2d111d3cfb29fc615df4f20cbde7e0d3de022791f90b7983eb34c9a

See more details on using hashes here.

File details

Details for the file obshare_cli-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: obshare_cli-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for obshare_cli-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a55b7d967afea08caceb9d808c7fe7bb9613b08bc85b5f5ea34dda4fc4a839e3
MD5 99f2e8acc4d627d2bcb20763c2d0ed82
BLAKE2b-256 edc265986c1fa9c6cb5827ac32fd1da49f04c8eb504ad754dda1e86d8b47ce74

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page