Import-ready, redacted n8n workflows: Lark/Feishu bot messages into Bitable records and PRD drafts, plus social-media metrics tracking via Apify. English | 简体中文(国内版)
Most people should skip this repo.
If you already use lark-cli (or Feishu/Lark Open APIs) plus a work agent such as Grok Bot, Codex, Claude Code, or a similar harness, you can do the same jobs — scheduled pulls, Bitable writes, PRD drafts from chat — without importing these n8n graphs. Agents own the loop; n8n is no longer the easiest control plane for that stack.
Keep this collection only if you still run n8n as the system of record (visual ops for non-engineers, existing n8n hosting, or you need the redacted JSON + MCP manifests as-is). Otherwise prefer lark-cli + your agent.
The workflows below stay as reference exports.
The workflows ship in two editions with the same structure. Start with global.
| Edition | Folder | Language | Services |
|---|---|---|---|
| Global (default) | workflows/global/ |
English node names, comments, prompts and messages | Lark (open.larksuite.com), OpenAI |
| China | workflows/cn/ |
Chinese (localized) | Feishu (open.feishu.cn), DeepSeek |
The two editions expect different Bitable field names; see field names.
- In n8n, go to Workflows → Import from file and pick a
workflows/global/**/*.redacted.json. - Replace every
{{PLACEHOLDER}}(credentials, table IDs, webhook IDs) with your own. - Rebind credentials in n8n, test on a non-production Bitable, then enable.
The global edition requires n8n, the Lark Open Platform (larksuite.com) with Base/Bitable, an OpenAI API key (bot flow and table naming) and Apify (social flows; needs actor access and quota).
| Workflow | Trigger | Services | Nodes | What it automates |
|---|---|---|---|---|
| Lark / FeishuBotBitable | Webhook (Lark bot) | Lark, Bitable, OpenAI | 12 | Chat message → structured Bitable record + PRD draft |
| SocialMediaTracker / Create | Manual | Apify, Bitable | 32 | Monthly tracking table + bulk import across platforms |
| SocialMediaTracker / Update | Manual | Apify, Bitable | 44 | Refresh metrics for Instagram, X, YouTube, Facebook |
| Instagram · X · YouTube · Facebook | Manual | Apify, Bitable | 17–22 | Per-platform Create / Update split-outs |
Each workflow has a workflow.manifest.json next to its export (schema): a description, the trigger node, input and output as JSON Schema, side effects, and a ready execute_workflow call. List them with npm run manifests -- --json. Manifests carry an edition (global or cn); cn ids end in -cn.
To let an agent (Claude, Cursor, Codex…) run them through n8n's instance-level MCP server:
- Import and configure the workflow (Quickstart above), then publish it.
- Settings → Instance-level MCP → Enable MCP access, then connect your client (OAuth or API key; the server URL ends in
/mcp-server/http). - Open the workflow, then … → Settings → Available in MCP. The exports ship with this off.
- … → Edit description: paste the manifest's
descriptionsosearch_workflowsfinds it. - The agent calls
execute_workflowwithmcp.executeWorkflowfrom the manifest (webhook workflows passinputs.webhookData.bodymatchinginput), thenget_executionfor the result.
Every manifest sets requiresConfirmation: true because all of these workflows write to Bitable, reply in chat or spend Apify/LLM quota. Agents should ask before running them.
trigger (webhook | manual) ─▶ fetch (Lark API | Apify actor) ─▶ normalise (Code/Set) ─▶ write (Bitable) ─▶ notify
Each platform has a Create flow (build the table, first import) and an Update flow (refresh existing rows), so either can be re-run independently.
npm test # tests for the checkers
npm run check:redaction # scans workflows/**/*.json, prints rule + JSON path only, never the value
npm run check:manifests # every export has a manifest that matches it (name, trigger node and type, edition)
npm run check:workflows # JSON parses, unique node names, connections and $('Node') refs resolve, global has no CJK, editions are pairedRun the check before committing any new export. Only {{UPPER_SNAKE}} placeholders are allowed where credentials, tokens, tenant links, webhook IDs or emails would go.
npm run preflightThis reads the exports locally. It does not import them into n8n or call Lark, OpenAI, Apify, or Bitable. Structural problems (broken connections, unreachable nodes, credential ids that are not {{UPPER_SNAKE}}, secret literals) fail the command. Node typeVersion compatibility and external API behavior are not-run. Replay and partial writes are labeled unverified, not exactly-once. Exit 0 is not a production certification. Details: docs/import-preflight.md.