🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Lark Report Collector

by @pengxiao-wang

Collect weekly reports from Lark Reports (oa.larksuite.com), summarize into Lark Docs, and notify. Use when: (1) collecting weekly reports from specific team...

Versionv1.0.0
Downloads1,271
TERMINAL
clawhub install lark-report-collector

πŸ“– About This Skill


name: lark-report-collector description: "Collect weekly reports from Lark Reports (oa.larksuite.com), summarize into Lark Docs, and notify. Use when: (1) collecting weekly reports from specific teams/templates, (2) checking who hasn't submitted reports, (3) generating report summaries as Lark documents. Requires browser automation (Reports is a SPA, API not available on international Lark)."

Lark Report Collector

Collect weekly report data from Lark Reports, summarize into Lark Docs, and send notifications.

When to Use

  • "Collect this week's/last week's reports for Photo/Bloom/H&F"
  • "Who hasn't submitted their weekly report?"
  • "Summarize weekly reports into a Lark doc"
  • Hard Rules (battle-tested)

    1. Reports is a SPA β€” curl/web_fetch returns nothing. Must use browser (profile=openclaw) 2. Pagination is reversed β€” Next = older weeks, Previous = newer weeks 3. Always snapshot to confirm week title after pagination (most common error: collecting wrong week) 4. One page may show multiple weeks β€” data is sorted by time, a single page can span 2-3 weeks 5. block_type mapping β€” 12=bullet, 13=ordered (NOT 9/10! Those are heading7/heading8) 6. Never restart gateway inside a sub-agent (kills itself) 7. Sub-agents need exact URLs and steps β€” don't let them explore on their own

    Complete Workflow

    Step 1: Navigate to Reports

    browser action=navigate profile=openclaw targetUrl="https://oa.larksuite.com/report/record/entry"
    

    Prerequisites: openclaw browser must have active Lark login session.

    Step 2: Select Report Template

    Snapshot and click the target template menuitem in the left sidebar "Received by me".

    Step 3: Navigate to Target Week

    Page defaults to latest data. Week title format: "Feb 2 ~ Feb 8 Submitted: 18"

    Pagination (critical):

  • Next button = older weeks ⬅️
  • Previous button = newer weeks ➑️
  • Page display: "2/25" (page 2 of 25), page 1 is newest
  • ⚠️ Snapshot and confirm the date in the title after every page turn!

    Step 4: Extract Submitted Members Data

  • Same page may show multiple weeks β€” only extract rows belonging to target week
  • Paginate through all rows for the target week
  • Append to local file after each extraction (prevents data loss)
  • Step 5: Get Unsubmitted List

    "Not submitted: N" button has no snapshot ref. Click via JS evaluate:

    (() => {
      const btns = [...document.querySelectorAll('button')].filter(
        b => /Not submitted.*\d/.test(b.innerText)
      );
      if(btns.length) { btns[0].click(); return 'clicked'; }
      return 'not found';
    })()
    

    Dialog shows: unsubmitted count + names + departments.

    Step 6: Create Lark Doc

    Create document via Lark Open API (see lark-api skill for auth).

    block_type reference (verified):

    | block_type | Type | JSON field | |-----------|------|-----------| | 2 | Text | "text" | | 3 | Heading 1 | "heading1" | | 4 | Heading 2 | "heading2" | | 5 | Heading 3 | "heading3" | | 12 | Bullet list βœ… | "bullet" | | 13 | Ordered list βœ… | "ordered" | | 22 | Divider | "divider" |

    ❌ 9=heading7, 10=heading8. NOT lists!

    Step 7: Send Notification

    Send message via Lark API with doc link.

    Lessons Learned (6 real attempts)

    | # | Result | Root Cause | Lesson | |---|--------|-----------|---------| | 1 | ❌ Self-killed | Sub-agent ran gateway restart | Never restart gateway in sub-agent | | 2 | ⚠️ Wrong week | Collected Feb 10-14 instead of Feb 3-7 | Always confirm week title after pagination | | 3 | ❌ 200K tokens burned | Tried curl on SPA | Reports is SPA, browser only | | 4 | ❌ 200K tokens burned | Sub-agent explored on its own | Give exact URLs and steps | | 5 | βœ… Success | Precise instructions + correct block_types | Template is key |

    Known Limitations

  • Lark Report Open API unavailable on international version (returns 404) β€” browser only
  • Browser login session may expire β€” re-login needed
  • Export button (Excel) untested β€” potential alternative
  • ⚑ When to Use

    TriggerAction
    - "Who hasn't submitted their weekly report?"
    - "Summarize weekly reports into a Lark doc"