{
  "schemaVersion": "1.0",
  "item": {
    "slug": "obsidian-conversation-backup",
    "name": "Backup of conversations to Obsidian",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/Laserducktales/obsidian-conversation-backup",
    "canonicalUrl": "https://clawhub.ai/Laserducktales/obsidian-conversation-backup",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/obsidian-conversation-backup",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=obsidian-conversation-backup",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "install.sh",
      "config.example.txt",
      "README.md",
      "SKILL.md",
      "LICENSE.txt",
      "scripts/create_hourly_snapshots.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/obsidian-conversation-backup"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/obsidian-conversation-backup",
    "agentPageUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup/agent",
    "manifestUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Obsidian Conversation Backup",
        "body": "Automatically backs up Clawdbot conversations to Obsidian with beautiful chat-style formatting. Prevents data loss from /new resets with hourly incremental snapshots."
      },
      {
        "title": "Features",
        "body": "Incremental backups: Hourly snapshots of new messages only (no duplication)\nChat formatting: Obsidian callouts with emojis, timestamps, proper multi-paragraph support\nHourly breakdowns: Organize conversations by clock hour for easy reference\nZero token cost: Pure shell scripting, no LLM calls\nSmart filtering: Skips empty messages and system notifications"
      },
      {
        "title": "Installation",
        "body": "# Extract the skill (if downloaded as .skill file)\nunzip obsidian-conversation-backup.skill\ncd obsidian-conversation-backup\n\n# Run installer (interactive)\nchmod +x install.sh\n./install.sh\n\nThe installer will ask for:\n\nObsidian vault path\nSession directory location\nTracking files location\n\nOr manual setup:\n\nCopy config.example to config\nEdit config with your paths\nMake scripts executable: chmod +x scripts/*.sh"
      },
      {
        "title": "Enable Automatic Backups",
        "body": "Add to crontab for hourly backups:\n\ncrontab -e\n\n# Add this line (runs every hour at :00)\n0 * * * * /path/to/obsidian-conversation-backup/scripts/monitor_and_save.sh"
      },
      {
        "title": "Customize Chat Appearance (Optional)",
        "body": "Edit scripts/format_message_v2.jq to change:\n\nUser emoji (default: 🐉)\nAssistant emoji (default: 🦞)\nCallout types (default: [!quote] for user, [!check] for assistant)"
      },
      {
        "title": "Automatic Incremental Backups",
        "body": "Once configured in cron, the system runs automatically:\n\nEvery hour:\n\nChecks for new messages (≥10 lines)\nCreates incremental snapshot if found\nSaves to: YYYY-MM-DD-HHmm-incremental.md\nSkips if no new conversation\n\nExample output:\n\n2026-01-20-1500-incremental.md (messages from last save to now)\n2026-01-20-1600-incremental.md (new messages since 15:00)\n2026-01-20-1700-incremental.md (new messages since 16:00)\n\nProtection: Max conversation loss = 1 hour"
      },
      {
        "title": "On-Demand Full Snapshot",
        "body": "Save complete conversation anytime:\n\nscripts/save_full_snapshot.sh [topic-name]\n\nExamples:\n\nscripts/save_full_snapshot.sh important-decisions\nscripts/save_full_snapshot.sh bug-fix-discussion\nscripts/save_full_snapshot.sh  # uses \"full-conversation\" as default"
      },
      {
        "title": "Hourly Breakdown (Organization)",
        "body": "Create organized breakdown by clock hour:\n\nscripts/create_hourly_snapshots.sh YYYY-MM-DD\n\nExample:\n\nscripts/create_hourly_snapshots.sh 2026-01-20\n\nOutput:\n\n2026-01-20-1500-hourly.md (15:00-15:59 messages)\n2026-01-20-1600-hourly.md (16:00-16:59 messages)\n2026-01-20-1700-hourly.md (17:00-17:59 messages)\n\nUse case: End-of-day organization for easy reference"
      },
      {
        "title": "Chat Format",
        "body": "Messages appear as colored Obsidian callouts:\n\nUser messages (blue [!quote] callout):\n\n> [!quote] 🐉 User · 15:30\n> This is my message\n\nAssistant messages (green [!check] callout):\n\n> [!check] 🦞 Zoidbot · 15:31  \n> This is the response\n\nFeatures:\n\nTimestamps (HH:MM format)\nMulti-paragraph support (uses <br><br> for paragraph breaks)\nProper line wrapping (all lines prefixed with > )\nEmpty messages filtered out\nSystem notifications excluded"
      },
      {
        "title": "Token Monitoring",
        "body": "The monitor_and_save.sh script also tracks token usage:\n\nWarnings via Telegram:\n\n800k tokens (80%): \"Consider /new soon\"\n900k tokens (90%): \"Run /new NOW\"\n\nImplementation:\n\n# Sends warning only when crossing threshold (one-time)\n# No repeated warnings\n# Resets when back under 800k"
      },
      {
        "title": "File Structure",
        "body": "scripts/\n├── monitor_and_save.sh           # Hourly incremental backup + token monitoring\n├── save_full_snapshot.sh         # On-demand full conversation save\n├── create_hourly_snapshots.sh    # Organize by clock hour\n└── format_message_v2.jq          # Chat formatting logic"
      },
      {
        "title": "Tracking Files",
        "body": "The system uses hidden files to track state:\n\n/root/clawd/.last_save_line_count       # For token monitoring\n/root/clawd/.last_snapshot_timestamp    # For incremental saves\n/root/clawd/.token_warning_sent         # For warning deduplication\n\nNote: Do not delete these files or incremental backups may duplicate content"
      },
      {
        "title": "Session File Location",
        "body": "Default: /root/.clawdbot/agents/main/sessions/*.jsonl\n\nIf your session files are elsewhere, update the SESSION_FILE path in each script."
      },
      {
        "title": "No snapshots being created",
        "body": "Check cron is running: crontab -l\nVerify script has execute permission: chmod +x scripts/*.sh\nCheck logs: Run manually to see errors"
      },
      {
        "title": "Messages breaking out of callouts",
        "body": "Ensure format_message_v2.jq has the gsub(\"\\n\\n\"; \"<br><br>\") line\nCheck that all lines have >  prefix\nVerify jq is installed: jq --version"
      },
      {
        "title": "Duplicated content in snapshots",
        "body": "Delete tracking files and let system reset:\nrm /root/clawd/.last_snapshot_timestamp"
      },
      {
        "title": "Empty callout boxes appearing",
        "body": "Update format_message_v2.jq to filter empty messages\nCheck for the if ($text_content | length) > 0 condition"
      },
      {
        "title": "Requirements",
        "body": "jq: JSON parsing (apt-get install jq)\ncron: For automatic backups\nObsidian vault: Target directory for markdown files"
      },
      {
        "title": "Change Backup Frequency",
        "body": "Edit crontab:\n\n# Every 2 hours\n0 */2 * * * /path/to/monitor_and_save.sh\n\n# Every 30 minutes\n*/30 * * * * /path/to/monitor_and_save.sh\n\n# Specific times only (9am, 12pm, 6pm, 9pm)\n0 9,12,18,21 * * * /path/to/monitor_and_save.sh"
      },
      {
        "title": "Change Minimum Message Threshold",
        "body": "Edit monitor_and_save.sh:\n\n# Change from 10 to 5 messages minimum\nif [[ $new_lines -lt 5 ]]; then"
      },
      {
        "title": "Add More Callout Styles",
        "body": "Obsidian callout types:\n\n[!quote] - Blue\n[!check] - Green\n[!note] - Cyan\n[!tip] - Purple\n[!warning] - Orange\n[!danger] - Red"
      },
      {
        "title": "Customize Telegram Notifications",
        "body": "Edit monitor_and_save.sh to change warning text or add custom notifications."
      },
      {
        "title": "Best Practices",
        "body": "Run hourly breakdown at end of day - Use as organizational tool, not backup\nKeep incremental backups running - This is your safety net\nTest scripts after setup - Run manually first to verify output\nBackup tracking files - Include .last_snapshot_timestamp in vault backups\nUse descriptive topic names - For full snapshots, use meaningful names"
      },
      {
        "title": "Example Workflow",
        "body": "Daily routine:\n\nAutomatic incremental backups run hourly (no action needed)\nAt end of day: scripts/create_hourly_snapshots.sh 2026-01-20\nReview organized hourly files in Obsidian\nDelete old incrementals if desired (hourly breakdown covers them)\n\nBefore /new reset:\n\nOptional: scripts/save_full_snapshot.sh before-reset\nRun /new safely - conversation is backed up\nContinue chatting - incrementals resume automatically"
      },
      {
        "title": "Integration with Clawdbot",
        "body": "This skill works with:\n\nHEARTBEAT.md: Automatic token monitoring\nMEMORY.md: Conversation archival system\nTelegram integration: Warning notifications\nAny Obsidian vault: Works with existing vaults"
      },
      {
        "title": "Credits",
        "body": "Created by the Clawdbot community for reliable conversation backup and beautiful Obsidian formatting."
      }
    ],
    "body": "Obsidian Conversation Backup\n\nAutomatically backs up Clawdbot conversations to Obsidian with beautiful chat-style formatting. Prevents data loss from /new resets with hourly incremental snapshots.\n\nFeatures\nIncremental backups: Hourly snapshots of new messages only (no duplication)\nChat formatting: Obsidian callouts with emojis, timestamps, proper multi-paragraph support\nHourly breakdowns: Organize conversations by clock hour for easy reference\nZero token cost: Pure shell scripting, no LLM calls\nSmart filtering: Skips empty messages and system notifications\nQuick Setup\nInstallation\n# Extract the skill (if downloaded as .skill file)\nunzip obsidian-conversation-backup.skill\ncd obsidian-conversation-backup\n\n# Run installer (interactive)\nchmod +x install.sh\n./install.sh\n\n\nThe installer will ask for:\n\nObsidian vault path\nSession directory location\nTracking files location\n\nOr manual setup:\n\nCopy config.example to config\nEdit config with your paths\nMake scripts executable: chmod +x scripts/*.sh\nEnable Automatic Backups\n\nAdd to crontab for hourly backups:\n\ncrontab -e\n\n# Add this line (runs every hour at :00)\n0 * * * * /path/to/obsidian-conversation-backup/scripts/monitor_and_save.sh\n\nCustomize Chat Appearance (Optional)\n\nEdit scripts/format_message_v2.jq to change:\n\nUser emoji (default: 🐉)\nAssistant emoji (default: 🦞)\nCallout types (default: [!quote] for user, [!check] for assistant)\nUsage\nAutomatic Incremental Backups\n\nOnce configured in cron, the system runs automatically:\n\nEvery hour:\n\nChecks for new messages (≥10 lines)\nCreates incremental snapshot if found\nSaves to: YYYY-MM-DD-HHmm-incremental.md\nSkips if no new conversation\n\nExample output:\n\n2026-01-20-1500-incremental.md (messages from last save to now)\n2026-01-20-1600-incremental.md (new messages since 15:00)\n2026-01-20-1700-incremental.md (new messages since 16:00)\n\n\nProtection: Max conversation loss = 1 hour\n\nOn-Demand Full Snapshot\n\nSave complete conversation anytime:\n\nscripts/save_full_snapshot.sh [topic-name]\n\n\nExamples:\n\nscripts/save_full_snapshot.sh important-decisions\nscripts/save_full_snapshot.sh bug-fix-discussion\nscripts/save_full_snapshot.sh  # uses \"full-conversation\" as default\n\nHourly Breakdown (Organization)\n\nCreate organized breakdown by clock hour:\n\nscripts/create_hourly_snapshots.sh YYYY-MM-DD\n\n\nExample:\n\nscripts/create_hourly_snapshots.sh 2026-01-20\n\n\nOutput:\n\n2026-01-20-1500-hourly.md (15:00-15:59 messages)\n2026-01-20-1600-hourly.md (16:00-16:59 messages)\n2026-01-20-1700-hourly.md (17:00-17:59 messages)\n\n\nUse case: End-of-day organization for easy reference\n\nChat Format\n\nMessages appear as colored Obsidian callouts:\n\nUser messages (blue [!quote] callout):\n\n> [!quote] 🐉 User · 15:30\n> This is my message\n\n\nAssistant messages (green [!check] callout):\n\n> [!check] 🦞 Zoidbot · 15:31  \n> This is the response\n\n\nFeatures:\n\nTimestamps (HH:MM format)\nMulti-paragraph support (uses <br><br> for paragraph breaks)\nProper line wrapping (all lines prefixed with > )\nEmpty messages filtered out\nSystem notifications excluded\nToken Monitoring\n\nThe monitor_and_save.sh script also tracks token usage:\n\nWarnings via Telegram:\n\n800k tokens (80%): \"Consider /new soon\"\n900k tokens (90%): \"Run /new NOW\"\n\nImplementation:\n\n# Sends warning only when crossing threshold (one-time)\n# No repeated warnings\n# Resets when back under 800k\n\nFile Structure\nscripts/\n├── monitor_and_save.sh           # Hourly incremental backup + token monitoring\n├── save_full_snapshot.sh         # On-demand full conversation save\n├── create_hourly_snapshots.sh    # Organize by clock hour\n└── format_message_v2.jq          # Chat formatting logic\n\nConfiguration\nTracking Files\n\nThe system uses hidden files to track state:\n\n/root/clawd/.last_save_line_count       # For token monitoring\n/root/clawd/.last_snapshot_timestamp    # For incremental saves\n/root/clawd/.token_warning_sent         # For warning deduplication\n\n\nNote: Do not delete these files or incremental backups may duplicate content\n\nSession File Location\n\nDefault: /root/.clawdbot/agents/main/sessions/*.jsonl\n\nIf your session files are elsewhere, update the SESSION_FILE path in each script.\n\nTroubleshooting\nNo snapshots being created\nCheck cron is running: crontab -l\nVerify script has execute permission: chmod +x scripts/*.sh\nCheck logs: Run manually to see errors\nMessages breaking out of callouts\nEnsure format_message_v2.jq has the gsub(\"\\n\\n\"; \"<br><br>\") line\nCheck that all lines have > prefix\nVerify jq is installed: jq --version\nDuplicated content in snapshots\nDelete tracking files and let system reset:\nrm /root/clawd/.last_snapshot_timestamp\n\nEmpty callout boxes appearing\nUpdate format_message_v2.jq to filter empty messages\nCheck for the if ($text_content | length) > 0 condition\nRequirements\njq: JSON parsing (apt-get install jq)\ncron: For automatic backups\nObsidian vault: Target directory for markdown files\nAdvanced Customization\nChange Backup Frequency\n\nEdit crontab:\n\n# Every 2 hours\n0 */2 * * * /path/to/monitor_and_save.sh\n\n# Every 30 minutes\n*/30 * * * * /path/to/monitor_and_save.sh\n\n# Specific times only (9am, 12pm, 6pm, 9pm)\n0 9,12,18,21 * * * /path/to/monitor_and_save.sh\n\nChange Minimum Message Threshold\n\nEdit monitor_and_save.sh:\n\n# Change from 10 to 5 messages minimum\nif [[ $new_lines -lt 5 ]]; then\n\nAdd More Callout Styles\n\nObsidian callout types:\n\n[!quote] - Blue\n[!check] - Green\n[!note] - Cyan\n[!tip] - Purple\n[!warning] - Orange\n[!danger] - Red\nCustomize Telegram Notifications\n\nEdit monitor_and_save.sh to change warning text or add custom notifications.\n\nBest Practices\nRun hourly breakdown at end of day - Use as organizational tool, not backup\nKeep incremental backups running - This is your safety net\nTest scripts after setup - Run manually first to verify output\nBackup tracking files - Include .last_snapshot_timestamp in vault backups\nUse descriptive topic names - For full snapshots, use meaningful names\nExample Workflow\n\nDaily routine:\n\nAutomatic incremental backups run hourly (no action needed)\nAt end of day: scripts/create_hourly_snapshots.sh 2026-01-20\nReview organized hourly files in Obsidian\nDelete old incrementals if desired (hourly breakdown covers them)\n\nBefore /new reset:\n\nOptional: scripts/save_full_snapshot.sh before-reset\nRun /new safely - conversation is backed up\nContinue chatting - incrementals resume automatically\nIntegration with Clawdbot\n\nThis skill works with:\n\nHEARTBEAT.md: Automatic token monitoring\nMEMORY.md: Conversation archival system\nTelegram integration: Warning notifications\nAny Obsidian vault: Works with existing vaults\nCredits\n\nCreated by the Clawdbot community for reliable conversation backup and beautiful Obsidian formatting."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Laserducktales/obsidian-conversation-backup",
    "publisherUrl": "https://clawhub.ai/Laserducktales/obsidian-conversation-backup",
    "owner": "Laserducktales",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup",
    "downloadUrl": "https://openagent3.xyz/downloads/obsidian-conversation-backup",
    "agentUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup/agent",
    "manifestUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/obsidian-conversation-backup/agent.md"
  }
}