@social-data/social-neuron-subscription 1.0.10 → 1.0.11
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/manifest.json +185 -12
- package/package.json +1 -1
- package/skills/social-neuron-subscription/SKILL.md +115 -8
package/manifest.json
CHANGED
|
@@ -271,6 +271,32 @@
|
|
|
271
271
|
],
|
|
272
272
|
"title": "SftpTarget",
|
|
273
273
|
"type": "object"
|
|
274
|
+
},
|
|
275
|
+
"TopSpec": {
|
|
276
|
+
"additionalProperties": false,
|
|
277
|
+
"description": "全局TopN排序规格(subscription专用)。",
|
|
278
|
+
"properties": {
|
|
279
|
+
"field": {
|
|
280
|
+
"description": "排序字段(name_en);仅支持可排序类型(keyword/long/double/date)",
|
|
281
|
+
"title": "Field",
|
|
282
|
+
"type": "string"
|
|
283
|
+
},
|
|
284
|
+
"order": {
|
|
285
|
+
"default": "desc",
|
|
286
|
+
"description": "排序方向:desc降序(取最大的N个)/asc升序(取最小的N个)",
|
|
287
|
+
"enum": [
|
|
288
|
+
"asc",
|
|
289
|
+
"desc"
|
|
290
|
+
],
|
|
291
|
+
"title": "Order",
|
|
292
|
+
"type": "string"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"required": [
|
|
296
|
+
"field"
|
|
297
|
+
],
|
|
298
|
+
"title": "TopSpec",
|
|
299
|
+
"type": "object"
|
|
274
300
|
}
|
|
275
301
|
},
|
|
276
302
|
"additionalProperties": false,
|
|
@@ -353,12 +379,19 @@
|
|
|
353
379
|
"type": "array"
|
|
354
380
|
},
|
|
355
381
|
"size": {
|
|
356
|
-
"
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
382
|
+
"anyOf": [
|
|
383
|
+
{
|
|
384
|
+
"maximum": 500000,
|
|
385
|
+
"minimum": 1,
|
|
386
|
+
"type": "integer"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"type": "null"
|
|
390
|
+
}
|
|
391
|
+
],
|
|
392
|
+
"default": null,
|
|
393
|
+
"description": "每次执行最多导出的记录行数。省略则按模式取默认:取全部命中 500,000(同时是上限);传了 top(只取前 N 条)则默认 1,000、上限 10,000",
|
|
394
|
+
"title": "Size"
|
|
362
395
|
},
|
|
363
396
|
"target": {
|
|
364
397
|
"anyOf": [
|
|
@@ -390,6 +423,22 @@
|
|
|
390
423
|
"default": null,
|
|
391
424
|
"description": "投递目标;省略默认 octo(json)。本期支持 octo(上传存储→CDN url)与 sftp(账密上传远端,路径/文件名可用日期变量);kafka: 暂未实现。",
|
|
392
425
|
"title": "Target"
|
|
426
|
+
},
|
|
427
|
+
"top": {
|
|
428
|
+
"anyOf": [
|
|
429
|
+
{
|
|
430
|
+
"items": {
|
|
431
|
+
"$ref": "#/$defs/TopSpec"
|
|
432
|
+
},
|
|
433
|
+
"type": "array"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"type": "null"
|
|
437
|
+
}
|
|
438
|
+
],
|
|
439
|
+
"default": null,
|
|
440
|
+
"description": "只取前 N 条(可选)。**不改变筛选条件** —— 省略时给命中条件的全部数据,传了则在同一批命中结果里按指定字段排序、只取前 size 条。排序跨发布窗内所有日期 / 站点 / 规则**全局生效**(不是每天各取 N)。多字段按顺序作排序优先级(前者相同时比后者)。字段必须是可排序类型(keyword / long / double / date)。该模式下 size 默认 1,000、最大 10,000;且多条规则改为 OR 合并并去重,导出的 kw_ruleId 恒为 topN、无法区分来源规则",
|
|
441
|
+
"title": "Top"
|
|
393
442
|
}
|
|
394
443
|
},
|
|
395
444
|
"required": [
|
|
@@ -470,10 +519,27 @@
|
|
|
470
519
|
"type": "array"
|
|
471
520
|
},
|
|
472
521
|
"size": {
|
|
473
|
-
"description": "
|
|
522
|
+
"description": "每次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000",
|
|
474
523
|
"title": "Size",
|
|
475
524
|
"type": "integer"
|
|
476
525
|
},
|
|
526
|
+
"top": {
|
|
527
|
+
"anyOf": [
|
|
528
|
+
{
|
|
529
|
+
"items": {
|
|
530
|
+
"additionalProperties": true,
|
|
531
|
+
"type": "object"
|
|
532
|
+
},
|
|
533
|
+
"type": "array"
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"type": "null"
|
|
537
|
+
}
|
|
538
|
+
],
|
|
539
|
+
"default": null,
|
|
540
|
+
"description": "只取前 N 条的排序定义 [{field, order}];null = 给命中条件的全部数据。非 null 时每次执行只取按该排序排在前 size 条的数据",
|
|
541
|
+
"title": "Top"
|
|
542
|
+
},
|
|
477
543
|
"frequency": {
|
|
478
544
|
"description": "自然语言频率",
|
|
479
545
|
"title": "Frequency",
|
|
@@ -594,7 +660,7 @@
|
|
|
594
660
|
"field": "size",
|
|
595
661
|
"type": "integer",
|
|
596
662
|
"required": false,
|
|
597
|
-
"desc": "
|
|
663
|
+
"desc": "每次执行最多导出的记录行数。省略则按模式取默认:取全部命中 500,000(同时是上限);传了 top(只取前 N 条)则默认 1,000、上限 10,000"
|
|
598
664
|
},
|
|
599
665
|
{
|
|
600
666
|
"flag": "--target",
|
|
@@ -602,6 +668,13 @@
|
|
|
602
668
|
"type": "object(json)",
|
|
603
669
|
"required": false,
|
|
604
670
|
"desc": "投递目标;省略默认 octo(json)。本期支持 octo(上传存储→CDN url)与 sftp(账密上传远端,路径/文件名可用日期变量);kafka: 暂未实现。"
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"flag": "--top",
|
|
674
|
+
"field": "top",
|
|
675
|
+
"type": "list[object](json)",
|
|
676
|
+
"required": false,
|
|
677
|
+
"desc": "只取前 N 条(可选)。**不改变筛选条件** —— 省略时给命中条件的全部数据,传了则在同一批命中结果里按指定字段排序、只取前 size 条。排序跨发布窗内所有日期 / 站点 / 规则**全局生效**(不是每天各取 N)。多字段按顺序作排序优先级(前者相同时比后者)。字段必须是可排序类型(keyword / long / double / date)。该模式下 size 默认 1,000、最大 10,000;且多条规则改为 OR 合并并去重,导出的 kw_ruleId 恒为 topN、无法区分来源规则"
|
|
605
678
|
}
|
|
606
679
|
],
|
|
607
680
|
"transport": {
|
|
@@ -781,10 +854,27 @@
|
|
|
781
854
|
"type": "array"
|
|
782
855
|
},
|
|
783
856
|
"size": {
|
|
784
|
-
"description": "
|
|
857
|
+
"description": "每次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000",
|
|
785
858
|
"title": "Size",
|
|
786
859
|
"type": "integer"
|
|
787
860
|
},
|
|
861
|
+
"top": {
|
|
862
|
+
"anyOf": [
|
|
863
|
+
{
|
|
864
|
+
"items": {
|
|
865
|
+
"additionalProperties": true,
|
|
866
|
+
"type": "object"
|
|
867
|
+
},
|
|
868
|
+
"type": "array"
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
"type": "null"
|
|
872
|
+
}
|
|
873
|
+
],
|
|
874
|
+
"default": null,
|
|
875
|
+
"description": "只取前 N 条的排序定义 [{field, order}];null = 给命中条件的全部数据。非 null 时每次执行只取按该排序排在前 size 条的数据",
|
|
876
|
+
"title": "Top"
|
|
877
|
+
},
|
|
788
878
|
"frequency": {
|
|
789
879
|
"description": "自然语言频率",
|
|
790
880
|
"title": "Frequency",
|
|
@@ -1430,6 +1520,32 @@
|
|
|
1430
1520
|
],
|
|
1431
1521
|
"title": "SftpTarget",
|
|
1432
1522
|
"type": "object"
|
|
1523
|
+
},
|
|
1524
|
+
"TopSpec": {
|
|
1525
|
+
"additionalProperties": false,
|
|
1526
|
+
"description": "全局TopN排序规格(subscription专用)。",
|
|
1527
|
+
"properties": {
|
|
1528
|
+
"field": {
|
|
1529
|
+
"description": "排序字段(name_en);仅支持可排序类型(keyword/long/double/date)",
|
|
1530
|
+
"title": "Field",
|
|
1531
|
+
"type": "string"
|
|
1532
|
+
},
|
|
1533
|
+
"order": {
|
|
1534
|
+
"default": "desc",
|
|
1535
|
+
"description": "排序方向:desc降序(取最大的N个)/asc升序(取最小的N个)",
|
|
1536
|
+
"enum": [
|
|
1537
|
+
"asc",
|
|
1538
|
+
"desc"
|
|
1539
|
+
],
|
|
1540
|
+
"title": "Order",
|
|
1541
|
+
"type": "string"
|
|
1542
|
+
}
|
|
1543
|
+
},
|
|
1544
|
+
"required": [
|
|
1545
|
+
"field"
|
|
1546
|
+
],
|
|
1547
|
+
"title": "TopSpec",
|
|
1548
|
+
"type": "object"
|
|
1433
1549
|
}
|
|
1434
1550
|
},
|
|
1435
1551
|
"additionalProperties": false,
|
|
@@ -1610,6 +1726,22 @@
|
|
|
1610
1726
|
"description": "整体替换投递目标",
|
|
1611
1727
|
"title": "Target"
|
|
1612
1728
|
},
|
|
1729
|
+
"top": {
|
|
1730
|
+
"anyOf": [
|
|
1731
|
+
{
|
|
1732
|
+
"items": {
|
|
1733
|
+
"$ref": "#/$defs/TopSpec"
|
|
1734
|
+
},
|
|
1735
|
+
"type": "array"
|
|
1736
|
+
},
|
|
1737
|
+
{
|
|
1738
|
+
"type": "null"
|
|
1739
|
+
}
|
|
1740
|
+
],
|
|
1741
|
+
"default": null,
|
|
1742
|
+
"description": "只取前 N 条的排序规格:传入则整组替换,不传则不修改。切到该模式后 size 最大 10,000;传空数组 [] 表示改回「给全部命中数据」",
|
|
1743
|
+
"title": "Top"
|
|
1744
|
+
},
|
|
1613
1745
|
"active": {
|
|
1614
1746
|
"anyOf": [
|
|
1615
1747
|
{
|
|
@@ -1702,10 +1834,27 @@
|
|
|
1702
1834
|
"type": "array"
|
|
1703
1835
|
},
|
|
1704
1836
|
"size": {
|
|
1705
|
-
"description": "
|
|
1837
|
+
"description": "每次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000",
|
|
1706
1838
|
"title": "Size",
|
|
1707
1839
|
"type": "integer"
|
|
1708
1840
|
},
|
|
1841
|
+
"top": {
|
|
1842
|
+
"anyOf": [
|
|
1843
|
+
{
|
|
1844
|
+
"items": {
|
|
1845
|
+
"additionalProperties": true,
|
|
1846
|
+
"type": "object"
|
|
1847
|
+
},
|
|
1848
|
+
"type": "array"
|
|
1849
|
+
},
|
|
1850
|
+
{
|
|
1851
|
+
"type": "null"
|
|
1852
|
+
}
|
|
1853
|
+
],
|
|
1854
|
+
"default": null,
|
|
1855
|
+
"description": "只取前 N 条的排序定义 [{field, order}];null = 给命中条件的全部数据。非 null 时每次执行只取按该排序排在前 size 条的数据",
|
|
1856
|
+
"title": "Top"
|
|
1857
|
+
},
|
|
1709
1858
|
"frequency": {
|
|
1710
1859
|
"description": "自然语言频率",
|
|
1711
1860
|
"title": "Frequency",
|
|
@@ -1842,6 +1991,13 @@
|
|
|
1842
1991
|
"required": false,
|
|
1843
1992
|
"desc": "整体替换投递目标"
|
|
1844
1993
|
},
|
|
1994
|
+
{
|
|
1995
|
+
"flag": "--top",
|
|
1996
|
+
"field": "top",
|
|
1997
|
+
"type": "list[object](json)",
|
|
1998
|
+
"required": false,
|
|
1999
|
+
"desc": "只取前 N 条的排序规格:传入则整组替换,不传则不修改。切到该模式后 size 最大 10,000;传空数组 [] 表示改回「给全部命中数据」"
|
|
2000
|
+
},
|
|
1845
2001
|
{
|
|
1846
2002
|
"flag": "--active",
|
|
1847
2003
|
"field": "active",
|
|
@@ -2176,10 +2332,27 @@
|
|
|
2176
2332
|
"type": "integer"
|
|
2177
2333
|
},
|
|
2178
2334
|
"size": {
|
|
2179
|
-
"description": "
|
|
2335
|
+
"description": "本次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000",
|
|
2180
2336
|
"title": "Size",
|
|
2181
2337
|
"type": "integer"
|
|
2182
2338
|
},
|
|
2339
|
+
"top": {
|
|
2340
|
+
"anyOf": [
|
|
2341
|
+
{
|
|
2342
|
+
"items": {
|
|
2343
|
+
"additionalProperties": true,
|
|
2344
|
+
"type": "object"
|
|
2345
|
+
},
|
|
2346
|
+
"type": "array"
|
|
2347
|
+
},
|
|
2348
|
+
{
|
|
2349
|
+
"type": "null"
|
|
2350
|
+
}
|
|
2351
|
+
],
|
|
2352
|
+
"default": null,
|
|
2353
|
+
"description": "本次生效的排序快照 [{field, order}];null = 取了命中条件的全部数据。非 null 时本次只取按该排序排在前 size 条的数据",
|
|
2354
|
+
"title": "Top"
|
|
2355
|
+
},
|
|
2183
2356
|
"status": {
|
|
2184
2357
|
"description": "pending/running/success/failed/terminated",
|
|
2185
2358
|
"title": "Status",
|
|
@@ -2332,7 +2505,7 @@
|
|
|
2332
2505
|
],
|
|
2333
2506
|
"skill": {
|
|
2334
2507
|
"slug": "social-neuron-subscription",
|
|
2335
|
-
"description": "使用场景:定时导出/订阅推送/定期拉数/大批量出文件——需异步产出文件并下载时用能力:按魔方规则、定时 cron 或手动触发,把大库数据异步导出为文件,上传 octo/sftp,产出下载 url 供调用方轮询拉取;可创建/修改/列出/删除/触发订阅 job、翻页查询 task;另有三个只读发现接口:list_sites / list_fields 用于建 job 前对齐站点与字段取值;get_field_values 给出枚举值 / 编码值的中文字典,仅在用户明确要求把导出的码值换成中文时按需取用(换值由调用方拿到数据后自行完成,系统不自动回显)。概念:job=订阅定义(数据范围+频率+投递方式,系统按频率生成 cron);task=job 的一次执行,产物与下载地址落在 file_info。边界:①每 token 生效 job 默认≤10
|
|
2508
|
+
"description": "使用场景:定时导出/订阅推送/定期拉数/大批量出文件——需异步产出文件并下载时用能力:按魔方规则、定时 cron 或手动触发,把大库数据异步导出为文件,上传 octo/sftp,产出下载 url 供调用方轮询拉取;可创建/修改/列出/删除/触发订阅 job、翻页查询 task;另有三个只读发现接口:list_sites / list_fields 用于建 job 前对齐站点与字段取值;get_field_values 给出枚举值 / 编码值的中文字典,仅在用户明确要求把导出的码值换成中文时按需取用(换值由调用方拿到数据后自行完成,系统不自动回显)。概念:job=订阅定义(数据范围+频率+投递方式,系统按频率生成 cron);task=job 的一次执行,产物与下载地址落在 file_info。边界:①每 token 生效 job 默认≤10;②两种取数模式二选一:**默认**给命中条件的全部数据、size 默认且最大 50 万、多规则各自拉(同时命中多条规则的数据会重复出现);传 **top** 则不改筛选条件、只在同一批命中里按指定字段跨全部日期/站点/规则排序后取前 N 条、size 默认 1000 最大 10000、多规则 OR 合并(同时命中多条的只出一份),排序字段只能是 keyword/long/double/date 类型;这与平台自身的热搜/热门榜单无关;③导出数据的 kw_ruleId 字段**恒为数组**(列出本行命中的 rule_id;此前是字符串,按老格式解析的下游需改);④投递仅 octo/sftp(kafka 规划中,暂不支持),无主动通知、须轮询 task 取结果。⑤如果拉取不到数据则不会产生文件上传,也就没有文件url信息",
|
|
2336
2509
|
"actions": [
|
|
2337
2510
|
"get-field-values",
|
|
2338
2511
|
"job-create",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@social-data/social-neuron-subscription",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "Social Neuron subscription 能力 CLI —— 一能力一命令(social-neuron-subscription),薄客户端直达 /subscription/{op}。",
|
|
5
5
|
"bin": {
|
|
6
6
|
"social-neuron-subscription": "bin/cli.js"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: social-neuron-subscription
|
|
3
|
-
description: "使用场景:定时导出/订阅推送/定期拉数/大批量出文件——需异步产出文件并下载时用能力:按魔方规则、定时 cron 或手动触发,把大库数据异步导出为文件,上传 octo/sftp,产出下载 url 供调用方轮询拉取;可创建/修改/列出/删除/触发订阅 job、翻页查询 task;另有三个只读发现接口:list_sites / list_fields 用于建 job 前对齐站点与字段取值;get_field_values 给出枚举值 / 编码值的中文字典,仅在用户明确要求把导出的码值换成中文时按需取用(换值由调用方拿到数据后自行完成,系统不自动回显)。概念:job=订阅定义(数据范围+频率+投递方式,系统按频率生成 cron);task=job 的一次执行,产物与下载地址落在 file_info。边界:①每 token 生效 job 默认≤10
|
|
3
|
+
description: "使用场景:定时导出/订阅推送/定期拉数/大批量出文件——需异步产出文件并下载时用能力:按魔方规则、定时 cron 或手动触发,把大库数据异步导出为文件,上传 octo/sftp,产出下载 url 供调用方轮询拉取;可创建/修改/列出/删除/触发订阅 job、翻页查询 task;另有三个只读发现接口:list_sites / list_fields 用于建 job 前对齐站点与字段取值;get_field_values 给出枚举值 / 编码值的中文字典,仅在用户明确要求把导出的码值换成中文时按需取用(换值由调用方拿到数据后自行完成,系统不自动回显)。概念:job=订阅定义(数据范围+频率+投递方式,系统按频率生成 cron);task=job 的一次执行,产物与下载地址落在 file_info。边界:①每 token 生效 job 默认≤10;②两种取数模式二选一:**默认**给命中条件的全部数据、size 默认且最大 50 万、多规则各自拉(同时命中多条规则的数据会重复出现);传 **top** 则不改筛选条件、只在同一批命中里按指定字段跨全部日期/站点/规则排序后取前 N 条、size 默认 1000 最大 10000、多规则 OR 合并(同时命中多条的只出一份),排序字段只能是 keyword/long/double/date 类型;这与平台自身的热搜/热门榜单无关;③导出数据的 kw_ruleId 字段**恒为数组**(列出本行命中的 rule_id;此前是字符串,按老格式解析的下游需改);④投递仅 octo/sftp(kafka 规划中,暂不支持),无主动通知、须轮询 task 取结果。⑤如果拉取不到数据则不会产生文件上传,也就没有文件url信息"
|
|
4
4
|
metadata:
|
|
5
5
|
openclaw:
|
|
6
6
|
requires: { bins: ['social-neuron-subscription'], skills: [] }
|
|
@@ -47,6 +47,10 @@ job-trigger → 立刻跑一次(不等 cron);返回 task_id
|
|
|
47
47
|
task-list → 轮询该 task,status 变终态后读 file_info 里的下载 url
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
建 job 时先想清楚:同样的筛选条件,要**全部命中的数据**,还是**只要排在前面的若干条**。
|
|
51
|
+
默认是全部;用户明确限定了条数(「只要 1000 条」「按点赞取前 500」「挑互动最多的那批」)
|
|
52
|
+
才加 `--top`(见七,两种模式的 size 上限与多规则语义都不同)。
|
|
53
|
+
|
|
50
54
|
到这里订阅就做完了。**码值换中文不在这条流程里** —— 只有用户明确要求时才做,见六。
|
|
51
55
|
|
|
52
56
|
改配置用 `job-update`(只传要改的字段);不想再跑就 `job-update --active false`,
|
|
@@ -112,13 +116,84 @@ social-neuron-subscription get-field-values --field kw_tag_brand --keyword 兰
|
|
|
112
116
|
> 以上示例值实查自元数据(2026-10-12);字典由元数据侧维护、会变 —— **以 `get-field-values`
|
|
113
117
|
> 现查为准**,不要把这里的示例当权威映射。
|
|
114
118
|
|
|
115
|
-
###
|
|
119
|
+
### 七、两种取数模式:全部命中 vs 取前 N 条
|
|
120
|
+
|
|
121
|
+
**默认取全部命中的数据**(不传 `--top`)。`--top` **不改变筛选条件**,只是在同一批命中结果里
|
|
122
|
+
按某字段排序、只取前 N 条 —— 用户明确限定了条数时才用。
|
|
123
|
+
|
|
124
|
+
> 这不是"榜单数据" —— 跟平台自己的热搜榜/热门榜没有关系,数据源与筛选条件完全不变,
|
|
125
|
+
> 变的只是"给你全部"还是"给你排在前面的那几条"。
|
|
126
|
+
|
|
127
|
+
| | 默认(不传 `--top`) | 传 `--top` |
|
|
128
|
+
|---|---|---|
|
|
129
|
+
| 给什么 | 命中条件的**全部**数据 | 同一批命中里,排序后的**前 N 条** |
|
|
130
|
+
| `--size` | 默认/最大 **50 万**,到顶截断 | 默认 **1000**、最大 **10000** |
|
|
131
|
+
| 多条规则 | **各规则分别拉、结果拼接** | **OR 合并:命中任一规则即可** |
|
|
132
|
+
| 同时命中多条规则的数据 | **出现多次**(每条规则各一份) | **只出现一次** |
|
|
133
|
+
| 导出的 `kw_ruleId` | `["r1"]`(该份属哪条规则) | `["r1","r2"]`(命中的全部规则) |
|
|
134
|
+
| 取不满 size | 正常,有多少给多少 | 正常,说明命中数本来就少 |
|
|
135
|
+
|
|
136
|
+
排序**全局有效**:跨发布窗内所有日期、所有站点、所有规则排完再取前 N —— 不是每天各取 N,
|
|
137
|
+
也不是每个站点各取 N。
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# 近 7 天抖音命中该规则的数据里,按点赞数取最高的 1000 条
|
|
141
|
+
social-neuron-subscription job-create --name 抖音高互动采样 --rule-ids '["12345"]' --source '["抖音"]' --published 'T-7~T-1' --top '[{"field":"long_likeCount","order":"desc"}]' --size 1000 --frequency '每天早上8点' -y
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`--top` 是 JSON 数组,多个字段按顺序作排序优先级(前者相同时比后者):
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
--top '[{"field":"long_likeCount","order":"desc"},{"field":"date_publishedAt","order":"desc"}]'
|
|
148
|
+
# 先按点赞降序;点赞一样多的,新的排前面
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**排序字段有类型限制** —— 只能用 `list-fields` 里 `data_type` 为
|
|
152
|
+
`keyword` / `long` / `double` / `date` 的字段。`text`(正文这类分词字段)、`boolean`、
|
|
153
|
+
`object`、`nested` 建 job 时直接拒。`order` 省略默认 `desc`。
|
|
154
|
+
|
|
155
|
+
**字段名必须现查**(`list-fields --source '[...]' --keyword 赞`)—— 各站点字段不同,
|
|
156
|
+
上面示例里的 `long_likeCount` 是小红书实查到的点赞数字段,别凭印象写 `kw_likeCount`
|
|
157
|
+
这类名字,那会在建 job 时报"字段不存在"。
|
|
158
|
+
|
|
159
|
+
**导出文件按排序顺序输出**:第一行即第 1 名。
|
|
160
|
+
|
|
161
|
+
想改回取全部:`job-update --top '[]'`。
|
|
162
|
+
|
|
163
|
+
**为什么取前 N 条的 size 反而小这么多**:它要让搜索引擎在全部索引上做一次全局排序,
|
|
164
|
+
深度排序的开销随 N 线性涨,默认那个 50 万放上去会拖垮集群。真要大批量高互动数据,
|
|
165
|
+
用默认模式 + 在魔方规则里加互动量阈值过滤,比用 `--top` 取 50 万健康得多。
|
|
166
|
+
|
|
167
|
+
### 八、导出文件里的 `kw_ruleId`(⚠️ 契约已变更)
|
|
168
|
+
|
|
169
|
+
导出的每条数据除了业务字段,还带一个 `kw_ruleId`,标明这条数据是被**哪条魔方规则**命中的。
|
|
170
|
+
|
|
171
|
+
> ⚠️ **它现在恒为数组**。此前是字符串(`"12345"`),现已统一成数组(`["12345"]`) ——
|
|
172
|
+
> 两种取数模式同形。按老格式解析的下游(直接当字符串比较 / 拼接 / 分组)**必须改**,
|
|
173
|
+
> 否则会拿到 `['12345']` 这样的字面量或整串 JSON。
|
|
174
|
+
|
|
175
|
+
```jsonc
|
|
176
|
+
// 默认模式:一片一规则,所以恒为单元素
|
|
177
|
+
{"_id": "abc", "kw_ruleId": ["12345"], "_source": {...}}
|
|
178
|
+
|
|
179
|
+
// 传了 --top:OR 合并,同时命中多条规则的数据只出一份,但把命中的都记下
|
|
180
|
+
{"_id": "abc", "kw_ruleId": ["12345", "67890"], "_source": {...}}
|
|
181
|
+
{"_id": "def", "kw_ruleId": ["67890"], "_source": {...}}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
json 格式下就是 JSON 数组;csv / excel 下这一列落成紧凑 JSON 字符串(如 `["12345"]`),
|
|
185
|
+
按需自行解析。
|
|
186
|
+
|
|
187
|
+
### 九、容易踩的
|
|
116
188
|
|
|
117
189
|
- **拉不到数据就不会有文件**,`file_info` 里也就没有 url —— 这不是失败,是没命中。
|
|
118
|
-
- 单次导出 `--size`
|
|
190
|
+
- 单次导出 `--size`:默认模式下默认且最大 **50 万行**;传了 `--top` 则默认 **1000**、最大 **10000**,超出报错。
|
|
119
191
|
- 每个 token 生效的 job 默认 **≤10 个**,满了要先 `job-delete` 或停用。
|
|
120
192
|
- `--source` 只能填**已配置站点的中文名**(用 `list-sites` 查);写 `douyin.com` 这类域名会被拒。
|
|
121
193
|
- 投递目标本期只支持 **octo / sftp**(kafka 规划中);省略 `--target` 默认 octo。
|
|
194
|
+
- 传了 `--top` 时同时命中多条规则的数据只出现一份(`kw_ruleId` 里列出全部命中的规则);
|
|
195
|
+
不传时每条规则各出一份。按规则分组统计前先想清楚要哪种。
|
|
196
|
+
- `kw_ruleId` **恒为数组**(契约已变更,见八),别再当字符串用。
|
|
122
197
|
|
|
123
198
|
## 示例
|
|
124
199
|
|
|
@@ -167,6 +242,18 @@ social-neuron-subscription get-field-values --field kw_tag_brand --keyword 兰
|
|
|
167
242
|
|
|
168
243
|
> 仅在用户要求时做,且由你在拿到数据后自己换 —— 系统不自动回显。is_enum / is_code 为真也不等于要换:先看字典,code 与 value 相同(如情感标签)就无需转换。
|
|
169
244
|
|
|
245
|
+
### 只要符合条件的前 N 条(按指定字段排序)
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# 传了 --top 就从「给全部命中数据」改成「只给排序后的前 N 条」,筛选条件不变
|
|
249
|
+
social-neuron-subscription job-create --name 抖音高互动采样 \
|
|
250
|
+
--rule-ids '["12345"]' --source '["抖音"]' --published 'T-7~T-1' \
|
|
251
|
+
--top '[{"field":"long_likeCount","order":"desc"}]' --size 1000 \
|
|
252
|
+
--frequency '每天早上8点' -y
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
> 排序跨发布窗内所有日期/站点/规则全局生效,不是每天各取 1000。排序字段只能是 keyword/long/double/date(用 list-fields 看 data_type);size 最大 10000。多规则在这个模式下是 OR 合并:同时命中多条的数据只出一份,kw_ruleId 里列出命中的全部规则。与平台自己的热搜/热门榜无关,数据源和筛选条件都没变。
|
|
256
|
+
|
|
170
257
|
### 临时停用一个订阅(保留定义)
|
|
171
258
|
|
|
172
259
|
```bash
|
|
@@ -231,8 +318,9 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
231
318
|
| --udate | udate | string | 否 | - | **更新时间**口径(选填,不传=该维度不过滤)。在发布时间窗**之内**再 AND 一层:更新时间落在本区间的数据。支持两种相对时间口径:**按天 T-M~T-N** 与**按分钟 T-M@HH:mm~T-N@HH:mm**。M/N 是相对基准日的天数偏移,HH:mm 使用 24 小时制(00:00–23:59);基准时间取本次触发的 cron 槽位时间(东八区),手动触发取触发时间。**两个端点都必须写全且精度必须一致**:不接受 T-1 单值简写,也不允许T-1@07:00~T-0 这类按天、按分钟混用。所有口径均为左闭右闭区间 [start,end],即起止端点都包含。按天格式包含首尾自然日,查询时起始日补 00:00:00、结束日补 23:59:59。例如:T-0~T-0=今天;T-1~T-1=昨天;T-2~T-1=前天到昨天;T-7~T-1=近7天到昨天。按分钟格式包含首尾分钟,查询时起始分钟补 :00、结束分钟补 :59。例如:T-1@07:00~T-0@06:59=昨天07:00:00至今天06:59:59,完整覆盖昨天7点到今天6点时段;T-0@09:30~T-0@10:45=今天09:30:00至10:45:59。起点不得晚于终点;跨度最多 731 天(两年)、偏移最多 915 天(30个月),超限直接报错(不会静默回落)。 |
|
|
232
319
|
| --frequency | frequency | string | 是 | minLen=1, maxLen=64 | 自然语言同步频率,系统转 cron(东八区)。可指定具体时间、并**支持一天多次**:如「每天9点」「每天9点和15点」(一天跑两次)「每周一9点」「每小时」「每30分钟」。无法解析为 cron 会被拒绝。 |
|
|
233
320
|
| --fields | fields | list[string] | 否 | minLen=1 | 拉取/导出字段;不填拉全量 |
|
|
234
|
-
| --size | size | integer | 否 | min=1, max=500000 |
|
|
321
|
+
| --size | size | integer | 否 | min=1, max=500000 | 每次执行最多导出的记录行数。省略则按模式取默认:取全部命中 500,000(同时是上限);传了 top(只取前 N 条)则默认 1,000、上限 10,000 |
|
|
235
322
|
| --target | target | OctoTarget、SftpTarget、KafkaTarget | 否 | - | 投递目标;省略默认 octo(json)。本期支持 octo(上传存储→CDN url)与 sftp(账密上传远端,路径/文件名可用日期变量);kafka: 暂未实现。 |
|
|
323
|
+
| --top | top | list[TopSpec] | 否 | - | 只取前 N 条(可选)。**不改变筛选条件** —— 省略时给命中条件的全部数据,传了则在同一批命中结果里按指定字段排序、只取前 size 条。排序跨发布窗内所有日期 / 站点 / 规则**全局生效**(不是每天各取 N)。多字段按顺序作排序优先级(前者相同时比后者)。字段必须是可排序类型(keyword / long / double / date)。该模式下 size 默认 1,000、最大 10,000;且多条规则改为 OR 合并并去重,导出的 kw_ruleId 恒为 topN、无法区分来源规则 |
|
|
236
324
|
|
|
237
325
|
**对象 `KafkaTarget`** —— kafka(规划):把记录流投送到 topic(无文件)。
|
|
238
326
|
|
|
@@ -265,6 +353,13 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
265
353
|
| filename_template | string | 否 | - | 自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。 |
|
|
266
354
|
| format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
|
|
267
355
|
|
|
356
|
+
**对象 `TopSpec`** —— 全局TopN排序规格(subscription专用)。
|
|
357
|
+
|
|
358
|
+
| 键 | 类型 | 必填 | 约束 | 说明 |
|
|
359
|
+
|---|---|---|---|---|
|
|
360
|
+
| field | string | 是 | - | 排序字段(name_en);仅支持可排序类型(keyword/long/double/date) |
|
|
361
|
+
| order | enum(asc、desc) | 否 | - | 排序方向:desc降序(取最大的N个)/asc升序(取最小的N个) |
|
|
362
|
+
|
|
268
363
|
**出参 `SubJob`**
|
|
269
364
|
|
|
270
365
|
| 字段 | 类型 | 必填 | 约束 | 说明 |
|
|
@@ -277,7 +372,8 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
277
372
|
| idate | string | 是 | - | 入库时间口径(相对,按天或按分钟);null=该维度不过滤 |
|
|
278
373
|
| udate | string | 是 | - | 更新时间口径(相对,按天或按分钟);null=该维度不过滤 |
|
|
279
374
|
| fields | list[string] | 是 | - | 拉取/导出字段(空=全量) |
|
|
280
|
-
| size | integer | 是 | - |
|
|
375
|
+
| size | integer | 是 | - | 每次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000 |
|
|
376
|
+
| top | list[object] | 否 | - | 只取前 N 条的排序定义 [{field, order}];null = 给命中条件的全部数据。非 null 时每次执行只取按该排序排在前 size 条的数据 |
|
|
281
377
|
| frequency | string | 是 | - | 自然语言频率 |
|
|
282
378
|
| cron | string | 是 | - | 系统由 frequency 转换的 cron |
|
|
283
379
|
| target_type | string | 是 | - | 投递类型:octo、sftp、kafka(暂不支持) |
|
|
@@ -334,7 +430,8 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
334
430
|
| idate | string | 是 | - | 入库时间口径(相对,按天或按分钟);null=该维度不过滤 |
|
|
335
431
|
| udate | string | 是 | - | 更新时间口径(相对,按天或按分钟);null=该维度不过滤 |
|
|
336
432
|
| fields | list[string] | 是 | - | 拉取/导出字段(空=全量) |
|
|
337
|
-
| size | integer | 是 | - |
|
|
433
|
+
| size | integer | 是 | - | 每次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000 |
|
|
434
|
+
| top | list[object] | 否 | - | 只取前 N 条的排序定义 [{field, order}];null = 给命中条件的全部数据。非 null 时每次执行只取按该排序排在前 size 条的数据 |
|
|
338
435
|
| frequency | string | 是 | - | 自然语言频率 |
|
|
339
436
|
| cron | string | 是 | - | 系统由 frequency 转换的 cron |
|
|
340
437
|
| target_type | string | 是 | - | 投递类型:octo、sftp、kafka(暂不支持) |
|
|
@@ -425,6 +522,7 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
425
522
|
| --size | size | integer | 否 | min=1, max=500000 | 每次执行最多导出的记录行数;不传则不修改,最大 500000 |
|
|
426
523
|
| --frequency | frequency | string | 否 | minLen=1, maxLen=64 | 传入则按新频率重算 cron(用法同创建;支持一天多次,如「每天9点和15点」);无法解析为 cron 会被拒绝 |
|
|
427
524
|
| --target | target | OctoTarget、SftpTarget、KafkaTarget | 否 | - | 整体替换投递目标 |
|
|
525
|
+
| --top | top | list[TopSpec] | 否 | - | 只取前 N 条的排序规格:传入则整组替换,不传则不修改。切到该模式后 size 最大 10,000;传空数组 [] 表示改回「给全部命中数据」 |
|
|
428
526
|
| --active | active | enum(0、1) | 否 | - | 启停:1 / 0 |
|
|
429
527
|
|
|
430
528
|
**对象 `KafkaTarget`** —— kafka(规划):把记录流投送到 topic(无文件)。
|
|
@@ -458,6 +556,13 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
458
556
|
| filename_template | string | 否 | - | 自定义文件名模板(不含扩展名)。只允许字母、数字、'_'、'-' 与日期变量,且变量前后必须是 '_' 或首尾:`daily_yyyyMMdd_export`、`yyyyMM_summary` 合法,`dailyyyyyMMdd`、`report-yyyyMMdd-x` 非法。系统统一追加 `_<task_id>` 与扩展名。不传=沿用默认 `<job_id>_<task_id>.<ext>`。 |
|
|
459
557
|
| format | enum(csv、excel、json) | 否 | - | 文件格式:csv/excel/json(默认 json) |
|
|
460
558
|
|
|
559
|
+
**对象 `TopSpec`** —— 全局TopN排序规格(subscription专用)。
|
|
560
|
+
|
|
561
|
+
| 键 | 类型 | 必填 | 约束 | 说明 |
|
|
562
|
+
|---|---|---|---|---|
|
|
563
|
+
| field | string | 是 | - | 排序字段(name_en);仅支持可排序类型(keyword/long/double/date) |
|
|
564
|
+
| order | enum(asc、desc) | 否 | - | 排序方向:desc降序(取最大的N个)/asc升序(取最小的N个) |
|
|
565
|
+
|
|
461
566
|
**出参 `SubJob`**
|
|
462
567
|
|
|
463
568
|
| 字段 | 类型 | 必填 | 约束 | 说明 |
|
|
@@ -470,7 +575,8 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
470
575
|
| idate | string | 是 | - | 入库时间口径(相对,按天或按分钟);null=该维度不过滤 |
|
|
471
576
|
| udate | string | 是 | - | 更新时间口径(相对,按天或按分钟);null=该维度不过滤 |
|
|
472
577
|
| fields | list[string] | 是 | - | 拉取/导出字段(空=全量) |
|
|
473
|
-
| size | integer | 是 | - |
|
|
578
|
+
| size | integer | 是 | - | 每次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000 |
|
|
579
|
+
| top | list[object] | 否 | - | 只取前 N 条的排序定义 [{field, order}];null = 给命中条件的全部数据。非 null 时每次执行只取按该排序排在前 size 条的数据 |
|
|
474
580
|
| frequency | string | 是 | - | 自然语言频率 |
|
|
475
581
|
| cron | string | 是 | - | 系统由 frequency 转换的 cron |
|
|
476
582
|
| target_type | string | 是 | - | 投递类型:octo、sftp、kafka(暂不支持) |
|
|
@@ -560,7 +666,8 @@ social-neuron-subscription job-update --job-id 1001 --active false -y
|
|
|
560
666
|
|---|---|---|---|---|
|
|
561
667
|
| task_id | integer | 是 | - | task ID |
|
|
562
668
|
| job_id | integer | 是 | - | 所属 job |
|
|
563
|
-
| size | integer | 是 | - |
|
|
669
|
+
| size | integer | 是 | - | 本次执行最多导出的记录行数;取全部命中时上限 500000,只取前 N 条时上限 10000 |
|
|
670
|
+
| top | list[object] | 否 | - | 本次生效的排序快照 [{field, order}];null = 取了命中条件的全部数据。非 null 时本次只取按该排序排在前 size 条的数据 |
|
|
564
671
|
| status | string | 是 | - | pending/running/success/failed/terminated |
|
|
565
672
|
| file_info | object | 否 | - | 产物 + 下载入口,含 type 标识:octo→{type,name,format,rows,url};sftp→{...,url,path};kafka→{type,brokers,topic} |
|
|
566
673
|
| error_msg | string | 否 | - | 失败原因(status=failed 时给出;成功/进行中为空) |
|