Obshare Cli — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Obshare Cli (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
Aggregate score unchanged between these scans.
The primary manifest — the file an agent reads to learn what this artifact does.
Upload Obsidian Markdown documents to Feishu cloud documents with a workflow built around obshare-cli and the bundled Obsidian companion plugin.
中文说明
>
mermaid-clirendering has been removed. The supported Mermaid path isobshare-cli-> Obsidian CLI ->obsidian-pluginsbridge -> PNG upload.
pip-install-obshare-cli
This repository now has three layers:
obshare-cli: upload Markdown, manage permissions, inspect history, and return JSON for automationobsidian-plugins/: the required desktop companion plugin for direct note sharing, runtime binding, shared config/history management, and Mermaid renderingIf you want the supported experience, install the CLI and the Obsidian plugin together.
obsd conda environmentconda 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
conda run -n obsd obshare-cli --versionobsidian-plugins/ into your vault plugin directory as .obsidian/plugins/obshare-cli/.obshare-cli in Obsidian.Settings -> About -> Advanced and enable Command line interface.Register so the obsidian command is available from your terminal.Environment Configuration, choose the conda (obsd) runtime.obshare-cli can access.Use these screens as the reference path:
Obsidian About Advanced CLI
Obsidian CLI PATH Registration
Detailed plugin shell notes live in obsidian-plugins/README.md.
Get the required values from your Feishu Open Platform app and target folder.
Feishu config guidance
conda run -n obsd obshare-cli config set-app-id "cli_xxx"
conda run -n obsd obshare-cli config set-app-secret "xxx"
conda run -n obsd obshare-cli config set-user-id "ou_xxx"
conda run -n obsd obshare-cli config set-folder "fldcnxxx"Use the same bridge directory that you configured in the plugin settings.
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
conda run -n obsd obshare-cli config show
conda run -n obsd obshare-cli config testconda run -n obsd obshare-cli upload note.md
conda run -n obsd obshare-cli --json upload note.mdIf the note contains Mermaid blocks, obshare-cli writes a render request into the bridge directory, triggers obsidian command id=obshare-cli:process-render-request, waits for the plugin to return a PNG, and then uploads the final document to Feishu.
After the Feishu config and bridge settings are in place, V0.2.0 lets you share the current note from inside Obsidian itself.
Available entry points:
Share Current Note To FeishuShare To FeishuShare To FeishuShare behavior:
.log file to a selected folder.--json is a global flag. Put it before the subcommand, for example obshare-cli --json upload note.md.
| Command | Purpose |
|---|---|
obshare-cli config set-app-id <app_id> | Save Feishu App ID |
obshare-cli config set-app-secret <app_secret> | Save Feishu App Secret |
obshare-cli config set-user-id <user_id> | Save Feishu user ID |
obshare-cli config set-folder <folder_token> | Save target Feishu folder |
obshare-cli config set-obsidian-cli <command> | Save the Obsidian CLI command or absolute path |
obshare-cli config set-obsidian-bridge-dir <dir> | Save the shared bridge directory |
obshare-cli config set-obsidian-command-id <id> | Save the render command ID |
obshare-cli config show | Show current config with secrets masked |
obshare-cli config test | Test Feishu connectivity |
obshare-cli upload <file> | Upload one Markdown note |
obshare-cli list history | Show local upload history |
obshare-cli permission set <token> ... | Update sharing permissions |
obshare-cli delete <token> | Delete a Feishu document |
Common follow-up commands:
conda run -n obsd obshare-cli list history
conda run -n obsd obshare-cli --json list history
conda run -n obsd obshare-cli permission set <token> --public --allow-copy --allow-download
conda run -n obsd obshare-cli delete <token>The CLI and the Obsidian plugin share the same local state:
~/.obshare/config.json: saved Feishu credentials and Obsidian bridge settings~/.obshare/history.json: upload history used by the CLI and the plugin shellMermaid rendering is bridge-only in the current codebase:
obshare-cli detects a Mermaid block in the Markdown file.*.request.json file into the shared bridge directory.obshare-cli:process-render-request through the Obsidian CLI.*.result.json file plus a PNG.The bundled Obsidian plugin is the desktop companion shell and primary direct-share UI for obshare-cli, not a second Feishu implementation.
It provides:
Environment Configuration: detects conda, obsd, Python, pip, Obsidian CLI, and obshare-cliUpload Configuration: edits the shared CLI config and runs connection testsDocument Management: reads upload history and dispatches permission/delete actions through the CLIAbout: shows plugin/CLI version, language switching, and upgrade guidanceFor plugin-specific details, see obsidian-plugins/README.md.
This repository also ships a Claude Code plugin through .claude-plugin/ and skills/. These skills make the same Obsidian publishing workflow agent-friendly: Claude Code can set up the environment, configure Feishu and bridge values, upload notes, inspect history, and manage permissions without bypassing the CLI.
/plugin marketplace add SuShuHeng/obshare-cli
/plugin install obshare-cli| Skill | Invocation | What it helps with |
|---|---|---|
| Main | /obshare-cli:obshare-cli | Bootstrap obsd, explain commands, and choose the next action |
| Config | /obshare-cli:config | Save Feishu credentials and Obsidian bridge values |
| Upload | /obshare-cli:upload | Upload a note to Feishu |
| List | /obshare-cli:list | Inspect local upload history |
| Permission | /obshare-cli:permission | Update sharing flags for a document |
| Delete | /obshare-cli:delete | Remove a Feishu document by token |
/obshare-cli:obshare-cli
/obshare-cli:config
/obshare-cli:upload note.md
/obshare-cli:listThese skills are intended to power agentic Obsidian workflows in Claude Code while still relying on the same obshare-cli commands, shared config, shared history, and Obsidian bridge.
claude --plugin-dir /path/to/obshare-cliobsd as the recommended runtime nameobsidian CLI command, or an absolute path configured through set-obsidian-cligit clone https://github.com/SuShuHeng/obshare-cli.git
cd obshare-cli
pip install -e ".[dev]"
pytest
python -m buildMIT License. See LICENSE.
SuShuHeng ([email protected])
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.