@serpstat/serpstat-mcp-server 1.0.2

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.
Files changed (72) hide show
  1. package/.env.example +10 -0
  2. package/LICENSE +21 -0
  3. package/README.md +288 -0
  4. package/dist/handlers/backlinks_tools.d.ts +11 -0
  5. package/dist/handlers/backlinks_tools.d.ts.map +1 -0
  6. package/dist/handlers/backlinks_tools.js +59 -0
  7. package/dist/handlers/backlinks_tools.js.map +1 -0
  8. package/dist/handlers/base.d.ts +10 -0
  9. package/dist/handlers/base.d.ts.map +1 -0
  10. package/dist/handlers/base.js +26 -0
  11. package/dist/handlers/base.js.map +1 -0
  12. package/dist/handlers/domain.d.ts +11 -0
  13. package/dist/handlers/domain.d.ts.map +1 -0
  14. package/dist/handlers/domain.js +75 -0
  15. package/dist/handlers/domain.js.map +1 -0
  16. package/dist/handlers/domain_tools.d.ts +51 -0
  17. package/dist/handlers/domain_tools.d.ts.map +1 -0
  18. package/dist/handlers/domain_tools.js +538 -0
  19. package/dist/handlers/domain_tools.js.map +1 -0
  20. package/dist/handlers/keyword_tools.d.ts +19 -0
  21. package/dist/handlers/keyword_tools.d.ts.map +1 -0
  22. package/dist/handlers/keyword_tools.js +251 -0
  23. package/dist/handlers/keyword_tools.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +31 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/server.d.ts +9 -0
  29. package/dist/server.d.ts.map +1 -0
  30. package/dist/server.js +76 -0
  31. package/dist/server.js.map +1 -0
  32. package/dist/services/backlinks_tools.d.ts +7 -0
  33. package/dist/services/backlinks_tools.d.ts.map +1 -0
  34. package/dist/services/backlinks_tools.js +25 -0
  35. package/dist/services/backlinks_tools.js.map +1 -0
  36. package/dist/services/base.d.ts +13 -0
  37. package/dist/services/base.d.ts.map +1 -0
  38. package/dist/services/base.js +83 -0
  39. package/dist/services/base.js.map +1 -0
  40. package/dist/services/domain.d.ts +7 -0
  41. package/dist/services/domain.d.ts.map +1 -0
  42. package/dist/services/domain.js +26 -0
  43. package/dist/services/domain.js.map +1 -0
  44. package/dist/services/domain_tools.d.ts +13 -0
  45. package/dist/services/domain_tools.d.ts.map +1 -0
  46. package/dist/services/domain_tools.js +111 -0
  47. package/dist/services/domain_tools.js.map +1 -0
  48. package/dist/services/keyword_tools.d.ts +8 -0
  49. package/dist/services/keyword_tools.d.ts.map +1 -0
  50. package/dist/services/keyword_tools.js +43 -0
  51. package/dist/services/keyword_tools.js.map +1 -0
  52. package/dist/types/mcp.d.ts +12 -0
  53. package/dist/types/mcp.d.ts.map +1 -0
  54. package/dist/types/mcp.js +3 -0
  55. package/dist/types/mcp.js.map +1 -0
  56. package/dist/types/serpstat.d.ts +237 -0
  57. package/dist/types/serpstat.d.ts.map +1 -0
  58. package/dist/types/serpstat.js +24 -0
  59. package/dist/types/serpstat.js.map +1 -0
  60. package/dist/utils/config.d.ts +24 -0
  61. package/dist/utils/config.d.ts.map +1 -0
  62. package/dist/utils/config.js +21 -0
  63. package/dist/utils/config.js.map +1 -0
  64. package/dist/utils/logger.d.ts +3 -0
  65. package/dist/utils/logger.d.ts.map +1 -0
  66. package/dist/utils/logger.js +19 -0
  67. package/dist/utils/logger.js.map +1 -0
  68. package/dist/utils/validation.d.ts +952 -0
  69. package/dist/utils/validation.d.ts.map +1 -0
  70. package/dist/utils/validation.js +257 -0
  71. package/dist/utils/validation.js.map +1 -0
  72. package/package.json +46 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainService = void 0;
