← Back to Skills Marketplace
chunhualiao

Save to Obsidian

by Chunhua Liao · GitHub ↗ · v1.1.0
cross-platform ⚠ suspicious
1423
Downloads
1
Stars
17
Active Installs
2
Versions
Install in OpenClaw
/install save-to-obsidian
Description
Saves markdown content to remote Obsidian vault via SSH
README (SKILL.md)

Save to Obsidian

Saves markdown content to remote Obsidian vault via SSH.

Prerequisite

This skill is for machines WITHOUT iCloud sync (e.g., Linux/Ubuntu servers). If your machine already has iCloud Desktop sync enabled and direct access to the Obsidian vault, you don't need this skill — just copy files directly to the vault path.

When to Use

User says: "save to obsidian", "send to obsidian", "copy to obsidian"

Process

  1. Write content to a temp .md file (enforce formatting rules below)
  2. Copy to remote vault: scp \x3Cfilepath> user@remote-host:/path/to/obsidian/vault/
  3. Confirm success to user

Example:

# Write content to temp file
cat > /tmp/my-note.md \x3C\x3C 'EOF'
# My Note
Content here
EOF

# Copy to remote Obsidian vault
scp /tmp/my-note.md [email protected]:~/Obsidian/MyVault/

# Clean up
rm /tmp/my-note.md

Configuration: The agent should use the SSH host and vault path configured in workspace TOOLS.md

Formatting Rules

All content saved to Obsidian MUST follow these rules:

