{
  "schemaVersion": "1.0",
  "item": {
    "slug": "lark-report-collector",
    "name": "Lark Report Collector",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/Pengxiao-Wang/lark-report-collector",
    "canonicalUrl": "https://clawhub.ai/Pengxiao-Wang/lark-report-collector",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/lark-report-collector",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=lark-report-collector",
    "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-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/lark-report-collector"
    },
    "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/lark-report-collector",
    "agentPageUrl": "https://openagent3.xyz/skills/lark-report-collector/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lark-report-collector/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lark-report-collector/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": "Lark Report Collector",
        "body": "Collect weekly report data from Lark Reports, summarize into Lark Docs, and send notifications."
      },
      {
        "title": "When to Use",
        "body": "\"Collect this week's/last week's reports for Photo/Bloom/H&F\"\n\"Who hasn't submitted their weekly report?\"\n\"Summarize weekly reports into a Lark doc\""
      },
      {
        "title": "Hard Rules (battle-tested)",
        "body": "Reports is a SPA — curl/web_fetch returns nothing. Must use browser (profile=openclaw)\nPagination is reversed — Next = older weeks, Previous = newer weeks\nAlways snapshot to confirm week title after pagination (most common error: collecting wrong week)\nOne page may show multiple weeks — data is sorted by time, a single page can span 2-3 weeks\nblock_type mapping — 12=bullet, 13=ordered (NOT 9/10! Those are heading7/heading8)\nNever restart gateway inside a sub-agent (kills itself)\nSub-agents need exact URLs and steps — don't let them explore on their own"
      },
      {
        "title": "Step 1: Navigate to Reports",
        "body": "browser action=navigate profile=openclaw targetUrl=\"https://oa.larksuite.com/report/record/entry\"\n\nPrerequisites: openclaw browser must have active Lark login session."
      },
      {
        "title": "Step 2: Select Report Template",
        "body": "Snapshot and click the target template menuitem in the left sidebar \"Received by me\"."
      },
      {
        "title": "Step 3: Navigate to Target Week",
        "body": "Page defaults to latest data. Week title format: \"Feb 2 ~ Feb 8 Submitted: 18\"\n\nPagination (critical):\n\nNext button = older weeks ⬅️\nPrevious button = newer weeks ➡️\nPage display: \"2/25\" (page 2 of 25), page 1 is newest\n\n⚠️ Snapshot and confirm the date in the title after every page turn!"
      },
      {
        "title": "Step 4: Extract Submitted Members Data",
        "body": "Same page may show multiple weeks — only extract rows belonging to target week\nPaginate through all rows for the target week\nAppend to local file after each extraction (prevents data loss)"
      },
      {
        "title": "Step 5: Get Unsubmitted List",
        "body": "\"Not submitted: N\" button has no snapshot ref. Click via JS evaluate:\n\n(() => {\n  const btns = [...document.querySelectorAll('button')].filter(\n    b => /Not submitted.*\\d/.test(b.innerText)\n  );\n  if(btns.length) { btns[0].click(); return 'clicked'; }\n  return 'not found';\n})()\n\nDialog shows: unsubmitted count + names + departments."
      },
      {
        "title": "Step 6: Create Lark Doc",
        "body": "Create document via Lark Open API (see lark-api skill for auth).\n\nblock_type reference (verified):\n\nblock_typeTypeJSON field2Text\"text\"3Heading 1\"heading1\"4Heading 2\"heading2\"5Heading 3\"heading3\"12Bullet list ✅\"bullet\"13Ordered list ✅\"ordered\"22Divider\"divider\"\n\n❌ 9=heading7, 10=heading8. NOT lists!"
      },
      {
        "title": "Step 7: Send Notification",
        "body": "Send message via Lark API with doc link."
      },
      {
        "title": "Lessons Learned (6 real attempts)",
        "body": "#ResultRoot CauseLesson1❌ Self-killedSub-agent ran gateway restartNever restart gateway in sub-agent2⚠️ Wrong weekCollected Feb 10-14 instead of Feb 3-7Always confirm week title after pagination3❌ 200K tokens burnedTried curl on SPAReports is SPA, browser only4❌ 200K tokens burnedSub-agent explored on its ownGive exact URLs and steps5✅ SuccessPrecise instructions + correct block_typesTemplate is key"
      },
      {
        "title": "Known Limitations",
        "body": "Lark Report Open API unavailable on international version (returns 404) — browser only\nBrowser login session may expire — re-login needed\nExport button (Excel) untested — potential alternative"
      }
    ],
    "body": "Lark Report Collector\n\nCollect weekly report data from Lark Reports, summarize into Lark Docs, and send notifications.\n\nWhen to Use\n\"Collect this week's/last week's reports for Photo/Bloom/H&F\"\n\"Who hasn't submitted their weekly report?\"\n\"Summarize weekly reports into a Lark doc\"\nHard Rules (battle-tested)\nReports is a SPA — curl/web_fetch returns nothing. Must use browser (profile=openclaw)\nPagination is reversed — Next = older weeks, Previous = newer weeks\nAlways snapshot to confirm week title after pagination (most common error: collecting wrong week)\nOne page may show multiple weeks — data is sorted by time, a single page can span 2-3 weeks\nblock_type mapping — 12=bullet, 13=ordered (NOT 9/10! Those are heading7/heading8)\nNever restart gateway inside a sub-agent (kills itself)\nSub-agents need exact URLs and steps — don't let them explore on their own\nComplete Workflow\nStep 1: Navigate to Reports\nbrowser action=navigate profile=openclaw targetUrl=\"https://oa.larksuite.com/report/record/entry\"\n\n\nPrerequisites: openclaw browser must have active Lark login session.\n\nStep 2: Select Report Template\n\nSnapshot and click the target template menuitem in the left sidebar \"Received by me\".\n\nStep 3: Navigate to Target Week\n\nPage defaults to latest data. Week title format: \"Feb 2 ~ Feb 8 Submitted: 18\"\n\nPagination (critical):\n\nNext button = older weeks ⬅️\nPrevious button = newer weeks ➡️\nPage display: \"2/25\" (page 2 of 25), page 1 is newest\n\n⚠️ Snapshot and confirm the date in the title after every page turn!\n\nStep 4: Extract Submitted Members Data\nSame page may show multiple weeks — only extract rows belonging to target week\nPaginate through all rows for the target week\nAppend to local file after each extraction (prevents data loss)\nStep 5: Get Unsubmitted List\n\n\"Not submitted: N\" button has no snapshot ref. Click via JS evaluate:\n\n(() => {\n  const btns = [...document.querySelectorAll('button')].filter(\n    b => /Not submitted.*\\d/.test(b.innerText)\n  );\n  if(btns.length) { btns[0].click(); return 'clicked'; }\n  return 'not found';\n})()\n\n\nDialog shows: unsubmitted count + names + departments.\n\nStep 6: Create Lark Doc\n\nCreate document via Lark Open API (see lark-api skill for auth).\n\nblock_type reference (verified):\n\nblock_type\tType\tJSON field\n2\tText\t\"text\"\n3\tHeading 1\t\"heading1\"\n4\tHeading 2\t\"heading2\"\n5\tHeading 3\t\"heading3\"\n12\tBullet list ✅\t\"bullet\"\n13\tOrdered list ✅\t\"ordered\"\n22\tDivider\t\"divider\"\n\n❌ 9=heading7, 10=heading8. NOT lists!\n\nStep 7: Send Notification\n\nSend message via Lark API with doc link.\n\nLessons Learned (6 real attempts)\n#\tResult\tRoot Cause\tLesson\n1\t❌ Self-killed\tSub-agent ran gateway restart\tNever restart gateway in sub-agent\n2\t⚠️ Wrong week\tCollected Feb 10-14 instead of Feb 3-7\tAlways confirm week title after pagination\n3\t❌ 200K tokens burned\tTried curl on SPA\tReports is SPA, browser only\n4\t❌ 200K tokens burned\tSub-agent explored on its own\tGive exact URLs and steps\n5\t✅ Success\tPrecise instructions + correct block_types\tTemplate is key\nKnown Limitations\nLark Report Open API unavailable on international version (returns 404) — browser only\nBrowser login session may expire — re-login needed\nExport button (Excel) untested — potential alternative"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Pengxiao-Wang/lark-report-collector",
    "publisherUrl": "https://clawhub.ai/Pengxiao-Wang/lark-report-collector",
    "owner": "Pengxiao-Wang",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/lark-report-collector",
    "downloadUrl": "https://openagent3.xyz/downloads/lark-report-collector",
    "agentUrl": "https://openagent3.xyz/skills/lark-report-collector/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lark-report-collector/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lark-report-collector/agent.md"
  }
}