4
+ const base_js_1 = require("./base.js");
5
+ const logger_js_1 = require("../utils/logger.js");
6
+ class DomainService extends base_js_1.BaseService {
7
+ async getDomainsInfo(params) {
8
+ logger_js_1.logger.info('Getting domains info', { domains: params.domains, se: params.se });
9
+ const request = {
10
+ id: `domains_info_${Date.now()}`,
11
+ method: 'SerpstatDomainProcedure.getDomainsInfo',
12
+ params,
13
+ };
14
+ const response = await this.makeRequest(request);
15
+ if (!response.result) {
16
+ throw new Error('No result data received from Serpstat API');
17
+ }
18
+ logger_js_1.logger.info('Successfully retrieved domains info', {
19
+ domainsCount: response.result.data.length,
20
+ leftLines: response.result.summary_info.left_lines
21
+ });
22
+ return response.result;
23
+ }
24
+ async getCompetitors(params) {
25
+ logger_js_1.logger.info('Getting competitors', { domain: params.domain, se: params.se });
26
+ const request = {
27
+ id: `competitors_${Date.now()}`,
28
+ method: 'SerpstatDomainProcedure.getCompetitors',
29
+ params,
30
+ };
31
+ const response = await this.makeRequest(request);
32
+ if (!response.result) {
33
+ throw new Error('No result data received from Serpstat API');
34
+ }
35
+ logger_js_1.logger.info('Successfully retrieved competitors', {
36
+ competitorsCount: response.result.data.length,
37
+ leftLines: response.result.summary_info.left_lines
38
+ });
39
+ return response.result;
40
+ }
41
+ async getDomainKeywords(params) {
42
+ logger_js_1.logger.info('Getting domain keywords', { domain: params.domain, se: params.se });
43
+ const request = {
44
+ id: `domain_keywords_${Date.now()}`,
45
+ method: 'SerpstatDomainProcedure.getDomainKeywords',
46
+ params,
47
+ };
48
+ const response = await this.makeRequest(request);
49
+ if (!response.result) {
50
+ throw new Error('No result data received from Serpstat API');
51
+ }
52
+ logger_js_1.logger.info('Successfully retrieved domain keywords', {
53
+ keywordsCount: response.result.data.length,
54
+ leftLines: response.result.summary_info.left_lines
55
+ });
56
+ return response.result;
57
+ }
58
+ async getDomainUrls(params) {
59
+ logger_js_1.logger.info('Getting domain URLs', { domain: params.domain, se: params.se });
60
+ const request = {
61
+ id: `domain_urls_${Date.now()}`,
62
+ method: 'SerpstatDomainProcedure.getDomainUrls',
63
+ params,
64
+ };
65
+ const response = await this.makeRequest(request);
66
+ if (!response.result) {
67
+ throw new Error('No result data received from Serpstat API');
68
+ }
69
+ logger_js_1.logger.info('Successfully retrieved domain URLs', {
70
+ urlsCount: response.result.data.length,
71
+ leftLines: response.result.summary_info.left_lines
72
+ });
73
+ return response.result;
74
+ }
75
+ async getDomainRegionsCount(params) {
76
+ logger_js_1.logger.info('Getting domain regions count', { domain: params.domain, sort: params.sort, order: params.order });
77
+ const request = {
78
+ id: `domain_regions_count_${Date.now()}`,
79
+ method: 'SerpstatDomainProcedure.getRegionsCount',
80
+ params,
81
+ };
82
+ const response = await this.makeRequest(request);
83
+ if (!response.result) {
84
+ throw new Error('No result data received from Serpstat API');
85
+ }
86
+ logger_js_1.logger.info('Successfully retrieved domain regions count', {
87
+ regionsCount: response.result.data.length,
88
+ leftLines: response.result.summary_info.left_lines
89
+ });
90
+ return response.result;
91
+ }
92
+ async getDomainUniqKeywords(params) {
93
+ logger_js_1.logger.info('Getting unique keywords for domains', { domains: params.domains, minusDomain: params.minusDomain, se: params.se });
94
+ const request = {
95
+ id: `domain_uniq_keywords_${Date.now()}`,
96
+ method: 'SerpstatDomainProcedure.getDomainsUniqKeywords',
97
+ params,
98
+ };
99
+ const response = await this.makeRequest(request);
100
+ if (!response.result) {
101
+ throw new Error('No result data received from Serpstat API');
102
+ }
103
+ logger_js_1.logger.info('Successfully retrieved unique keywords', {
104
+ keywordsCount: response.result.data.length,
105
+ leftLines: response.result.summary_info.left_lines
106
+ });
107
+ return response.result;
108
+ }
109
+ }
110
+ exports.DomainService = DomainService;
111
+ //# sourceMappingURL=domain_tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain_tools.js","sourceRoot":"","sources":["../../src/services/domain_tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { BaseService } from './base.js';
2
+ import { KeywordGetParams, GetRelatedKeywordsParams } from '../utils/validation.js';
3
+ import { KeywordGetResponse, GetRelatedKeywordsResponse } from '../types/serpstat.js';
4
+ export declare class KeywordService extends BaseService {
5
+ getKeywords(params: KeywordGetParams): Promise<KeywordGetResponse>;
6
+ getRelatedKeywords(params: GetRelatedKeywordsParams): Promise<GetRelatedKeywordsResponse>;
7
+ }
8
+ //# sourceMappingURL=keyword_tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyword_tools.d.ts","sourceRoot":"","sources":["../../src/services/keyword_tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAmB,MAAM,sBAAsB,CAAC;AAGvG,qBAAa,cAAe,SAAQ,WAAW;IACrC,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBlE,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAiBlG"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeywordService = void 0;
4
+ const base_js_1 = require("./base.js");
5
+ const logger_js_1 = require("../utils/logger.js");
6
+ class KeywordService extends base_js_1.BaseService {
7
+ async getKeywords(params) {
8
+ logger_js_1.logger.info('Getting keywords', { keyword: params.keyword, se: params.se });
9
+ const request = {
10
+ id: `get_keywords_${Date.now()}`,
11
+ method: 'SerpstatKeywordProcedure.getKeywords',
12
+ params,
13
+ };
14
+ const response = await this.makeRequest(request);
15
+ if (!response.result) {
16
+ throw new Error('No result data received from Serpstat API');
17
+ }
18
+ logger_js_1.logger.info('Successfully retrieved keywords', {
19
+ keywordsCount: response.result.data.length,
20
+ leftLines: response.result.summary_info.left_lines
21
+ });
22
+ return response.result;
23
+ }
24
+ async getRelatedKeywords(params) {
25
+ logger_js_1.logger.info('Getting related keywords', { keyword: params.keyword, se: params.se });
26
+ const request = {
27
+ id: `get_related_keywords_${Date.now()}`,
28
+ method: 'SerpstatKeywordProcedure.getRelatedKeywords',
29
+ params,
30
+ };
31
+ const response = await this.makeRequest(request);
32
+ if (!response.result) {
33
+ throw new Error('No result data received from Serpstat API');
34
+ }
35
+ logger_js_1.logger.info('Successfully retrieved related keywords', {
36
+ keywordsCount: response.result.data.length,
37
+ leftLines: response.result.summary_info.left_lines
38
+ });
39
+ return response.result;
40
+ }
41
+ }
42
+ exports.KeywordService = KeywordService;
43
+ //# sourceMappingURL=keyword_tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyword_tools.js","sourceRoot":"","sources":["../../src/services/keyword_tools.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AAGxC,kDAA4C;AAE5C,MAAa,cAAe,SAAQ,qBAAW;IAC3C,KAAK,CAAC,WAAW,CAAC,MAAwB;QACtC,kBAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAoB;YAC7B,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,MAAM,EAAE,sCAAsC;YAC9C,MAAM;SACT,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqB,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QACD,kBAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;YAC3C,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;YAC1C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU;SACrD,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAgC;QACrD,kBAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,MAAM,OAAO,GAAoB;YAC7B,EAAE,EAAE,wBAAwB,IAAI,CAAC,GAAG,EAAE,EAAE;YACxC,MAAM,EAAE,6CAA6C;YACrD,MAAM;SACT,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAA6B,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QACD,kBAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;YACnD,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;YAC1C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU;SACrD,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,CAAC;IAC3B,CAAC;CACJ;AApCD,wCAoCC"}
@@ -0,0 +1,12 @@
1
+ export interface MCPToolCall {
2
+ name: string;
3
+ arguments: Record<string, any>;
4
+ }
5
+ export interface MCPToolResponse {
6
+ content: Array<{
7
+ type: "text";
8
+ text: string;
9
+ }>;
10
+ isError?: boolean;
11
+ }
12
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":""}
@@ -0,0 +1,237 @@
1
+ export interface SerpstatRequest {
2
+ id: string;
3
+ method: string;
4
+ params: Record<string, any>;
5
+ }
6
+ export interface SerpstatResponse<T = any> {
7
+ id: string;
8
+ result?: T;
9
+ error?: {
10
+ code: number;
11
+ message: string;
12
+ data?: any;
13
+ };
14
+ }
15
+ export interface DomainInfo {
16
+ domain: string;
17
+ visible: number;
18
+ keywords: number;
19
+ traff: number;
20
+ visible_dynamic: number;
21
+ keywords_dynamic: number;
22
+ traff_dynamic: number;
23
+ ads_dynamic: number;
24
+ new_keywords: number;
25
+ out_keywords: number;
26
+ rised_keywords: number;
27
+ down_keywords: number;
28
+ ad_keywords: number;
29
+ ads: number;
30
+ prev_date: string;
31
+ }
32
+ export interface DomainsInfoResponse {
33
+ data: DomainInfo[];
34
+ summary_info: {
35
+ page: number;
36
+ left_lines: number;
37
+ };
38
+ }
39
+ export declare const SEARCH_ENGINES: readonly ["g_af", "g_al", "g_dz", "g_as", "g_ad", "g_ao", "g_ai", "g_ag", "g_ar", "g_am", "g_aw", "g_au", "g_at", "g_az", "g_bh", "g_bd", "g_bb", "g_by", "g_be", "g_bz", "g_bj", "g_bm", "g_bt", "g_bo", "g_ba", "g_bw", "g_br", "g_io", "g_vg", "g_bn", "g_bg", "g_bf", "g_bi", "g_kh", "g_cm", "g_ca", "g_cv", "g_ky", "g_cf", "g_td", "g_cl", "g_cn", "g_cx", "g_сс", "g_co", "g_km", "g_ck", "g_cr", "g_ci", "g_hr", "g_cw", "g_cy", "g_cz", "g_cd", "g_dk", "g_dj", "g_dm", "g_do", "g_ec", "g_eg", "g_sv", "g_gq", "g_er", "g_ee", "g_et", "g_fk", "g_fo", "g_fm", "g_fj", "g_fi", "g_fr", "g_gf", "g_pf", "g_ga", "g_ge", "g_de", "g_gh", "g_gi", "g_gr", "g_gl", "g_gd", "g_gp", "g_gu", "g_gt", "g_gg", "g_gn", "g_gw", "g_gy", "g_ht", "g_hn", "g_hk", "g_hu", "g_is", "g_in", "g_id", "g_iq", "g_ie", "g_im", "g_il", "g_it", "g_jm", "g_jp", "g_je", "g_jo", "g_kz", "g_ke", "g_ki", "g_kw", "g_kg", "g_la", "g_lv", "g_lb", "g_ls", "g_lr", "g_ly", "g_li", "g_lt", "g_lu", "g_mo", "g_mk", "g_mg", "g_mw", "g_my", "g_mv", "g_ml", "g_mt", "g_mh", "g_mq", "g_mr", "g_mu", "g_yt", "g_mx", "g_md", "g_mc", "g_mn", "g_me", "g_ms", "g_ma", "g_mz", "g_mm", "g_na", "g_nr", "g_np", "g_nl", "g_nc", "g_nz", "g_ni", "g_ne", "g_ng", "g_nu", "g_nf", "g_mp", "g_no", "g_om", "g_pk", "g_pw", "g_ps", "g_pa", "g_pg", "g_py", "g_pe", "g_ph", "g_pn", "g_pl", "g_pt", "g_pr", "g_qa", "g_cg", "g_re", "g_ro", "g_ru", "g_rw", "g_sh", "g_kn", "g_lc", "g_pm", "g_vc", "g_ws", "g_sm", "g_st", "g_sa", "g_sn", "g_rs", "g_sc", "g_sl", "g_sg", "g_sx", "g_sk", "g_si", "g_sb", "g_so", "g_za", "g_kr", "g_es", "g_lk", "g_sr", "g_sz", "g_se", "g_ch", "g_tw", "g_tj", "g_tz", "g_th", "g_bs", "g_gm", "g_tl", "g_tg", "g_tk", "g_to", "g_tt", "g_tn", "g_tr", "g_tm", "g_tc", "g_tv", "g_vi", "g_ug", "g_ua", "g_ae", "g_uk", "g_us", "g_uy", "g_uz", "g_vu", "g_va", "g_ve", "g_vn", "g_wf", "g_ye", "g_zm", "g_zw", "bing_us"];
40
+ export type SearchEngine = typeof SEARCH_ENGINES[number];
41
+ export interface Competitor {
42
+ domain: string;
43
+ visible: number;
44
+ traff: number;
45
+ keywords: number;
46
+ relevance: number;
47
+ }
48
+ export interface CompetitorsResponse {
49
+ data: Competitor[];
50
+ summary_info: {
51
+ page: number;
52
+ left_lines: number;
53
+ };
54
+ }
55
+ export interface BacklinksSummaryData {
56
+ sersptat_domain_rank: number;
57
+ referring_domains: number;
58
+ referring_domains_change: number;
59
+ redirected_domains: number;
60
+ referring_malicious_domains: number;
61
+ referring_malicious_domains_change: number;
62
+ referring_ip_addresses: number;
63
+ referring_ip_addresses_change: number;
64
+ referring_subnets: number;
65
+ referring_subnets_change: number;
66
+ backlinks: number;
67
+ backlinks_change: number;
68
+ backlinks_from_mainpages: number;
69
+ backlinks_from_mainpages_change: number;
70
+ nofollow_backlinks: number;
71
+ nofollow_backlinks_change: number;
72
+ dofollow_backlinks: number;
73
+ dofollow_backlinks_change: number;
74
+ text_backlinks: number;
75
+ text_backlinks_change: number;
76
+ image_backlinks: number;
77
+ image_backlinks_change: number;
78
+ redirect_backlinks: number;
79
+ redirect_backlinks_change: number;
80
+ canonical_backlinks: number;
81
+ canonical_backlinks_change: number;
82
+ alternate_backlinks: number;
83
+ alternate_backlinks_change: number;
84
+ rss_backlinks: number;
85
+ rss_backlinks_change: number;
86
+ frame_backlinks: number;
87
+ frame_backlinks_change: number;
88
+ form_backlinks: number;
89
+ form_backlinks_change: number;
90
+ external_domains: number;
91
+ external_domains_change: number;
92
+ external_malicious_domains: number;
93
+ external_malicious_domains_change: number;
94
+ external_links: number;
95
+ external_links_change: number;
96
+ }
97
+ export interface BacklinksSummaryResponse {
98
+ data: BacklinksSummaryData;
99
+ summary_info: {
100
+ left_lines: number;
101
+ sort?: string | null;
102
+ order?: string | null;
103
+ };
104
+ }
105
+ export interface DomainKeyword {
106
+ domain: string;
107
+ subdomain?: string;
108
+ keyword: string;
109
+ keyword_length: number;
110
+ url: string;
111
+ position: number;
112
+ types: string[];
113
+ found_results: number;
114
+ cost?: number;
115
+ traff?: number;
116
+ difficulty?: number;
117
+ concurrency?: number;
118
+ region_queries_count?: number;
119
+ intents?: string[];
120
+ }
121
+ export interface DomainKeywordsResponse {
122
+ data: DomainKeyword[];
123
+ summary_info: {
124
+ page: number;
125
+ size: number;
126
+ total: number;
127
+ left_lines: number;
128
+ };
129
+ }
130
+ export interface DomainUrl {
131
+ url: string;
132
+ keywords: number;
133
+ }
134
+ export interface DomainUrlsResponse {
135
+ data: DomainUrl[];
136
+ summary_info: {
137
+ page: number;
138
+ size: number;
139
+ total: number;
140
+ left_lines: number;
141
+ };
142
+ }
143
+ export interface DomainRegionCount {
144
+ country_name_en: string;
145
+ db_name: string;
146
+ domain: string;
147
+ keywords_count: number;
148
+ }
149
+ export interface DomainRegionsCountSummaryInfo {
150
+ analysed_domain: string;
151
+ sort: string;
152
+ order: string;
153
+ regions_db_count: number;
154
+ total_keywords: number;
155
+ left_lines: number;
156
+ }
157
+ export interface DomainRegionsCountResponse {
158
+ data: DomainRegionCount[];
159
+ summary_info: DomainRegionsCountSummaryInfo;
160
+ }
161
+ export interface DomainUniqKeywordData {
162
+ domain: string;
163
+ subdomain: string;
164
+ keyword: string;
165
+ keyword_length: number;
166
+ url: string;
167
+ position: number;
168
+ date: string;
169
+ types: string[];
170
+ found_results: number;
171
+ cost: number;
172
+ concurrency: number;
173
+ region_queries_count: number;
174
+ region_queries_count_wide: number;
175
+ geo_names: string[];
176
+ traff: number;
177
+ difficulty: number;
178
+ dynamic: number;
179
+ [domainName: string]: string | number | string[] | undefined;
180
+ }
181
+ export interface DomainUniqKeywordsSummaryInfo {
182
+ page: number;
183
+ total: number;
184
+ left_lines: number;
185
+ }
186
+ export interface DomainUniqKeywordsResponse {
187
+ data: DomainUniqKeywordData[];
188
+ summary_info: DomainUniqKeywordsSummaryInfo;
189
+ }
190
+ export interface KeywordGetData {
191
+ keyword: string;
192
+ cost: number;
193
+ concurrency: number;
194
+ found_results: number;
195
+ region_queries_count: number;
196
+ region_queries_count_wide: number;
197
+ types: string[];
198
+ geo_names: any[];
199
+ social_domains: string[];
200
+ right_spelling: string | null;
201
+ lang: string;
202
+ keyword_length: number;
203
+ difficulty: number;
204
+ intents: string[];
205
+ }
206
+ export interface KeywordGetSummaryInfo {
207
+ page: number;
208
+ total: number;
209
+ left_lines: number;
210
+ }
211
+ export interface KeywordGetResponse {
212
+ data: KeywordGetData[];
213
+ summary_info: KeywordGetSummaryInfo;
214
+ }
215
+ export interface GetRelatedKeywordData {
216
+ keyword: string;
217
+ cost?: number;
218
+ concurrency?: number;
219
+ region_queries_count?: number;
220
+ difficulty?: number;
221
+ weight?: number;
222
+ types?: string[];
223
+ geo_names?: string[];
224
+ right_spelling?: boolean;
225
+ keyword_length?: number;
226
+ intents?: string[];
227
+ }
228
+ export interface GetRelatedKeywordsSummaryInfo {
229
+ page: number;
230
+ total: number;
231
+ left_lines: number;
232
+ }
233
+ export interface GetRelatedKeywordsResponse {
234
+ data: GetRelatedKeywordData[];
235
+ summary_info: GetRelatedKeywordsSummaryInfo;
236
+ }
237
+ //# sourceMappingURL=serpstat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serpstat.d.ts","sourceRoot":"","sources":["../../src/types/serpstat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SEARCH_ENGINES = void 0;
4
+ exports.SEARCH_ENGINES = [
5
+ 'g_af', 'g_al', 'g_dz', 'g_as', 'g_ad', 'g_ao', 'g_ai', 'g_ag', 'g_ar', 'g_am', 'g_aw', 'g_au', 'g_at',
6
+ 'g_az', 'g_bh', 'g_bd', 'g_bb', 'g_by', 'g_be', 'g_bz', 'g_bj', 'g_bm', 'g_bt', 'g_bo', 'g_ba', 'g_bw',
7
+ 'g_br', 'g_io', 'g_vg', 'g_bn', 'g_bg', 'g_bf', 'g_bi', 'g_kh', 'g_cm', 'g_ca', 'g_cv', 'g_ky', 'g_cf',
8
+ 'g_td', 'g_cl', 'g_cn', 'g_cx', 'g_сс', 'g_co', 'g_km', 'g_ck', 'g_cr', 'g_ci', 'g_hr', 'g_cw', 'g_cy',
9
+ 'g_cz', 'g_cd', 'g_dk', 'g_dj', 'g_dm', 'g_do', 'g_ec', 'g_eg', 'g_sv', 'g_gq', 'g_er', 'g_ee', 'g_et',
10
+ 'g_fk', 'g_fo', 'g_fm', 'g_fj', 'g_fi', 'g_fr', 'g_gf', 'g_pf', 'g_ga', 'g_ge', 'g_de', 'g_gh', 'g_gi',
11
+ 'g_gr', 'g_gl', 'g_gd', 'g_gp', 'g_gu', 'g_gt', 'g_gg', 'g_gn', 'g_gw', 'g_gy', 'g_ht', 'g_hn', 'g_hk',
12
+ 'g_hu', 'g_is', 'g_in', 'g_id', 'g_iq', 'g_ie', 'g_im', 'g_il', 'g_it', 'g_jm', 'g_jp', 'g_je', 'g_jo',
13
+ 'g_kz', 'g_ke', 'g_ki', 'g_kw', 'g_kg', 'g_la', 'g_lv', 'g_lb', 'g_ls', 'g_lr', 'g_ly', 'g_li', 'g_lt',
14
+ 'g_lu', 'g_mo', 'g_mk', 'g_mg', 'g_mw', 'g_my', 'g_mv', 'g_ml', 'g_mt', 'g_mh', 'g_mq', 'g_mr', 'g_mu',
15
+ 'g_yt', 'g_mx', 'g_md', 'g_mc', 'g_mn', 'g_me', 'g_ms', 'g_ma', 'g_mz', 'g_mm', 'g_na', 'g_nr', 'g_np',
16
+ 'g_nl', 'g_nc', 'g_nz', 'g_ni', 'g_ne', 'g_ng', 'g_nu', 'g_nf', 'g_mp', 'g_no', 'g_om', 'g_pk', 'g_pw',
17
+ 'g_ps', 'g_pa', 'g_pg', 'g_py', 'g_pe', 'g_ph', 'g_pn', 'g_pl', 'g_pt', 'g_pr', 'g_qa', 'g_cg', 'g_re',
18
+ 'g_ro', 'g_ru', 'g_rw', 'g_sh', 'g_kn', 'g_lc', 'g_pm', 'g_vc', 'g_ws', 'g_sm', 'g_st', 'g_sa', 'g_sn',
19
+ 'g_rs', 'g_sc', 'g_sl', 'g_sg', 'g_sx', 'g_sk', 'g_si', 'g_sb', 'g_so', 'g_za', 'g_kr', 'g_es', 'g_lk',
20
+ 'g_sr', 'g_sz', 'g_se', 'g_ch', 'g_tw', 'g_tj', 'g_tz', 'g_th', 'g_bs', 'g_gm', 'g_tl', 'g_tg', 'g_tk',
21
+ 'g_to', 'g_tt', 'g_tn', 'g_tr', 'g_tm', 'g_tc', 'g_tv', 'g_vi', 'g_ug', 'g_ua', 'g_ae', 'g_uk', 'g_us',
22
+ 'g_uy', 'g_uz', 'g_vu', 'g_va', 'g_ve', 'g_vn', 'g_wf', 'g_ye', 'g_zm', 'g_zw', 'bing_us'
23
+ ];
24
+ //# sourceMappingURL=serpstat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serpstat.js","sourceRoot":"","sources":["../../src/types/serpstat.ts"],"names":[],"mappings":";;;AA0Ca,QAAA,cAAc,GAAG;IAC1B,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;IAC1F,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,SAAS;CACzE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ declare const configSchema: z.ZodObject<{
3
+ serpstatApiToken: z.ZodString;
4
+ serpstatApiUrl: z.ZodDefault<z.ZodString>;
5
+ logLevel: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug"]>>;
6
+ maxRetries: z.ZodDefault<z.ZodNumber>;
7
+ requestTimeout: z.ZodDefault<z.ZodNumber>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ serpstatApiToken: string;
10
+ serpstatApiUrl: string;
11
+ logLevel: "error" | "warn" | "info" | "debug";
12
+ maxRetries: number;
13
+ requestTimeout: number;
14
+ }, {
15
+ serpstatApiToken: string;
16
+ serpstatApiUrl?: string | undefined;
17
+ logLevel?: "error" | "warn" | "info" | "debug" | undefined;
18
+ maxRetries?: number | undefined;
19
+ requestTimeout?: number | undefined;
20
+ }>;
21
+ export type Config = z.infer<typeof configSchema>;
22
+ export declare function loadConfig(): Config;
23
+ export {};
24
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAMhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadConfig = loadConfig;
4
+ const zod_1 = require("zod");
5
+ const configSchema = zod_1.z.object({
6
+ serpstatApiToken: zod_1.z.string().min(1, 'SERPSTAT_API_TOKEN is required'),
7
+ serpstatApiUrl: zod_1.z.string().url().default('https://api.serpstat.com/v4'),
8
+ logLevel: zod_1.z.enum(['error', 'warn', 'info', 'debug']).default('info'),
9
+ maxRetries: zod_1.z.number().int().positive().default(3),
10
+ requestTimeout: zod_1.z.number().int().positive().default(30000),
11
+ });
12
+ function loadConfig() {
13
+ return configSchema.parse({
14
+ serpstatApiToken: process.env.SERPSTAT_API_TOKEN ?? 'test-token',
15
+ serpstatApiUrl: process.env.SERPSTAT_API_URL ?? 'https://api.serpstat.com/v4',
16
+ logLevel: process.env.LOG_LEVEL ?? 'error',
17
+ maxRetries: process.env.MAX_RETRIES ? Number(process.env.MAX_RETRIES) : 1,
18
+ requestTimeout: process.env.REQUEST_TIMEOUT ? Number(process.env.REQUEST_TIMEOUT) : 30000,
19
+ });
20
+ }
21
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;AAYA,gCAQC;AApBD,6BAAwB;AAExB,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IACrE,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC;IACvE,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACpE,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC7D,CAAC,CAAC;AAIH,SAAgB,UAAU;IACtB,OAAO,YAAY,CAAC,KAAK,CAAC;QACtB,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,YAAY;QAChE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,6BAA6B;QAC7E,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAgD,IAAI,OAAO;QACjF,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK;KAC5F,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import winston from 'winston';
2
+ export declare const logger: winston.Logger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,eAAO,MAAM,MAAM,gBAejB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logger = void 0;
7
+ const winston_1 = __importDefault(require("winston"));
8
+ const config_js_1 = require("./config.js");
9
+ const config = (0, config_js_1.loadConfig)();
10
+ exports.logger = winston_1.default.createLogger({
11
+ level: config.logLevel,
12
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()),
13
+ transports: [
14
+ new winston_1.default.transports.Console({
15
+ format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
16
+ }),
17
+ ],
18
+ });
19
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAC9B,2CAAyC;AAEzC,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;AAEf,QAAA,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,QAAQ;IACtB,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC1B,iBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACxB;IACD,UAAU,EAAE;QACR,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC1B,iBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,iBAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAC1B;SACJ,CAAC;KACL;CACJ,CAAC,CAAC"}