Diagrams: Use Mermaid (mandatory)

  • Never use ASCII box diagrams, ASCII art, or plaintext diagrams
  • Always use Mermaid fenced code blocks (```mermaid)
  • Obsidian renders Mermaid natively — ASCII diagrams look broken
  • Supported types: flowchart, sequence, state, class, ER, gantt, pie, mindmap, timeline, quadrant, graph

Tables: Use Markdown tables

  • Obsidian renders markdown tables natively
  • For complex data, prefer tables over bullet lists

Links: Use wiki-links or relative links

  • Link between Obsidian notes: [[note-name]]
  • External links: standard markdown [text](url)

General

  • Use headers (##) for structure — Obsidian outline panel relies on them
  • Use YAML frontmatter if metadata is needed
  • Keep filenames kebab-case (no spaces) for cross-platform compatibility

Agent Owner

This skill is executed by the main OpenClaw agent session. The save-to-obsidian.sh script runs as a shell command via the exec tool. No sub-agents are spawned. iCloud sync is handled automatically after file transfer — no agent action needed.

Success Criteria

Save succeeds when:

  1. scp exits with code 0
  2. File appears in vault directory with correct filename
  3. iCloud sync propagates the file (typically 1-2 minutes; not verified by skill)

Failure conditions: SSH unreachable, vault path does not exist, disk full, filename contains characters invalid for iCloud sync (handled by sanitization in script).

Edge Cases

  • SSH failure: script exits with error message and non-zero code; agent should report and stop
  • Duplicate filename: overwrites silently — scp does not warn; user must check if overwrite is desired
  • Special characters in filename: sanitized by script (spaces → hyphens, invalid chars stripped)
  • Empty content: scp will transfer a 0-byte file; not an error but should be flagged
  • No clear title: if content has no H1 header, agent should prompt user for filename before saving
  • iCloud sync delay: file appears in vault within 1-2 min; if not visible after 5 min, check iCloud status

Notes

  • Uses existing SSH key auth (no password)
  • Target: remote-host → Obsidian vault location
  • Files sync via iCloud automatically (if vault is in iCloud folder)

Configuration

This skill reads SSH and vault configuration from your workspace TOOLS.md:

Variable Description Where to set
SSH host Hostname/IP of the remote machine hosting the Obsidian vault TOOLS.md (e.g., myserver.local)
SSH user Username on the remote machine TOOLS.md (e.g., your-username)
SSH key path Path to SSH private key (default: ~/.ssh/id_rsa) TOOLS.md
Vault path Absolute path to Obsidian vault on remote machine TOOLS.md (e.g., ~/Obsidian/MyVault/)

Example TOOLS.md entry:

## Obsidian Remote Vault
- SSH host: myserver.local
- SSH user: your-username
- Vault path: ~/Obsidian/MyVault/

No API keys or tokens required — uses SSH key authentication only.

Usage Guidance
This skill appears to do what it says (create a temp markdown file and scp it to a remote Obsidian vault), but there are a few things to check before installing or using it: - Ensure scp/ssh are available on the agent runtime (scp is required even though metadata doesn't list it). If absent, the skill will fail. - Confirm where the SSH host/user/key are configured. The SKILL.md refers to a workspace TOOLS.md and the script reads OBSIDIAN_HOST; make sure TOOLS.md is present and contains the correct host and path, and that OBSIDIAN_HOST (if used) points to the intended machine. - Understand that the script will copy whatever source file the agent passes to it. Verify the agent only sends intended content (avoid accidentally sending sensitive local files). - Review and, if desired, edit the provided scripts to explicitly accept and validate a private-key path or require explicit confirmation before transfer. Consider adding explicit metadata entries (required binary: scp/ssh; required env: OBSIDIAN_HOST/OBSIDIAN_VAULT_PATH) so the runtime and users know what will be used. - If you do not trust the remote host or the workspace configuration, do not enable the skill. Test in a safe environment first (e.g., a throwaway remote host or local SSH server) to confirm behavior. Because the main issues are omissions/ambiguities in declared requirements and configuration (not evidence of malicious code), treat this as suspicious rather than malicious. If you can confirm/patch the missing declarations and validate the remote host and keys, the skill is reasonable for its stated purpose.
Capability Analysis
Type: OpenClaw Skill Name: save-to-obsidian Version: 1.1.0 The skill is designed to save markdown content to a remote Obsidian vault via SSH, a purpose clearly stated and consistently reflected across all files. The `save-to-obsidian.sh` script uses `scp` with quoted variables, which helps prevent shell injection, and includes filename sanitization for robustness. While it performs network operations and relies on pre-configured SSH keys, these are inherent to its stated functionality and are not indicative of malicious intent. There is no evidence of data exfiltration, persistence mechanisms, obfuscation, or prompt injection attempts designed to subvert the agent for harmful purposes.
Capability Assessment
Purpose & Capability
The skill claims to copy files to a remote Obsidian vault via SSH, which legitimately requires SSH/scp. However the registry metadata declares no required binaries or environment variables even though the script and SKILL.md clearly rely on scp/ssh and may read OBSIDIAN_HOST (or rely on TOOLS.md). The lack of declared runtime requirements is an incoherence.
Instruction Scope
SKILL.md instructs the agent to write a temp .md and run scp to a remote host and to use configuration from workspace TOOLS.md. That is within the stated purpose, but it implicitly requires the agent to access workspace configuration files (TOOLS.md) and to execute network operations. The SKILL.md does not make explicit how the agent obtains the host/user/key (it references TOOLS.md and an OBSIDIAN_HOST env var), creating ambiguity about where secrets/config live and whether the agent will read files outside the current conversation context.
Install Mechanism
There is no install spec (instruction-only) and the included script is small and readable. No downloads or archive extraction occur during install. This is the lower-risk pattern for skills that simply run local commands.
Credentials
The skill bundle and registry metadata declare no required env vars, but the script reads OBSIDIAN_HOST (and SKILL.md refers to SSH host/user/key and vault path configured in TOOLS.md). The skill will use the agent's SSH keys (or defaults) to authenticate via scp; that is expected, but the missing explicit declaration of these environment/config needs is disproportionate and could lead to unexpected behavior (e.g., sending files to an unintended host if TOOLS.md is misconfigured).
Persistence & Privilege
The skill does not request permanent inclusion (always:false) and does not modify other skills or system-wide configurations. It runs a one-shot script via exec when invoked. No elevated privileges are requested.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install save-to-obsidian
  3. After installation, invoke the skill by name or use /save-to-obsidian
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.0
v1.1.0: Added save script with error handling, edge cases, trigger coverage, agent owner
v1.0.0
save-to-obsidian 1.0.0 — Initial release - Save markdown content to a remote Obsidian vault via SSH (for non-iCloud-sync environments) - Enforces Obsidian-compatible formatting: requires Mermaid for diagrams and markdown tables for data - Uses SCP to transfer notes and confirms success to the user - Automatically cleans up temporary files after transfer - Requires SSH configuration and vault path defined in the workspace TOOLS.md
Metadata
Slug save-to-obsidian
Version 1.1.0
License
All-time Installs 19
Active Installs 17
Total Versions 2
Frequently Asked Questions

What is Save to Obsidian?

Saves markdown content to remote Obsidian vault via SSH. It is an AI Agent Skill for Claude Code / OpenClaw, with 1423 downloads so far.

How do I install Save to Obsidian?

Run "/install save-to-obsidian" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Save to Obsidian free?

Yes, Save to Obsidian is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Save to Obsidian support?

Save to Obsidian is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Save to Obsidian?

It is built and maintained by Chunhua Liao (@chunhualiao); the current version is v1.1.0.

💬 Comments