@tjnhpro/n8n-nodes-lark
v0.1.2
Published
Typed n8n community nodes for Feishu/Lark. The goal is to expose common Lark admin and automation scenarios (chat messages, approvals, calendars, user sync) directly inside n8n while keeping the package compliant with the official n8n node review guidelin
Readme
n8n Lark Nodes
Typed n8n community nodes for Feishu/Lark. The goal is to expose common Lark admin and automation scenarios (chat messages, approvals, calendars, user sync) directly inside n8n while keeping the package compliant with the official n8n node review guidelines.
Status
- Tooling in place (
@n8n/node-cli, strict TypeScript, GitHub Actions) - Node/credential implementations in progress (existing GitHub/Example scaffolds removed)
- Target APIs: Tenant/ISV tokens, Messaging, Bitable, Approval, Calendar
Features
- Lark API Node
- Authenticate: Exchange app credentials for tenant access tokens directly from the editor.
- Wiki: Create nodes, fetch node metadata, and list children inside a wiki space.
- Base (Bitable):
- App operations: create, copy, fetch, and rename Base apps.
- Table operations: create/batch create tables, rename, list, delete, and batch delete.
- Record operations: single create/update/search/delete plus batch create/update/get/delete with pagination controls.
- Shared
BaseServiceenforces the Lark base URL and authorization header so downstream services stay consistent. LarkBaseServiceandWikiServiceexpose typed helpers so node execution logic can stay focused on mapping inputs/outputs.
Development Workflow
- Install deps:
npm install - Add credentials to
credentials/and nodes undernodes/Lark* - Register builds in
package.json -> n8n.credentialsandn8n.nodes - Run
npm run devto load the node(s) inside a local n8n instance for manual testing - Run
npm run lint && npm run buildbefore committing
Repository Structure
credentials/ # Lark API credentials (OAuth2, app tokens, tenant access)
nodes/ # Declarative node implementations grouped by resource
dist/ # Generated output from `npm run build`
openspec/ # Project/process specs used for planning changesShared Services
services/BaseService.tscentralizes the Lark base URL (https://open.larksuite.com) and automatically injects thetenant_access_token(returned by the Authenticate node) as aBearerheader for every request.services/WikiService.tsextendsBaseServiceand exposes helpers such as:createNode(spaceId, payload)→POST /open-apis/wiki/v2/spaces/:space_id/nodesgetNodeInfo(nodeToken)→GET /open-apis/wiki/v2/spaces/get_node?token=<nodeToken>listChildNodes(spaceId, query)→GET /open-apis/wiki/v2/spaces/:space_id/nodesEach helper returns the raw Lark response body so nodes can adapt quickly.
- Import from
services/index.tsto keep consumer modules decoupled from file layout changes.
NPM Scripts
| Script | Purpose |
| --- | --- |
| npm run dev | Start n8n-node dev with hot reload to test nodes locally |
| npm run lint / npm run lint:fix | Run ESLint via @n8n/node-cli to enforce style/quality |
| npm run build / npm run build:watch | Emit compiled JS into dist/ |
| npm run release | Release workflow powered by n8n-node release / release-it |
Contribution Checklist
- Keep TypeScript strict options enabled; do not add runtime deps unless essential.
- Follow Prettier config (tabs, 100 char width, single quotes); run lint before pushing.
- Document each resource/operation in node descriptions; use Lark terminology in UI labels.
- Update this README and
openspec/project.mdwhen adding significant capabilities.
License
MIT
