@seranking/n8n-nodes-seranking 1.3.8 → 1.3.9
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
CHANGED
|
@@ -574,7 +574,7 @@ For detailed API specifications, visit [SE Ranking API Documentation](https://se
|
|
|
574
574
|
- ✅ **NEW: Get Domain Pages** - Page-level keyword and traffic analysis with intent breakdown
|
|
575
575
|
- ✅ **NEW: Get Domain Subdomains** - Subdomain traffic and keyword metrics
|
|
576
576
|
- ✅ **Total: 62 operations across 6 resources**
|
|
577
|
-
- ✅ Advanced filtering for pages/subdomains (traffic %, keywords count, traffic sum)
|
|
577
|
+
- ✅ Advanced filtering for pages/subdomains (traffic %, keywords count, traffic sum,)
|
|
578
578
|
- ✅ Search intent breakdown (Informational, Navigational, Transactional, Commercial, Local)
|
|
579
579
|
|
|
580
580
|
### v1.3.0
|
|
@@ -659,7 +659,7 @@ For detailed API specifications, visit [SE Ranking API Documentation](https://se
|
|
|
659
659
|
|
|
660
660
|
✅ **SERP Tracking** - Keyword ranking and SERP features analysis
|
|
661
661
|
|
|
662
|
-
✅ **Advanced Filtering** - Volume, position, CPC, difficulty, traffic, search intent, SERP features, keyword word count, and include/exclude keyword pattern filters
|
|
662
|
+
✅ **Advanced Filtering** - Volume, position, CPC, difficulty, traffic, search intent, SERP features, keyword word count, and include/exclude keyword pattern filters, and the new SERP Feature Link filter (filter[serp_features_2]) — which lets you filter keywords where your domain is specifically linked within a SERP feature (e.g. AI Overviews, Reviews), distinct from the existing serpFeatures filter which only checks for feature presence on the SERP.
|
|
663
663
|
|
|
664
664
|
---
|
|
665
665
|
|
|
@@ -943,6 +943,41 @@ exports.domainAnalysisFields = [
|
|
|
943
943
|
default: [],
|
|
944
944
|
description: 'Filter keywords by search intent',
|
|
945
945
|
},
|
|
946
|
+
{
|
|
947
|
+
displayName: 'Include Keywords Containing',
|
|
948
|
+
name: 'multiKeywordIncluded',
|
|
949
|
+
type: 'string',
|
|
950
|
+
default: '',
|
|
951
|
+
placeholder: 'best, top, review',
|
|
952
|
+
description: 'Comma-separated words that must appear in results',
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
displayName: 'Exclude Keywords Containing',
|
|
956
|
+
name: 'multiKeywordExcluded',
|
|
957
|
+
type: 'string',
|
|
958
|
+
default: '',
|
|
959
|
+
placeholder: 'free, cheap',
|
|
960
|
+
description: 'Comma-separated words that must NOT appear in results',
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
displayName: 'SERP Feature Link Mode',
|
|
964
|
+
name: 'serpFeatures2Mode',
|
|
965
|
+
type: 'options',
|
|
966
|
+
options: [
|
|
967
|
+
{ name: 'With Link', value: 'with_link' },
|
|
968
|
+
{ name: 'Without Link', value: 'without_link' },
|
|
969
|
+
],
|
|
970
|
+
default: 'with_link',
|
|
971
|
+
description: 'Filter by whether the analyzed domain is linked inside a SERP feature. Must be used together with SERP Feature Link Value.',
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
displayName: 'SERP Feature Link Value',
|
|
975
|
+
name: 'serpFeatures2Value',
|
|
976
|
+
type: 'string',
|
|
977
|
+
default: '',
|
|
978
|
+
placeholder: 'sge,reviews',
|
|
979
|
+
description: 'Comma-separated SERP feature codes to check domain linkage for. Must be used together with SERP Feature Link Mode.',
|
|
980
|
+
},
|
|
946
981
|
],
|
|
947
982
|
},
|
|
948
983
|
{
|
|
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DomainAnalysisOperations = DomainAnalysisOperations;
|
|
4
4
|
const apiRequest_1 = require("../../utils/apiRequest");
|
|
5
5
|
const validators_1 = require("../../utils/validators");
|
|
6
|
+
function buildMultiKeywordFilter(csv) {
|
|
7
|
+
return csv
|
|
8
|
+
.split(',')
|
|
9
|
+
.map((w) => w.trim())
|
|
10
|
+
.filter(Boolean)
|
|
11
|
+
.map((word) => [{ type: 'contains', value: word }]);
|
|
12
|
+
}
|
|
6
13
|
async function DomainAnalysisOperations(index) {
|
|
7
14
|
const operation = this.getNodeParameter('operation', index);
|
|
8
15
|
let endpoint = '';
|
|
@@ -238,6 +245,22 @@ async function DomainAnalysisOperations(index) {
|
|
|
238
245
|
if (additionalFields.intents && additionalFields.intents.length > 0) {
|
|
239
246
|
params['filter[intents]'] = additionalFields.intents.join(',');
|
|
240
247
|
}
|
|
248
|
+
if (additionalFields.multiKeywordIncluded) {
|
|
249
|
+
params['filter[multi_keyword_included]'] = JSON.stringify(buildMultiKeywordFilter(additionalFields.multiKeywordIncluded));
|
|
250
|
+
}
|
|
251
|
+
if (additionalFields.multiKeywordExcluded) {
|
|
252
|
+
params['filter[multi_keyword_excluded]'] = JSON.stringify(buildMultiKeywordFilter(additionalFields.multiKeywordExcluded));
|
|
253
|
+
}
|
|
254
|
+
if (additionalFields.serpFeatures2Mode && additionalFields.serpFeatures2Value) {
|
|
255
|
+
params['filter[serp_features_2][mode]'] = additionalFields.serpFeatures2Mode;
|
|
256
|
+
additionalFields.serpFeatures2Value
|
|
257
|
+
.split(',')
|
|
258
|
+
.map((v) => v.trim())
|
|
259
|
+
.filter(Boolean)
|
|
260
|
+
.forEach((val, i) => {
|
|
261
|
+
params[`filter[serp_features_2][value][${i}]`] = val;
|
|
262
|
+
});
|
|
263
|
+
}
|
|
241
264
|
break;
|
|
242
265
|
}
|
|
243
266
|
case 'getKeywordsComparison': {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seranking/n8n-nodes-seranking",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.9",
|
|
4
4
|
"description": "n8n connector for SE Ranking API - AI Search, Backlinks, Domain Analysis, Keyword Research, and Website Audit",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/seranking/n8n-nodes-seranking",
|