{
  "schemaVersion": "1.0",
  "item": {
    "slug": "remarkable-sync",
    "name": "reMarkable Tablet Sync",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/coolmanns/remarkable-sync",
    "canonicalUrl": "https://clawhub.ai/coolmanns/remarkable-sync",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/remarkable-sync",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=remarkable-sync",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.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/remarkable-sync"
    },
    "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/remarkable-sync",
    "agentPageUrl": "https://openagent3.xyz/skills/remarkable-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/remarkable-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/remarkable-sync/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "reMarkable Tablet Integration (rmapi)",
        "body": "Bidirectional sync with reMarkable tablet via Cloud API. Fetch sketches and notes, process them (AI enhancement, text extraction), and push content back to the tablet."
      },
      {
        "title": "Typical Use Cases",
        "body": "Sketch → AI → Tablet loop — Fetch rough sketch → enhance with AI → push polished version back\nJournal entries — Fetch handwritten thoughts → interpret → append to memory/journal\nBrainstorming — Fetch diagrams/lists → extract structure → add to project docs\nSend reading material — Push PDFs/documents to tablet for offline reading\nAI art to tablet — Generate images → convert to PDF → push for viewing on e-ink"
      },
      {
        "title": "Bidirectional Pipeline",
        "body": "┌─────────────────────────────────────────────────────────────────┐\n│                        FETCH (tablet → agent)                    │\n├─────────────────────────────────────────────────────────────────┤\n│  reMarkable → Cloud sync → rmapi get → .rmdoc                   │\n│                                           ↓                      │\n│                              unzip → .rm file → rmc → SVG       │\n│                                                      ↓           │\n│                                          cairosvg → PNG          │\n│                                                      ↓           │\n│                               ┌──────────┴──────────┐            │\n│                          Text content?         Visual/sketch?    │\n│                               ↓                      ↓           │\n│                        OCR/interpret          AI image editing   │\n│                               ↓                      ↓           │\n│                        Add to memory        Enhanced image       │\n└─────────────────────────────────────────────────────────────────┘\n\n┌─────────────────────────────────────────────────────────────────┐\n│                        PUSH (agent → tablet)                     │\n├─────────────────────────────────────────────────────────────────┤\n│  Image/document → Convert to PDF (if needed) → rmapi put        │\n│                                                      ↓           │\n│                                           Cloud sync → tablet    │\n└─────────────────────────────────────────────────────────────────┘"
      },
      {
        "title": "1. Install rmapi",
        "body": "Download the latest release from juruen/rmapi (ddvk fork recommended):\n\n# Example for Linux amd64\ncurl -L https://github.com/ddvk/rmapi/releases/latest/download/rmapi-linux-amd64 -o ~/bin/rmapi\nchmod +x ~/bin/rmapi"
      },
      {
        "title": "2. Install conversion tools",
        "body": "pip install --user rmc cairosvg pillow\n\nrmc — Converts .rm stroke files to SVG\ncairosvg — Converts SVG to PNG\npillow — Converts PNG to PDF for pushing back"
      },
      {
        "title": "3. Authenticate (ONE-TIME)",
        "body": "Go to https://my.remarkable.com/connect/desktop\nLog in and copy the 8-character code\nRun rmapi and paste the code when prompted\nToken saved to ~/.rmapi — future runs are automatic"
      },
      {
        "title": "Fetch (Download from tablet)",
        "body": "# List files/folders\nrmapi ls\nrmapi ls -l -t              # Long format, sorted by time\n\n# Refresh from cloud\nrmapi refresh\n\n# Navigate\nrmapi cd \"folder name\"\n\n# Find files\nrmapi find --starred /              # Starred items\nrmapi find --tag=\"my-tag\" /         # By tag\nrmapi find / \".*sketch.*\"           # By regex\n\n# Download single file\nrmapi get \"filename\"\nrmapi get \"Folder/Notebook\"\n\n# Download with annotations (best for handwritten content)\nrmapi geta \"filename\"\n\n# Bulk download folder\nrmapi mget -o ./sync-folder/ \"/My Folder\""
      },
      {
        "title": "Push (Upload to tablet)",
        "body": "# Upload single file (PDF or EPUB only)\nrmapi put document.pdf\nrmapi put document.pdf \"Target Folder/\"\n\n# Bulk upload\nrmapi mput ./local-folder/ \"Remote Folder/\"\n\n# Create folder on tablet\nrmapi mkdir \"New Folder\"\n\nSupported formats: PDF, EPUB"
      },
      {
        "title": "Fetch: .rmdoc → PNG",
        "body": "reMarkable notebooks download as .rmdoc (a ZIP archive containing stroke data):\n\n# 1. Download the notebook\nrmapi get \"Folder/MyNotebook\"\n\n# 2. Extract (it's a zip)\nunzip \"MyNotebook.rmdoc\" -d extracted/\n\n# 3. Find the .rm stroke file(s)\n# Structure: extracted/<doc-uuid>/<page-uuid>.rm\nfind extracted -name \"*.rm\"\n\n# 4. Convert .rm → SVG\nrmc -t svg -o page.svg \"extracted/<doc-uuid>/<page-uuid>.rm\"\n\n# 5. Convert SVG → PNG (reMarkable dimensions: 1404×1872)\npython3 -c \"\nimport cairosvg\ncairosvg.svg2png(url='page.svg', write_to='page.png', output_width=1404, output_height=1872)\n\""
      },
      {
        "title": "Push: Image → PDF",
        "body": "reMarkable only accepts PDF/EPUB, so convert images first:\n\nfrom PIL import Image\n\nimg = Image.open('image.png')\nrgb = img.convert('RGB')\nrgb.save('image.pdf', 'PDF', resolution=150)\n\nThen push:\n\nrmapi put image.pdf \"My Folder/\""
      },
      {
        "title": "Full Workflow Example",
        "body": "Sketch enhancement loop:\n\n# 1. Fetch sketch from tablet\nrmapi get \"Sketches/MyDrawing\"\n\n# 2. Extract and convert to PNG\nunzip MyDrawing.rmdoc -d MyDrawing_extracted/\nRM_FILE=$(find MyDrawing_extracted -name \"*.rm\" | head -1)\nrmc -t svg -o sketch.svg \"$RM_FILE\"\npython3 -c \"import cairosvg; cairosvg.svg2png(url='sketch.svg', write_to='sketch.png', output_width=1404, output_height=1872)\"\n\n# 3. [Your AI enhancement step here]\n# Example: use any image-to-image AI tool to enhance sketch.png → enhanced.png\n\n# 4. Convert to PDF and push back\npython3 -c \"from PIL import Image; Image.open('enhanced.png').convert('RGB').save('enhanced.pdf', 'PDF', resolution=150)\"\nrmapi put enhanced.pdf \"Sketches/\""
      },
      {
        "title": "Sharing Strategies",
        "body": "Create a dedicated sync folder on your tablet, or use:\n\nTags — Tag items for discovery with rmapi find --tag\nStars — Star items for quick access with rmapi find --starred"
      },
      {
        "title": "Notes",
        "body": "Cloud sync required — Tablet must sync to cloud before files are available (pull down to refresh on tablet)\nFormat — .rmdoc is a ZIP containing JSON metadata + .rm binary stroke files\nWarnings — rmc may show warnings about newer format versions — usually still works\nDimensions — reMarkable display is 1404×1872 pixels (portrait)\nText extraction — For handwritten text, use vision models to interpret visually rather than traditional OCR"
      },
      {
        "title": "Troubleshooting",
        "body": "IssueSolutionrmapi not connectingRe-authenticate: delete ~/.rmapi and run rmapi againFile not found after uploadWait for cloud sync, or refresh tablet manuallyrmc format warningsUsually safe to ignore; output still generatedSVG looks emptyCheck if the correct .rm file was used (multi-page notebooks have multiple)"
      }
    ],
    "body": "reMarkable Tablet Integration (rmapi)\n\nBidirectional sync with reMarkable tablet via Cloud API. Fetch sketches and notes, process them (AI enhancement, text extraction), and push content back to the tablet.\n\nTypical Use Cases\nSketch → AI → Tablet loop — Fetch rough sketch → enhance with AI → push polished version back\nJournal entries — Fetch handwritten thoughts → interpret → append to memory/journal\nBrainstorming — Fetch diagrams/lists → extract structure → add to project docs\nSend reading material — Push PDFs/documents to tablet for offline reading\nAI art to tablet — Generate images → convert to PDF → push for viewing on e-ink\nBidirectional Pipeline\n┌─────────────────────────────────────────────────────────────────┐\n│                        FETCH (tablet → agent)                    │\n├─────────────────────────────────────────────────────────────────┤\n│  reMarkable → Cloud sync → rmapi get → .rmdoc                   │\n│                                           ↓                      │\n│                              unzip → .rm file → rmc → SVG       │\n│                                                      ↓           │\n│                                          cairosvg → PNG          │\n│                                                      ↓           │\n│                               ┌──────────┴──────────┐            │\n│                          Text content?         Visual/sketch?    │\n│                               ↓                      ↓           │\n│                        OCR/interpret          AI image editing   │\n│                               ↓                      ↓           │\n│                        Add to memory        Enhanced image       │\n└─────────────────────────────────────────────────────────────────┘\n\n┌─────────────────────────────────────────────────────────────────┐\n│                        PUSH (agent → tablet)                     │\n├─────────────────────────────────────────────────────────────────┤\n│  Image/document → Convert to PDF (if needed) → rmapi put        │\n│                                                      ↓           │\n│                                           Cloud sync → tablet    │\n└─────────────────────────────────────────────────────────────────┘\n\nPrerequisites\n1. Install rmapi\n\nDownload the latest release from juruen/rmapi (ddvk fork recommended):\n\n# Example for Linux amd64\ncurl -L https://github.com/ddvk/rmapi/releases/latest/download/rmapi-linux-amd64 -o ~/bin/rmapi\nchmod +x ~/bin/rmapi\n\n2. Install conversion tools\npip install --user rmc cairosvg pillow\n\nrmc — Converts .rm stroke files to SVG\ncairosvg — Converts SVG to PNG\npillow — Converts PNG to PDF for pushing back\n3. Authenticate (ONE-TIME)\nGo to https://my.remarkable.com/connect/desktop\nLog in and copy the 8-character code\nRun rmapi and paste the code when prompted\nToken saved to ~/.rmapi — future runs are automatic\nCommands\nFetch (Download from tablet)\n# List files/folders\nrmapi ls\nrmapi ls -l -t              # Long format, sorted by time\n\n# Refresh from cloud\nrmapi refresh\n\n# Navigate\nrmapi cd \"folder name\"\n\n# Find files\nrmapi find --starred /              # Starred items\nrmapi find --tag=\"my-tag\" /         # By tag\nrmapi find / \".*sketch.*\"           # By regex\n\n# Download single file\nrmapi get \"filename\"\nrmapi get \"Folder/Notebook\"\n\n# Download with annotations (best for handwritten content)\nrmapi geta \"filename\"\n\n# Bulk download folder\nrmapi mget -o ./sync-folder/ \"/My Folder\"\n\nPush (Upload to tablet)\n# Upload single file (PDF or EPUB only)\nrmapi put document.pdf\nrmapi put document.pdf \"Target Folder/\"\n\n# Bulk upload\nrmapi mput ./local-folder/ \"Remote Folder/\"\n\n# Create folder on tablet\nrmapi mkdir \"New Folder\"\n\n\nSupported formats: PDF, EPUB\n\nConversion Workflows\nFetch: .rmdoc → PNG\n\nreMarkable notebooks download as .rmdoc (a ZIP archive containing stroke data):\n\n# 1. Download the notebook\nrmapi get \"Folder/MyNotebook\"\n\n# 2. Extract (it's a zip)\nunzip \"MyNotebook.rmdoc\" -d extracted/\n\n# 3. Find the .rm stroke file(s)\n# Structure: extracted/<doc-uuid>/<page-uuid>.rm\nfind extracted -name \"*.rm\"\n\n# 4. Convert .rm → SVG\nrmc -t svg -o page.svg \"extracted/<doc-uuid>/<page-uuid>.rm\"\n\n# 5. Convert SVG → PNG (reMarkable dimensions: 1404×1872)\npython3 -c \"\nimport cairosvg\ncairosvg.svg2png(url='page.svg', write_to='page.png', output_width=1404, output_height=1872)\n\"\n\nPush: Image → PDF\n\nreMarkable only accepts PDF/EPUB, so convert images first:\n\nfrom PIL import Image\n\nimg = Image.open('image.png')\nrgb = img.convert('RGB')\nrgb.save('image.pdf', 'PDF', resolution=150)\n\n\nThen push:\n\nrmapi put image.pdf \"My Folder/\"\n\nFull Workflow Example\n\nSketch enhancement loop:\n\n# 1. Fetch sketch from tablet\nrmapi get \"Sketches/MyDrawing\"\n\n# 2. Extract and convert to PNG\nunzip MyDrawing.rmdoc -d MyDrawing_extracted/\nRM_FILE=$(find MyDrawing_extracted -name \"*.rm\" | head -1)\nrmc -t svg -o sketch.svg \"$RM_FILE\"\npython3 -c \"import cairosvg; cairosvg.svg2png(url='sketch.svg', write_to='sketch.png', output_width=1404, output_height=1872)\"\n\n# 3. [Your AI enhancement step here]\n# Example: use any image-to-image AI tool to enhance sketch.png → enhanced.png\n\n# 4. Convert to PDF and push back\npython3 -c \"from PIL import Image; Image.open('enhanced.png').convert('RGB').save('enhanced.pdf', 'PDF', resolution=150)\"\nrmapi put enhanced.pdf \"Sketches/\"\n\nSharing Strategies\n\nCreate a dedicated sync folder on your tablet, or use:\n\nTags — Tag items for discovery with rmapi find --tag\nStars — Star items for quick access with rmapi find --starred\nNotes\nCloud sync required — Tablet must sync to cloud before files are available (pull down to refresh on tablet)\nFormat — .rmdoc is a ZIP containing JSON metadata + .rm binary stroke files\nWarnings — rmc may show warnings about newer format versions — usually still works\nDimensions — reMarkable display is 1404×1872 pixels (portrait)\nText extraction — For handwritten text, use vision models to interpret visually rather than traditional OCR\nTroubleshooting\nIssue\tSolution\nrmapi not connecting\tRe-authenticate: delete ~/.rmapi and run rmapi again\nFile not found after upload\tWait for cloud sync, or refresh tablet manually\nrmc format warnings\tUsually safe to ignore; output still generated\nSVG looks empty\tCheck if the correct .rm file was used (multi-page notebooks have multiple)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/coolmanns/remarkable-sync",
    "publisherUrl": "https://clawhub.ai/coolmanns/remarkable-sync",
    "owner": "coolmanns",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/remarkable-sync",
    "downloadUrl": "https://openagent3.xyz/downloads/remarkable-sync",
    "agentUrl": "https://openagent3.xyz/skills/remarkable-sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/remarkable-sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/remarkable-sync/agent.md"
  }
}