n8n-nodes-tiktok-request 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -0
- package/dist/credentials/AuthGatewayApi.credentials.d.ts +13 -0
- package/dist/credentials/AuthGatewayApi.credentials.js +56 -0
- package/dist/credentials/AuthGatewayApi.credentials.js.map +1 -0
- package/dist/credentials/authGateway.dark.svg +5 -0
- package/dist/credentials/authGateway.svg +5 -0
- package/dist/nodes/RequestTikTokData/RequestTikTokData.node.d.ts +5 -0
- package/dist/nodes/RequestTikTokData/RequestTikTokData.node.js +210 -0
- package/dist/nodes/RequestTikTokData/RequestTikTokData.node.js.map +1 -0
- package/dist/nodes/RequestTikTokData/RequestTikTokData.node.json +13 -0
- package/dist/nodes/RequestTikTokData/tiktokRequest.dark.svg +6 -0
- package/dist/nodes/RequestTikTokData/tiktokRequest.svg +6 -0
- package/dist/package.json +43 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# n8n-nodes-tiktok-request
|
|
2
|
+
|
|
3
|
+
面向自托管 TikTok 数据网关的 n8n 社区节点:通过 **GET** `{网关地址}/api/auth/user_info` 拉取用户资料(粉丝数、关注数等),便于在工作流里做对比或监控。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **节点名称(界面)**:监控 tik粉丝变化
|
|
8
|
+
- **请求**:`GET /api/auth/user_info`,查询参数 `username`、`force`
|
|
9
|
+
- **鉴权**:在凭证中配置 `Authenticator`、`User-Agent` 与网关根地址
|
|
10
|
+
- **输出**:可选「中文表头」(默认)或「接口原文」;网关若返回数组包裹的单条结果会自动解包
|
|
11
|
+
|
|
12
|
+
## 环境要求
|
|
13
|
+
|
|
14
|
+
- Node.js(与当前 n8n / `@n8n/node-cli` 要求一致即可)
|
|
15
|
+
- 已安装依赖:`npm install`
|
|
16
|
+
|
|
17
|
+
## 本地开发
|
|
18
|
+
|
|
19
|
+
| 命令 | 说明 |
|
|
20
|
+
|------|------|
|
|
21
|
+
| `npm run build` | 编译 TypeScript 并产出 `dist`(发布与 n8n 加载均依赖此目录) |
|
|
22
|
+
| `npm run build:watch` | 仅 `tsc --watch`,不复制静态资源时需自行配合构建流程 |
|
|
23
|
+
| `npm run dev` | 使用本地 `node_modules` 内的 n8n 启动开发环境(复制 SVG等资源、监听编译) |
|
|
24
|
+
| `npm run dev:npx` | 等价于 `n8n-node dev`(依赖本机 npx 环境) |
|
|
25
|
+
| `npm run lint` | ESLint 检查 |
|
|
26
|
+
|
|
27
|
+
## 在 n8n 中使用
|
|
28
|
+
|
|
29
|
+
1. 在本仓库执行 `npm run build`。
|
|
30
|
+
2. 将本包以社区节点方式提供给 n8n(例如通过 `npm pack` 后在 n8n 实例中安装,或使用文档中的 [社区节点](https://docs.n8n.io/integrations/community-nodes/installation/) 安装流程)。
|
|
31
|
+
3. 重启或刷新 n8n 后,在节点面板中搜索 **监控tik粉丝变化**(或包名相关条目)。
|
|
32
|
+
|
|
33
|
+
具体安装路径取决于你的部署方式(Docker、npm全局安装等),请以官方「社区节点」文档为准。
|
|
34
|
+
|
|
35
|
+
## 凭证:TikTok 网关 API
|
|
36
|
+
|
|
37
|
+
在 n8n 中新建凭证 **TikTok 网关 API**(`authGatewayApi`),填写:
|
|
38
|
+
|
|
39
|
+
| 字段 | 说明 |
|
|
40
|
+
|------|------|
|
|
41
|
+
| **网关地址** | 接口根地址,**不要**以 `/` 结尾;实际请求为 `{网关地址}/api/auth/user_info` |
|
|
42
|
+
| **鉴权令牌** | 请求头 `Authenticator` |
|
|
43
|
+
| **浏览器标识 (User-Agent)** | 请求头 `User-Agent`,默认已填常见 Chrome 标识 |
|
|
44
|
+
|
|
45
|
+
凭证测试当前指向 `https://httpbin.org/get`,仅作连通性参考;真实能力以你的网关为准。
|
|
46
|
+
|
|
47
|
+
## 节点参数
|
|
48
|
+
|
|
49
|
+
| 参数 | 说明 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| **用户名** | TikTok 用户名,支持带 `@` 前缀 |
|
|
52
|
+
| **强制刷新** | `force` 查询参数:`true` 时尽量拉取最新数据 |
|
|
53
|
+
| **输出格式** | **中文表头**:将 `success`、`data.user_info` 等映射为中文键名;**接口原文**:与网关返回结构一致 |
|
|
54
|
+
|
|
55
|
+
## 输出说明(中文表头)
|
|
56
|
+
|
|
57
|
+
顶层常见字段包括:`是否成功`、`提示信息`、`来自缓存`(若有)、`用户信息`(内含粉丝数、关注数、昵称等)。若无 `user_info` 结构,则回退为 `数据` 字段承载原始 `data`。
|
|
58
|
+
|
|
59
|
+
## 许可证
|
|
60
|
+
|
|
61
|
+
MIT(见 `package.json` 中的 `license` 字段)。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class AuthGatewayApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: {
|
|
6
|
+
readonly light: "file:authGateway.svg";
|
|
7
|
+
readonly dark: "file:authGateway.dark.svg";
|
|
8
|
+
};
|
|
9
|
+
documentationUrl: string;
|
|
10
|
+
properties: INodeProperties[];
|
|
11
|
+
authenticate: IAuthenticateGeneric;
|
|
12
|
+
test: ICredentialTestRequest;
|
|
13
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthGatewayApi = void 0;
|
|
4
|
+
class AuthGatewayApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'authGatewayApi';
|
|
7
|
+
this.displayName = 'TikTok 网关 API';
|
|
8
|
+
this.icon = { light: 'file:authGateway.svg', dark: 'file:authGateway.dark.svg' };
|
|
9
|
+
this.documentationUrl = 'https://docs.n8n.io/';
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: '网关地址',
|
|
13
|
+
name: 'baseUrl',
|
|
14
|
+
type: 'string',
|
|
15
|
+
required: true,
|
|
16
|
+
default: '',
|
|
17
|
+
placeholder: 'https://your-gateway.example.com',
|
|
18
|
+
description: '接口根地址,勿以 / 结尾;实际请求为 {网关地址}/api/auth/user_info',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
displayName: '鉴权令牌',
|
|
22
|
+
name: 'authenticator',
|
|
23
|
+
type: 'string',
|
|
24
|
+
typeOptions: { password: true },
|
|
25
|
+
required: true,
|
|
26
|
+
default: '',
|
|
27
|
+
description: '请求头 Authenticator,与接口文档一致',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
displayName: '浏览器标识 (User-Agent)',
|
|
31
|
+
name: 'userAgent',
|
|
32
|
+
type: 'string',
|
|
33
|
+
required: true,
|
|
34
|
+
default: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
35
|
+
description: '请求头 User-Agent;默认已填常见 Chrome 标识',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
this.authenticate = {
|
|
39
|
+
type: 'generic',
|
|
40
|
+
properties: {
|
|
41
|
+
headers: {
|
|
42
|
+
Authenticator: '={{$credentials.authenticator}}',
|
|
43
|
+
'User-Agent': '={{$credentials.userAgent}}',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
this.test = {
|
|
48
|
+
request: {
|
|
49
|
+
method: 'GET',
|
|
50
|
+
url: 'https://httpbin.org/get',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.AuthGatewayApi = AuthGatewayApi;
|
|
56
|
+
//# sourceMappingURL=AuthGatewayApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthGatewayApi.credentials.js","sourceRoot":"","sources":["../../credentials/AuthGatewayApi.credentials.ts"],"names":[],"mappings":";;;AAUA,MAAa,cAAc;IAA3B;QACC,SAAI,GAAG,gBAAgB,CAAC;QAExB,gBAAW,GAAG,eAAe,CAAC;QAE9B,SAAI,GAAG,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,2BAA2B,EAAW,CAAC;QAErF,qBAAgB,GAAG,sBAAsB,CAAC;QAE1C,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,kCAAkC;gBAC/C,WAAW,EAAE,+CAA+C;aAC5D;YACD;gBACC,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,2BAA2B;aACxC;YACD;gBACC,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EACN,iHAAiH;gBAClH,WAAW,EAAE,iCAAiC;aAC9C;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,iCAAiC;oBAChD,YAAY,EAAE,6BAA6B;iBAC3C;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,yBAAyB;aAC9B;SACD,CAAC;IACH,CAAC;CAAA;AAvDD,wCAuDC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class RequestTikTokData implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestTikTokData = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
function unwrapGatewayBody(body) {
|
|
6
|
+
if (Array.isArray(body)) {
|
|
7
|
+
const first = body[0];
|
|
8
|
+
if (first && typeof first === 'object' && !Array.isArray(first)) {
|
|
9
|
+
return first;
|
|
10
|
+
}
|
|
11
|
+
return { 原始列表: body };
|
|
12
|
+
}
|
|
13
|
+
if (body && typeof body === 'object' && !Array.isArray(body)) {
|
|
14
|
+
return body;
|
|
15
|
+
}
|
|
16
|
+
return { 原始响应: body };
|
|
17
|
+
}
|
|
18
|
+
function toChineseOutput(payload) {
|
|
19
|
+
const out = {
|
|
20
|
+
是否成功: payload.success === true,
|
|
21
|
+
提示信息: typeof payload.message === 'string'
|
|
22
|
+
? payload.message
|
|
23
|
+
: payload.message !== undefined && payload.message !== null
|
|
24
|
+
? String(payload.message)
|
|
25
|
+
: '',
|
|
26
|
+
};
|
|
27
|
+
const data = payload.data;
|
|
28
|
+
if (!data || typeof data !== 'object') {
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
if (typeof data.cached === 'boolean') {
|
|
32
|
+
out.来自缓存 = data.cached;
|
|
33
|
+
}
|
|
34
|
+
const u = data.user_info;
|
|
35
|
+
if (u && typeof u === 'object') {
|
|
36
|
+
out.用户信息 = {
|
|
37
|
+
内部ID: u.id,
|
|
38
|
+
用户名: u.username,
|
|
39
|
+
平台UID: u.uid,
|
|
40
|
+
安全UID: u.secUid,
|
|
41
|
+
昵称: u.nickname,
|
|
42
|
+
头像地址: u.avatar,
|
|
43
|
+
个人简介: u.signature,
|
|
44
|
+
主页链接: u.link,
|
|
45
|
+
粉丝数: u.fans,
|
|
46
|
+
关注数: u.following,
|
|
47
|
+
获赞总数: u.heartCount,
|
|
48
|
+
点赞数: u.like,
|
|
49
|
+
作品数: u.awe_count,
|
|
50
|
+
地区: u.country,
|
|
51
|
+
隐私状态: u.privateAccount,
|
|
52
|
+
注册时间: u.createTime,
|
|
53
|
+
是否商业账号: u.isCommerceUser,
|
|
54
|
+
商业类目: u.commerceCategory,
|
|
55
|
+
是否机器账号: u.isRobot,
|
|
56
|
+
账号状态: u.status,
|
|
57
|
+
错误说明: u.error_message,
|
|
58
|
+
资料更新时间: u.updated_at,
|
|
59
|
+
视频列表: u.videos,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
out.数据 = data;
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
function assignOutput(item, response, outputFormat) {
|
|
68
|
+
if (outputFormat === 'raw') {
|
|
69
|
+
if (Array.isArray(response)) {
|
|
70
|
+
item.json = { 接口返回: response };
|
|
71
|
+
}
|
|
72
|
+
else if (response && typeof response === 'object') {
|
|
73
|
+
item.json = response;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
item.json = { 接口返回: response };
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const payload = unwrapGatewayBody(response);
|
|
81
|
+
item.json = toChineseOutput(payload);
|
|
82
|
+
}
|
|
83
|
+
class RequestTikTokData {
|
|
84
|
+
constructor() {
|
|
85
|
+
this.description = {
|
|
86
|
+
displayName: '监控tik粉丝变化',
|
|
87
|
+
name: 'requestTikTokData',
|
|
88
|
+
icon: { light: 'file:tiktokRequest.svg', dark: 'file:tiktokRequest.dark.svg' },
|
|
89
|
+
group: ['transform'],
|
|
90
|
+
version: 5,
|
|
91
|
+
subtitle: '={{$parameter["username"]}}',
|
|
92
|
+
description: '通过网关 GET /api/auth/user_info 拉取用户资料,可用于对比粉丝数等变化。支持将返回字段映射为中文键名,便于同事使用。',
|
|
93
|
+
defaults: {
|
|
94
|
+
name: '监控tik粉丝变化',
|
|
95
|
+
},
|
|
96
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
97
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
98
|
+
usableAsTool: true,
|
|
99
|
+
documentationUrl: 'https://docs.n8n.io/',
|
|
100
|
+
credentials: [
|
|
101
|
+
{
|
|
102
|
+
name: 'authGatewayApi',
|
|
103
|
+
required: true,
|
|
104
|
+
displayName: '网关凭证',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
properties: [
|
|
108
|
+
{
|
|
109
|
+
displayName: '用户名',
|
|
110
|
+
name: 'username',
|
|
111
|
+
type: 'string',
|
|
112
|
+
default: '',
|
|
113
|
+
placeholder: 'tkk.one 或 @tkk.one',
|
|
114
|
+
required: true,
|
|
115
|
+
description: 'TikTok 用户名,支持 @ 前缀(示例:tkk.one 或 @tkk.one)',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
displayName: '强制刷新',
|
|
119
|
+
name: 'force',
|
|
120
|
+
type: 'options',
|
|
121
|
+
noDataExpression: true,
|
|
122
|
+
options: [
|
|
123
|
+
{
|
|
124
|
+
name: '否',
|
|
125
|
+
value: false,
|
|
126
|
+
description: '不强制刷新,优先使用缓存数据',
|
|
127
|
+
action: 'Prefer cached data when available',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: '是',
|
|
131
|
+
value: true,
|
|
132
|
+
description: '强制从数据源拉取最新数据',
|
|
133
|
+
action: 'Force refresh data from source',
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
default: false,
|
|
137
|
+
description: '是否强制刷新数据,默认否',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
displayName: '输出格式',
|
|
141
|
+
name: 'outputFormat',
|
|
142
|
+
type: 'options',
|
|
143
|
+
noDataExpression: true,
|
|
144
|
+
options: [
|
|
145
|
+
{
|
|
146
|
+
name: '中文表头',
|
|
147
|
+
value: 'chinese',
|
|
148
|
+
description: '将 success、user_info、fans 等映射为是否成功、用户信息、粉丝数等,便于同事阅读',
|
|
149
|
+
action: 'Map API fields to Chinese keys for easier workflows',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: '接口原文',
|
|
153
|
+
value: 'raw',
|
|
154
|
+
description: '不做字段映射,与网关返回结构一致(含数组包裹时原样放在「接口返回」下)',
|
|
155
|
+
action: 'Keep the raw API response structure',
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
default: 'chinese',
|
|
159
|
+
description: '默认使用中文表头;对接其它系统需要英文键名时选「接口原文」',
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
async execute() {
|
|
165
|
+
var _a;
|
|
166
|
+
const items = this.getInputData();
|
|
167
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
168
|
+
try {
|
|
169
|
+
const username = this.getNodeParameter('username', itemIndex).trim();
|
|
170
|
+
if (!username) {
|
|
171
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), '请填写用户名');
|
|
172
|
+
}
|
|
173
|
+
const forceFlag = this.getNodeParameter('force', itemIndex, false);
|
|
174
|
+
const force = forceFlag ? 'true' : 'false';
|
|
175
|
+
const outputFormat = this.getNodeParameter('outputFormat', itemIndex, 'chinese');
|
|
176
|
+
const creds = await this.getCredentials('authGatewayApi');
|
|
177
|
+
const baseRaw = String((_a = creds.baseUrl) !== null && _a !== void 0 ? _a : '').trim();
|
|
178
|
+
const baseUrl = baseRaw.replace(/\/$/, '');
|
|
179
|
+
if (!baseUrl) {
|
|
180
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), '请在凭证中填写 Base URL');
|
|
181
|
+
}
|
|
182
|
+
const requestOptions = {
|
|
183
|
+
method: 'GET',
|
|
184
|
+
url: `${baseUrl}/api/auth/user_info`,
|
|
185
|
+
qs: {
|
|
186
|
+
username,
|
|
187
|
+
force,
|
|
188
|
+
},
|
|
189
|
+
json: true,
|
|
190
|
+
};
|
|
191
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'authGatewayApi', requestOptions);
|
|
192
|
+
assignOutput(items[itemIndex], response, outputFormat);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (this.continueOnFail()) {
|
|
196
|
+
items.push({ json: this.getInputData(itemIndex)[0].json, error, pairedItem: itemIndex });
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (error instanceof Error && 'context' in error && error.context) {
|
|
200
|
+
error.context.itemIndex = itemIndex;
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex });
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return [items];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.RequestTikTokData = RequestTikTokData;
|
|
210
|
+
//# sourceMappingURL=RequestTikTokData.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestTikTokData.node.js","sourceRoot":"","sources":["../../../nodes/RequestTikTokData/RequestTikTokData.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-tiktok-request",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TikTok 网关 GET /api/auth/user_info:节点仅填 username,鉴权在凭证中配置",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"n8n-community-node-package"
|
|
8
|
+
],
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "n8n Community",
|
|
11
|
+
"email": "community@example.local"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "n8n-node build",
|
|
15
|
+
"build:watch": "tsc --watch",
|
|
16
|
+
"dev": "node scripts/dev-with-local-n8n.cjs",
|
|
17
|
+
"dev:npx": "n8n-node dev",
|
|
18
|
+
"lint": "n8n-node lint",
|
|
19
|
+
"lint:fix": "n8n-node lint --fix"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"n8n": {
|
|
25
|
+
"n8nNodesApiVersion": 1,
|
|
26
|
+
"strict": true,
|
|
27
|
+
"credentials": ["dist/credentials/AuthGatewayApi.credentials.js"],
|
|
28
|
+
"nodes": [
|
|
29
|
+
"dist/nodes/RequestTikTokData/RequestTikTokData.node.js"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@n8n/node-cli": "*",
|
|
34
|
+
"eslint": "9.39.4",
|
|
35
|
+
"n8n": "^2.16.1",
|
|
36
|
+
"n8n-workflow": "*",
|
|
37
|
+
"prettier": "3.8.1",
|
|
38
|
+
"typescript": "5.9.3"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"n8n-workflow": "*"
|
|
42
|
+
}
|
|
43
|
+
}
|