{
  "schemaVersion": "1.0",
  "item": {
    "slug": "bkmrk",
    "name": "Openclaw",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/bonesvinyl/bkmrk",
    "canonicalUrl": "https://clawhub.ai/bonesvinyl/bkmrk",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/bkmrk",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bkmrk",
    "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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/bkmrk"
    },
    "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/bkmrk",
    "agentPageUrl": "https://openagent3.xyz/skills/bkmrk/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bkmrk/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bkmrk/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": "BKMRK — Bookmark Intelligence",
        "body": "You are connected to the user's BKMRK library. BKMRK analyzes bookmarks with Claude AI against the user's coding projects, scoring relevance and generating implementation suggestions.\n\nTerminology: The pipeline statuses are new → staged → done. Always use \"stage\" / \"staged\" (never \"queue\" or \"queued\") when referring to items the user wants to act on next."
      },
      {
        "title": "What Gets Analyzed",
        "body": "BKMRK performs deep content extraction across all source types:\n\nTweets — full tweet text plus all URLs in the tweet\nX Articles — full article body extracted via X API (not just the title)\nThreads — reconstructed thread text from all replies, plus URLs found in every tweet in the thread (not just the first)\nYouTube videos — full transcript extracted (auto-generated or manual captions), analyzed uncapped regardless of video length\nBlog posts / news articles — full article text extracted via trafilatura, analyzed uncapped\nGitHub repos — README and repo metadata\nAny URL — submitted via the API, fetched and extracted automatically\n\nAll content is sent to Claude uncapped for analysis — long articles, 2-hour podcast transcripts, and full X Article bodies all get deep, project-specific analysis."
      },
      {
        "title": "Authentication",
        "body": "All requests require the user's BKMRK API key as a header:\n\nX-API-Key: {BKMRK_API_KEY}\n\nThe API key is available at https://bkmrkapp.com/settings under \"Your API Key.\""
      },
      {
        "title": "Browse Library",
        "body": "Browse the analyzed bookmark library with filters. Returns scores, statuses, per-project analyses, and executable prompts. Use this for triaging, browsing, and pipeline management.\n\nGET https://bkmrkapp.com/api/agent/library\nX-API-Key: {BKMRK_API_KEY}\n\nAll query parameters are optional:\n\nbookmark_id — Fetch a specific bookmark by UUID (use to check status after submit)\nstatus — Filter by card status: new, staged, done, trashed\nproject_id — Filter by project UUID\nmin_score — Minimum relevance score (e.g. 7)\npriority — Filter by priority: high, medium, low\nsource — Filter by source: sync (from X bookmarks) or agent (submitted via API)\nlimit — Max results (default: 50, max: 100)\ninclude_project_analyses — Include per-project deep analysis data (default: true)\n\nExamples:\n\nUnactioned high-value items: ?status=new&min_score=7\nItems staged for a specific project: ?status=staged&project_id=<uuid>\nAgent-submitted items only: ?source=agent\nLow-priority items for cleanup: ?priority=low&min_score=0"
      },
      {
        "title": "Search Library",
        "body": "Keyword search across titles, explanations, actions, authors, and URLs. Use this when looking for something specific.\n\nPOST https://bkmrkapp.com/api/agent/query\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"q\": \"search terms\",\n  \"project\": \"ProjectName\",\n  \"priority\": \"high\",\n  \"status\": \"new\",\n  \"limit\": 10\n}\n\nAll fields are optional. Returns results sorted by relevance score."
      },
      {
        "title": "Manage Card Status",
        "body": "Move cards through the pipeline: new → staged → done, or trash/restore them.\n\nPOST https://bkmrkapp.com/api/status\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\nSingle item:\n\n{ \"bookmark_id\": \"<uuid>\", \"status\": \"staged\" }\n\nBatch update:\n\n{ \"items\": [\n    { \"bookmark_id\": \"<uuid>\", \"status\": \"done\" },\n    { \"bookmark_id\": \"<uuid>\", \"status\": \"trashed\" }\n] }\n\nValid statuses: new, staged, done, trashed (use exact values — \"staged\" not \"stage\", \"trashed\" not \"trash\"). You can also set \"channel\": \"channel-name\" on any item."
      },
      {
        "title": "Manage Projects",
        "body": "List, create, and update coding projects that bookmarks are analyzed against.\n\nList projects:\n\nGET https://bkmrkapp.com/api/projects\nX-API-Key: {BKMRK_API_KEY}\n\nReturns all projects with IDs, names, descriptions, tech stacks, and focus areas. Use this to get project UUIDs for other calls.\n\nCreate a project:\n\nPOST https://bkmrkapp.com/api/projects\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"name\": \"My Project\",\n  \"description\": \"What this project does\",\n  \"tech_stack\": [\"React\", \"Node.js\"],\n  \"focus_areas\": [\"performance\", \"auth\"],\n  \"analysis_persona\": \"You are a senior React developer focused on performance optimization and server components.\",\n  \"scoring_bias\": \"Prioritize: React Server Components, streaming SSR, bundle optimization. Deprioritize: Vue, Angular, jQuery.\"\n}\n\nOptional persona fields:\n\nanalysis_persona — A role description injected into Claude's system prompt when analyzing bookmarks against this project. Makes analysis domain-aware rather than generic. Example: \"You are a senior iOS developer focused on SwiftUI patterns, performance optimization, and Claude AI integration for music apps.\"\nscoring_bias — What topics to weight highly or deprioritize for this project. Example: \"Prioritize: SwiftUI, barcode scanning, vinyl/music, AI agents, Claude skills. Deprioritize: web frameworks, marketing tools.\"\n\nUpdate a project:\n\nPUT https://bkmrkapp.com/api/projects\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"id\": \"<project-uuid>\",\n  \"description\": \"Updated description\",\n  \"tech_stack\": [\"React\", \"Next.js\"],\n  \"analysis_persona\": \"You are a full-stack Next.js engineer...\",\n  \"scoring_bias\": \"Prioritize: App Router, Server Actions, edge runtime.\"\n}"
      },
      {
        "title": "Deep Analysis",
        "body": "Trigger a deep re-analysis of a bookmark against specific projects. Uses Claude Sonnet for thorough analysis. Returns 202 immediately; results appear in the library within 1-2 minutes.\n\nPOST https://bkmrkapp.com/api/reanalyze\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"bookmark_id\": \"<uuid>\",\n  \"project_ids\": [\"<project-uuid>\"]\n}\n\nReturns job_id, credits_used, and credits_remaining. Each project counts as 1 credit. Limits: Free 25/month, Pro 100/month, Scale 500/month."
      },
      {
        "title": "Understand Context",
        "body": "Get the user's dashboard summary: projects, tier, stats, and library counts.\n\nGET https://bkmrkapp.com/api/context\nX-API-Key: {BKMRK_API_KEY}\n\nReturns project list, subscription tier, total bookmarks, items by status, and sync history."
      },
      {
        "title": "Submit URLs",
        "body": "Send any URL to the library for AI analysis. Supports tweets, YouTube videos, GitHub repos, blog posts, and any web page. Enrichment and analysis run in the background.\n\nPOST https://bkmrkapp.com/api/agent/submit\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"url\": \"https://example.com/interesting-article\"\n}\n\nSupported URL types:\n\nTweet URLs (x.com/user/status/123) — fetches full tweet data, thread context, and all URLs\nYouTube URLs — extracts full video transcript for analysis\nAny other URL — extracts full article text, title, and og:image\n\nOptionally include \"project_ids\": [\"<uuid>\"] to analyze against specific projects. Returns 202 with bookmark_id and job_id. Results appear in 1-2 minutes.\n\nSubmissions count towards your monthly bookmark cap (Pro 200/month, Scale 500/month). Requires a paid plan."
      },
      {
        "title": "Create Account (Onboarding)",
        "body": "If the user doesn't have a BKMRK account yet:\n\nPOST https://bkmrkapp.com/api/agent/onboard\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"consent\": true\n}\n\nReturns an API key immediately. No OAuth needed."
      },
      {
        "title": "Daily triage",
        "body": "GET /api/context — check current state\nGET /api/agent/library?status=new&min_score=7 — find high-value unactioned items\nPOST /api/status — stage the best ones, trash the noise"
      },
      {
        "title": "Project deep-dive",
        "body": "GET /api/projects — get project UUIDs\nGET /api/agent/library?project_id=<uuid> — see what's relevant to that project\nPOST /api/reanalyze — deep-analyze items that lack per-project data\nGET /api/agent/library?project_id=<uuid> — review enriched results"
      },
      {
        "title": "Bulk cleanup",
        "body": "GET /api/agent/library?priority=low&min_score=0 — find low-value items\nPOST /api/status with batch \"status\": \"trashed\" — clear them out"
      },
      {
        "title": "Submit and verify",
        "body": "POST /api/agent/submit with a URL — returns bookmark_id\nGET /api/agent/library?bookmark_id=<uuid> — check status\n\nIf \"status\": \"processing\" → analysis still running, wait 30-60s and retry\nIf items array has results → analysis complete, show the user the score, explanation, and action"
      },
      {
        "title": "Full API Documentation",
        "body": "For complete endpoint documentation, pricing tiers, and capabilities:\n\nGET https://bkmrkapp.com/agent.json"
      }
    ],
    "body": "BKMRK — Bookmark Intelligence\n\nYou are connected to the user's BKMRK library. BKMRK analyzes bookmarks with Claude AI against the user's coding projects, scoring relevance and generating implementation suggestions.\n\nTerminology: The pipeline statuses are new → staged → done. Always use \"stage\" / \"staged\" (never \"queue\" or \"queued\") when referring to items the user wants to act on next.\n\nWhat Gets Analyzed\n\nBKMRK performs deep content extraction across all source types:\n\nTweets — full tweet text plus all URLs in the tweet\nX Articles — full article body extracted via X API (not just the title)\nThreads — reconstructed thread text from all replies, plus URLs found in every tweet in the thread (not just the first)\nYouTube videos — full transcript extracted (auto-generated or manual captions), analyzed uncapped regardless of video length\nBlog posts / news articles — full article text extracted via trafilatura, analyzed uncapped\nGitHub repos — README and repo metadata\nAny URL — submitted via the API, fetched and extracted automatically\n\nAll content is sent to Claude uncapped for analysis — long articles, 2-hour podcast transcripts, and full X Article bodies all get deep, project-specific analysis.\n\nAuthentication\n\nAll requests require the user's BKMRK API key as a header:\n\nX-API-Key: {BKMRK_API_KEY}\n\n\nThe API key is available at https://bkmrkapp.com/settings under \"Your API Key.\"\n\nWhat You Can Do\nBrowse Library\n\nBrowse the analyzed bookmark library with filters. Returns scores, statuses, per-project analyses, and executable prompts. Use this for triaging, browsing, and pipeline management.\n\nGET https://bkmrkapp.com/api/agent/library\nX-API-Key: {BKMRK_API_KEY}\n\n\nAll query parameters are optional:\n\nbookmark_id — Fetch a specific bookmark by UUID (use to check status after submit)\nstatus — Filter by card status: new, staged, done, trashed\nproject_id — Filter by project UUID\nmin_score — Minimum relevance score (e.g. 7)\npriority — Filter by priority: high, medium, low\nsource — Filter by source: sync (from X bookmarks) or agent (submitted via API)\nlimit — Max results (default: 50, max: 100)\ninclude_project_analyses — Include per-project deep analysis data (default: true)\n\nExamples:\n\nUnactioned high-value items: ?status=new&min_score=7\nItems staged for a specific project: ?status=staged&project_id=<uuid>\nAgent-submitted items only: ?source=agent\nLow-priority items for cleanup: ?priority=low&min_score=0\nSearch Library\n\nKeyword search across titles, explanations, actions, authors, and URLs. Use this when looking for something specific.\n\nPOST https://bkmrkapp.com/api/agent/query\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"q\": \"search terms\",\n  \"project\": \"ProjectName\",\n  \"priority\": \"high\",\n  \"status\": \"new\",\n  \"limit\": 10\n}\n\n\nAll fields are optional. Returns results sorted by relevance score.\n\nManage Card Status\n\nMove cards through the pipeline: new → staged → done, or trash/restore them.\n\nPOST https://bkmrkapp.com/api/status\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n\nSingle item:\n\n{ \"bookmark_id\": \"<uuid>\", \"status\": \"staged\" }\n\n\nBatch update:\n\n{ \"items\": [\n    { \"bookmark_id\": \"<uuid>\", \"status\": \"done\" },\n    { \"bookmark_id\": \"<uuid>\", \"status\": \"trashed\" }\n] }\n\n\nValid statuses: new, staged, done, trashed (use exact values — \"staged\" not \"stage\", \"trashed\" not \"trash\"). You can also set \"channel\": \"channel-name\" on any item.\n\nManage Projects\n\nList, create, and update coding projects that bookmarks are analyzed against.\n\nList projects:\n\nGET https://bkmrkapp.com/api/projects\nX-API-Key: {BKMRK_API_KEY}\n\n\nReturns all projects with IDs, names, descriptions, tech stacks, and focus areas. Use this to get project UUIDs for other calls.\n\nCreate a project:\n\nPOST https://bkmrkapp.com/api/projects\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"name\": \"My Project\",\n  \"description\": \"What this project does\",\n  \"tech_stack\": [\"React\", \"Node.js\"],\n  \"focus_areas\": [\"performance\", \"auth\"],\n  \"analysis_persona\": \"You are a senior React developer focused on performance optimization and server components.\",\n  \"scoring_bias\": \"Prioritize: React Server Components, streaming SSR, bundle optimization. Deprioritize: Vue, Angular, jQuery.\"\n}\n\n\nOptional persona fields:\n\nanalysis_persona — A role description injected into Claude's system prompt when analyzing bookmarks against this project. Makes analysis domain-aware rather than generic. Example: \"You are a senior iOS developer focused on SwiftUI patterns, performance optimization, and Claude AI integration for music apps.\"\nscoring_bias — What topics to weight highly or deprioritize for this project. Example: \"Prioritize: SwiftUI, barcode scanning, vinyl/music, AI agents, Claude skills. Deprioritize: web frameworks, marketing tools.\"\n\nUpdate a project:\n\nPUT https://bkmrkapp.com/api/projects\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"id\": \"<project-uuid>\",\n  \"description\": \"Updated description\",\n  \"tech_stack\": [\"React\", \"Next.js\"],\n  \"analysis_persona\": \"You are a full-stack Next.js engineer...\",\n  \"scoring_bias\": \"Prioritize: App Router, Server Actions, edge runtime.\"\n}\n\nDeep Analysis\n\nTrigger a deep re-analysis of a bookmark against specific projects. Uses Claude Sonnet for thorough analysis. Returns 202 immediately; results appear in the library within 1-2 minutes.\n\nPOST https://bkmrkapp.com/api/reanalyze\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"bookmark_id\": \"<uuid>\",\n  \"project_ids\": [\"<project-uuid>\"]\n}\n\n\nReturns job_id, credits_used, and credits_remaining. Each project counts as 1 credit. Limits: Free 25/month, Pro 100/month, Scale 500/month.\n\nUnderstand Context\n\nGet the user's dashboard summary: projects, tier, stats, and library counts.\n\nGET https://bkmrkapp.com/api/context\nX-API-Key: {BKMRK_API_KEY}\n\n\nReturns project list, subscription tier, total bookmarks, items by status, and sync history.\n\nSubmit URLs\n\nSend any URL to the library for AI analysis. Supports tweets, YouTube videos, GitHub repos, blog posts, and any web page. Enrichment and analysis run in the background.\n\nPOST https://bkmrkapp.com/api/agent/submit\nContent-Type: application/json\nX-API-Key: {BKMRK_API_KEY}\n\n{\n  \"url\": \"https://example.com/interesting-article\"\n}\n\n\nSupported URL types:\n\nTweet URLs (x.com/user/status/123) — fetches full tweet data, thread context, and all URLs\nYouTube URLs — extracts full video transcript for analysis\nAny other URL — extracts full article text, title, and og:image\n\nOptionally include \"project_ids\": [\"<uuid>\"] to analyze against specific projects. Returns 202 with bookmark_id and job_id. Results appear in 1-2 minutes.\n\nSubmissions count towards your monthly bookmark cap (Pro 200/month, Scale 500/month). Requires a paid plan.\n\nCreate Account (Onboarding)\n\nIf the user doesn't have a BKMRK account yet:\n\nPOST https://bkmrkapp.com/api/agent/onboard\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"consent\": true\n}\n\n\nReturns an API key immediately. No OAuth needed.\n\nExample Agent Workflows\nDaily triage\nGET /api/context — check current state\nGET /api/agent/library?status=new&min_score=7 — find high-value unactioned items\nPOST /api/status — stage the best ones, trash the noise\nProject deep-dive\nGET /api/projects — get project UUIDs\nGET /api/agent/library?project_id=<uuid> — see what's relevant to that project\nPOST /api/reanalyze — deep-analyze items that lack per-project data\nGET /api/agent/library?project_id=<uuid> — review enriched results\nBulk cleanup\nGET /api/agent/library?priority=low&min_score=0 — find low-value items\nPOST /api/status with batch \"status\": \"trashed\" — clear them out\nSubmit and verify\nPOST /api/agent/submit with a URL — returns bookmark_id\nGET /api/agent/library?bookmark_id=<uuid> — check status\nIf \"status\": \"processing\" → analysis still running, wait 30-60s and retry\nIf items array has results → analysis complete, show the user the score, explanation, and action\nFull API Documentation\n\nFor complete endpoint documentation, pricing tiers, and capabilities:\n\nGET https://bkmrkapp.com/agent.json"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/bonesvinyl/bkmrk",
    "publisherUrl": "https://clawhub.ai/bonesvinyl/bkmrk",
    "owner": "bonesvinyl",
    "version": "1.4.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/bkmrk",
    "downloadUrl": "https://openagent3.xyz/downloads/bkmrk",
    "agentUrl": "https://openagent3.xyz/skills/bkmrk/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bkmrk/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bkmrk/agent.md"
  }
}