mcp-wordpress 2.6.4 → 2.7.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.
Files changed (332) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/CacheInvalidation.d.ts +25 -6
  3. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  4. package/dist/cache/CacheInvalidation.js +168 -16
  5. package/dist/cache/CacheInvalidation.js.map +1 -1
  6. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  7. package/dist/cache/HttpCacheWrapper.js +3 -4
  8. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  9. package/dist/cache/SEOCacheManager.d.ts +150 -0
  10. package/dist/cache/SEOCacheManager.d.ts.map +1 -0
  11. package/dist/cache/SEOCacheManager.js +275 -0
  12. package/dist/cache/SEOCacheManager.js.map +1 -0
  13. package/dist/client/SEOWordPressClient.d.ts +164 -0
  14. package/dist/client/SEOWordPressClient.d.ts.map +1 -0
  15. package/dist/client/SEOWordPressClient.js +674 -0
  16. package/dist/client/SEOWordPressClient.js.map +1 -0
  17. package/dist/client/api.d.ts.map +1 -1
  18. package/dist/client/api.js +50 -20
  19. package/dist/client/api.js.map +1 -1
  20. package/dist/client/auth.js +19 -19
  21. package/dist/client/auth.js.map +1 -1
  22. package/dist/client/index.d.ts +11 -0
  23. package/dist/client/index.d.ts.map +1 -0
  24. package/dist/client/index.js +14 -0
  25. package/dist/client/index.js.map +1 -0
  26. package/dist/client/managers/AuthManager.d.ts +39 -0
  27. package/dist/client/managers/AuthManager.d.ts.map +1 -0
  28. package/dist/client/managers/AuthManager.js +142 -0
  29. package/dist/client/managers/AuthManager.js.map +1 -0
  30. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  31. package/dist/client/managers/AuthenticationManager.js +10 -9
  32. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  33. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  34. package/dist/client/managers/BaseManager.js +12 -0
  35. package/dist/client/managers/BaseManager.js.map +1 -1
  36. package/dist/client/managers/ComposedAuthenticationManager.d.ts +94 -0
  37. package/dist/client/managers/ComposedAuthenticationManager.d.ts.map +1 -0
  38. package/dist/client/managers/ComposedAuthenticationManager.js +340 -0
  39. package/dist/client/managers/ComposedAuthenticationManager.js.map +1 -0
  40. package/dist/client/managers/ComposedManagerFactory.d.ts +104 -0
  41. package/dist/client/managers/ComposedManagerFactory.d.ts.map +1 -0
  42. package/dist/client/managers/ComposedManagerFactory.js +180 -0
  43. package/dist/client/managers/ComposedManagerFactory.js.map +1 -0
  44. package/dist/client/managers/ComposedRequestManager.d.ts +82 -0
  45. package/dist/client/managers/ComposedRequestManager.d.ts.map +1 -0
  46. package/dist/client/managers/ComposedRequestManager.js +260 -0
  47. package/dist/client/managers/ComposedRequestManager.js.map +1 -0
  48. package/dist/client/managers/JWTAuthImplementation.d.ts +86 -0
  49. package/dist/client/managers/JWTAuthImplementation.d.ts.map +1 -0
  50. package/dist/client/managers/JWTAuthImplementation.js +240 -0
  51. package/dist/client/managers/JWTAuthImplementation.js.map +1 -0
  52. package/dist/client/managers/ManagersIndex.d.ts +6 -0
  53. package/dist/client/managers/ManagersIndex.d.ts.map +1 -0
  54. package/dist/client/managers/ManagersIndex.js +6 -0
  55. package/dist/client/managers/ManagersIndex.js.map +1 -0
  56. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  57. package/dist/client/managers/RequestManager.js +5 -3
  58. package/dist/client/managers/RequestManager.js.map +1 -1
  59. package/dist/client/managers/composed/MigrationAdapter.d.ts +80 -0
  60. package/dist/client/managers/composed/MigrationAdapter.d.ts.map +1 -0
  61. package/dist/client/managers/composed/MigrationAdapter.js +214 -0
  62. package/dist/client/managers/composed/MigrationAdapter.js.map +1 -0
  63. package/dist/client/managers/composed/index.d.ts +23 -0
  64. package/dist/client/managers/composed/index.d.ts.map +1 -0
  65. package/dist/client/managers/composed/index.js +26 -0
  66. package/dist/client/managers/composed/index.js.map +1 -0
  67. package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts +27 -0
  68. package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts.map +1 -0
  69. package/dist/client/managers/implementations/ConfigurationProviderImpl.js +41 -0
  70. package/dist/client/managers/implementations/ConfigurationProviderImpl.js.map +1 -0
  71. package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts +31 -0
  72. package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts.map +1 -0
  73. package/dist/client/managers/implementations/ErrorHandlerImpl.js +73 -0
  74. package/dist/client/managers/implementations/ErrorHandlerImpl.js.map +1 -0
  75. package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts +47 -0
  76. package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts.map +1 -0
  77. package/dist/client/managers/implementations/ParameterValidatorImpl.js +141 -0
  78. package/dist/client/managers/implementations/ParameterValidatorImpl.js.map +1 -0
  79. package/dist/client/managers/interfaces/ManagerInterfaces.d.ts +147 -0
  80. package/dist/client/managers/interfaces/ManagerInterfaces.d.ts.map +1 -0
  81. package/dist/client/managers/interfaces/ManagerInterfaces.js +6 -0
  82. package/dist/client/managers/interfaces/ManagerInterfaces.js.map +1 -0
  83. package/dist/config/Config.d.ts +30 -0
  84. package/dist/config/Config.d.ts.map +1 -1
  85. package/dist/config/Config.js +30 -0
  86. package/dist/config/Config.js.map +1 -1
  87. package/dist/config/ConfigurationSchema.d.ts +75 -198
  88. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  89. package/dist/config/ConfigurationSchema.js +17 -17
  90. package/dist/config/ConfigurationSchema.js.map +1 -1
  91. package/dist/config/ServerConfiguration.d.ts +2 -2
  92. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  93. package/dist/config/ServerConfiguration.js +15 -13
  94. package/dist/config/ServerConfiguration.js.map +1 -1
  95. package/dist/config/index.d.ts +8 -0
  96. package/dist/config/index.d.ts.map +1 -0
  97. package/dist/config/index.js +11 -0
  98. package/dist/config/index.js.map +1 -0
  99. package/dist/docs/DocumentationGenerator.js +2 -2
  100. package/dist/docs/DocumentationGenerator.js.map +1 -1
  101. package/dist/dxt-entry.js +3 -3
  102. package/dist/dxt-entry.js.map +1 -1
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +38 -37
  106. package/dist/index.js.map +1 -1
  107. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  108. package/dist/performance/MetricsCollector.js +5 -4
  109. package/dist/performance/MetricsCollector.js.map +1 -1
  110. package/dist/security/AISecurityScanner.js +7 -7
  111. package/dist/security/AISecurityScanner.js.map +1 -1
  112. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  113. package/dist/security/AutomatedRemediation.js +11 -11
  114. package/dist/security/AutomatedRemediation.js.map +1 -1
  115. package/dist/security/InputValidator.d.ts +50 -126
  116. package/dist/security/InputValidator.d.ts.map +1 -1
  117. package/dist/security/InputValidator.js +9 -9
  118. package/dist/security/InputValidator.js.map +1 -1
  119. package/dist/security/SecurityCIPipeline.d.ts +47 -5
  120. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  121. package/dist/security/SecurityCIPipeline.js +390 -49
  122. package/dist/security/SecurityCIPipeline.js.map +1 -1
  123. package/dist/security/SecurityConfigManager.js +10 -10
  124. package/dist/security/SecurityConfigManager.js.map +1 -1
  125. package/dist/security/SecurityMonitoring.js +4 -4
  126. package/dist/security/SecurityMonitoring.js.map +1 -1
  127. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  128. package/dist/security/SecurityReviewer.js +13 -6
  129. package/dist/security/SecurityReviewer.js.map +1 -1
  130. package/dist/security/index.js +3 -3
  131. package/dist/security/index.js.map +1 -1
  132. package/dist/server/ConnectionTester.js +5 -5
  133. package/dist/server/ConnectionTester.js.map +1 -1
  134. package/dist/server/ToolRegistry.d.ts +2 -2
  135. package/dist/server/ToolRegistry.d.ts.map +1 -1
  136. package/dist/server/ToolRegistry.js +7 -6
  137. package/dist/server/ToolRegistry.js.map +1 -1
  138. package/dist/server/index.d.ts +7 -0
  139. package/dist/server/index.d.ts.map +1 -0
  140. package/dist/server/index.js +9 -0
  141. package/dist/server/index.js.map +1 -0
  142. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  143. package/dist/tools/BaseToolManager.js +11 -11
  144. package/dist/tools/BaseToolManager.js.map +1 -1
  145. package/dist/tools/auth.d.ts.map +1 -1
  146. package/dist/tools/auth.js +7 -7
  147. package/dist/tools/auth.js.map +1 -1
  148. package/dist/tools/comments.d.ts.map +1 -1
  149. package/dist/tools/comments.js +14 -14
  150. package/dist/tools/comments.js.map +1 -1
  151. package/dist/tools/index.d.ts +1 -0
  152. package/dist/tools/index.d.ts.map +1 -1
  153. package/dist/tools/index.js +1 -0
  154. package/dist/tools/index.js.map +1 -1
  155. package/dist/tools/media.d.ts.map +1 -1
  156. package/dist/tools/media.js +14 -11
  157. package/dist/tools/media.js.map +1 -1
  158. package/dist/tools/pages.d.ts.map +1 -1
  159. package/dist/tools/pages.js +12 -12
  160. package/dist/tools/pages.js.map +1 -1
  161. package/dist/tools/performance.d.ts.map +1 -1
  162. package/dist/tools/performance.js +13 -11
  163. package/dist/tools/performance.js.map +1 -1
  164. package/dist/tools/posts/PostHandlers.d.ts.map +1 -1
  165. package/dist/tools/posts/PostHandlers.js +16 -16
  166. package/dist/tools/posts/PostHandlers.js.map +1 -1
  167. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -1
  168. package/dist/tools/posts/index.d.ts.map +1 -1
  169. package/dist/tools/seo/BulkOperations.d.ts +113 -0
  170. package/dist/tools/seo/BulkOperations.d.ts.map +1 -0
  171. package/dist/tools/seo/BulkOperations.js +398 -0
  172. package/dist/tools/seo/BulkOperations.js.map +1 -0
  173. package/dist/tools/seo/SEOHandlers.d.ts +55 -0
  174. package/dist/tools/seo/SEOHandlers.d.ts.map +1 -0
  175. package/dist/tools/seo/SEOHandlers.js +255 -0
  176. package/dist/tools/seo/SEOHandlers.js.map +1 -0
  177. package/dist/tools/seo/SEOToolDefinitions.d.ts +59 -0
  178. package/dist/tools/seo/SEOToolDefinitions.d.ts.map +1 -0
  179. package/dist/tools/seo/SEOToolDefinitions.js +385 -0
  180. package/dist/tools/seo/SEOToolDefinitions.js.map +1 -0
  181. package/dist/tools/seo/SEOTools.d.ts +203 -0
  182. package/dist/tools/seo/SEOTools.d.ts.map +1 -0
  183. package/dist/tools/seo/SEOTools.js +708 -0
  184. package/dist/tools/seo/SEOTools.js.map +1 -0
  185. package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts +94 -0
  186. package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts.map +1 -0
  187. package/dist/tools/seo/analyzers/ContentAnalyzer.js +402 -0
  188. package/dist/tools/seo/analyzers/ContentAnalyzer.js.map +1 -0
  189. package/dist/tools/seo/auditors/SiteAuditor.d.ts +121 -0
  190. package/dist/tools/seo/auditors/SiteAuditor.d.ts.map +1 -0
  191. package/dist/tools/seo/auditors/SiteAuditor.js +600 -0
  192. package/dist/tools/seo/auditors/SiteAuditor.js.map +1 -0
  193. package/dist/tools/seo/generators/MetaGenerator.d.ts +128 -0
  194. package/dist/tools/seo/generators/MetaGenerator.d.ts.map +1 -0
  195. package/dist/tools/seo/generators/MetaGenerator.js +547 -0
  196. package/dist/tools/seo/generators/MetaGenerator.js.map +1 -0
  197. package/dist/tools/seo/generators/SchemaGenerator.d.ts +204 -0
  198. package/dist/tools/seo/generators/SchemaGenerator.d.ts.map +1 -0
  199. package/dist/tools/seo/generators/SchemaGenerator.js +670 -0
  200. package/dist/tools/seo/generators/SchemaGenerator.js.map +1 -0
  201. package/dist/tools/seo/index.d.ts +17 -0
  202. package/dist/tools/seo/index.d.ts.map +1 -0
  203. package/dist/tools/seo/index.js +18 -0
  204. package/dist/tools/seo/index.js.map +1 -0
  205. package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts +186 -0
  206. package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts.map +1 -0
  207. package/dist/tools/seo/optimizers/InternalLinkingSuggester.js +683 -0
  208. package/dist/tools/seo/optimizers/InternalLinkingSuggester.js.map +1 -0
  209. package/dist/tools/site.d.ts.map +1 -1
  210. package/dist/tools/site.js +12 -12
  211. package/dist/tools/site.js.map +1 -1
  212. package/dist/tools/taxonomies.d.ts.map +1 -1
  213. package/dist/tools/taxonomies.js +20 -20
  214. package/dist/tools/taxonomies.js.map +1 -1
  215. package/dist/tools/users.d.ts.map +1 -1
  216. package/dist/tools/users.js +12 -12
  217. package/dist/tools/users.js.map +1 -1
  218. package/dist/types/client.d.ts +8 -6
  219. package/dist/types/client.d.ts.map +1 -1
  220. package/dist/types/client.js.map +1 -1
  221. package/dist/types/seo.d.ts +473 -0
  222. package/dist/types/seo.d.ts.map +1 -0
  223. package/dist/types/seo.js +94 -0
  224. package/dist/types/seo.js.map +1 -0
  225. package/dist/utils/enhancedError.js +1 -1
  226. package/dist/utils/enhancedError.js.map +1 -1
  227. package/dist/utils/error.d.ts.map +1 -1
  228. package/dist/utils/error.js +0 -1
  229. package/dist/utils/error.js.map +1 -1
  230. package/dist/utils/index.d.ts +12 -0
  231. package/dist/utils/index.d.ts.map +1 -0
  232. package/dist/utils/index.js +18 -0
  233. package/dist/utils/index.js.map +1 -0
  234. package/dist/utils/logger.js +3 -3
  235. package/dist/utils/logger.js.map +1 -1
  236. package/dist/utils/toolWrapper.d.ts +2 -2
  237. package/dist/utils/toolWrapper.js +8 -8
  238. package/dist/utils/toolWrapper.js.map +1 -1
  239. package/dist/utils/validation/core.d.ts.map +1 -1
  240. package/dist/utils/validation/core.js.map +1 -1
  241. package/dist/utils/validation/index.d.ts.map +1 -1
  242. package/dist/utils/validation/index.js.map +1 -1
  243. package/dist/utils/validation/network.js +3 -3
  244. package/dist/utils/validation/network.js.map +1 -1
  245. package/dist/utils/validation/rateLimit.js.map +1 -1
  246. package/dist/utils/validation/security.js.map +1 -1
  247. package/dist/utils/validation/wordpress.js.map +1 -1
  248. package/dist/utils/version.d.ts +144 -0
  249. package/dist/utils/version.d.ts.map +1 -0
  250. package/dist/utils/version.js +318 -0
  251. package/dist/utils/version.js.map +1 -0
  252. package/package.json +21 -55
  253. package/src/cache/CacheInvalidation.ts +183 -20
  254. package/src/cache/HttpCacheWrapper.ts +8 -5
  255. package/src/cache/SEOCacheManager.ts +330 -0
  256. package/src/cache/__tests__/CacheInvalidation.test.ts +6 -11
  257. package/src/cache/__tests__/CachedWordPressClient.test.ts +37 -62
  258. package/src/client/SEOWordPressClient.ts +876 -0
  259. package/src/client/api.ts +50 -21
  260. package/src/client/auth.ts +19 -19
  261. package/src/client/index.ts +16 -0
  262. package/src/client/managers/AuthManager.ts +175 -0
  263. package/src/client/managers/AuthenticationManager.ts +16 -14
  264. package/src/client/managers/BaseManager.ts +24 -5
  265. package/src/client/managers/ComposedAuthenticationManager.ts +409 -0
  266. package/src/client/managers/ComposedManagerFactory.ts +231 -0
  267. package/src/client/managers/ComposedRequestManager.ts +336 -0
  268. package/src/client/managers/JWTAuthImplementation.ts +326 -0
  269. package/src/client/managers/ManagersIndex.ts +6 -0
  270. package/src/client/managers/RequestManager.ts +9 -7
  271. package/src/client/managers/composed/MigrationAdapter.ts +263 -0
  272. package/src/client/managers/composed/index.ts +47 -0
  273. package/src/client/managers/implementations/ConfigurationProviderImpl.ts +52 -0
  274. package/src/client/managers/implementations/ErrorHandlerImpl.ts +102 -0
  275. package/src/client/managers/implementations/ParameterValidatorImpl.ts +221 -0
  276. package/src/client/managers/interfaces/ManagerInterfaces.ts +171 -0
  277. package/src/config/Config.ts +63 -0
  278. package/src/config/ConfigurationSchema.ts +17 -17
  279. package/src/config/ServerConfiguration.ts +18 -16
  280. package/src/config/index.ts +13 -0
  281. package/src/docs/DocumentationGenerator.ts +2 -2
  282. package/src/dxt-entry.ts +3 -3
  283. package/src/index.ts +43 -43
  284. package/src/performance/MetricsCollector.ts +15 -11
  285. package/src/security/AISecurityScanner.ts +7 -7
  286. package/src/security/AutomatedRemediation.ts +13 -11
  287. package/src/security/InputValidator.ts +10 -9
  288. package/src/security/SecurityCIPipeline.ts +494 -56
  289. package/src/security/SecurityConfigManager.ts +10 -10
  290. package/src/security/SecurityMonitoring.ts +5 -5
  291. package/src/security/SecurityReviewer.ts +13 -6
  292. package/src/security/index.ts +3 -3
  293. package/src/server/ConnectionTester.ts +5 -5
  294. package/src/server/ToolRegistry.ts +9 -8
  295. package/src/server/index.ts +10 -0
  296. package/src/tools/BaseToolManager.ts +55 -83
  297. package/src/tools/auth.ts +21 -12
  298. package/src/tools/comments.ts +23 -19
  299. package/src/tools/index.ts +1 -0
  300. package/src/tools/media.ts +23 -20
  301. package/src/tools/pages.ts +20 -13
  302. package/src/tools/performance.ts +101 -32
  303. package/src/tools/posts/PostHandlers.ts +23 -23
  304. package/src/tools/posts/PostToolDefinitions.ts +1 -1
  305. package/src/tools/posts/index.ts +2 -2
  306. package/src/tools/seo/BulkOperations.ts +557 -0
  307. package/src/tools/seo/SEOHandlers.ts +296 -0
  308. package/src/tools/seo/SEOToolDefinitions.ts +402 -0
  309. package/src/tools/seo/SEOTools.ts +871 -0
  310. package/src/tools/seo/analyzers/ContentAnalyzer.ts +493 -0
  311. package/src/tools/seo/auditors/SiteAuditor.ts +787 -0
  312. package/src/tools/seo/generators/MetaGenerator.ts +694 -0
  313. package/src/tools/seo/generators/SchemaGenerator.ts +955 -0
  314. package/src/tools/seo/index.ts +47 -0
  315. package/src/tools/seo/optimizers/InternalLinkingSuggester.ts +934 -0
  316. package/src/tools/site.ts +27 -26
  317. package/src/tools/taxonomies.ts +29 -25
  318. package/src/tools/users.ts +20 -13
  319. package/src/types/client.ts +8 -6
  320. package/src/types/seo.ts +546 -0
  321. package/src/utils/enhancedError.ts +1 -1
  322. package/src/utils/error.ts +1 -2
  323. package/src/utils/index.ts +23 -0
  324. package/src/utils/logger.ts +3 -3
  325. package/src/utils/toolWrapper.ts +10 -10
  326. package/src/utils/validation/core.ts +2 -2
  327. package/src/utils/validation/index.ts +2 -2
  328. package/src/utils/validation/network.ts +5 -5
  329. package/src/utils/validation/rateLimit.ts +1 -1
  330. package/src/utils/validation/security.ts +1 -1
  331. package/src/utils/validation/wordpress.ts +1 -1
  332. package/src/utils/version.ts +402 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SEOTools.js","sourceRoot":"","sources":["../../../src/tools/seo/SEOTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Content Analyzer for SEO
3
+ *
4
+ * Analyzes WordPress content for SEO optimization opportunities including
5
+ * readability scoring, keyword analysis, content structure evaluation,
6
+ * and technical SEO factors.
7
+ *
8
+ * @since 2.7.0
9
+ */
10
+ import type { WordPressPost } from "../../../types/wordpress.js";
11
+ import type { SEOAnalysisResult, SEOToolParams } from "../../../types/seo.js";
12
+ /**
13
+ * Content analyzer for SEO evaluation
14
+ */
15
+ export declare class ContentAnalyzer {
16
+ private logger;
17
+ private config;
18
+ /**
19
+ * Analyze post content for SEO factors
20
+ *
21
+ * @param post - WordPress post data
22
+ * @param params - Analysis parameters
23
+ * @returns Comprehensive SEO analysis
24
+ */
25
+ analyzePost(post: WordPressPost, params: SEOToolParams): Promise<SEOAnalysisResult>;
26
+ /**
27
+ * Extract text content from WordPress post
28
+ *
29
+ * @param post - WordPress post
30
+ * @returns Combined content string
31
+ * @private
32
+ */
33
+ private extractContent;
34
+ /**
35
+ * Strip HTML tags and return plain text
36
+ *
37
+ * @param html - HTML content
38
+ * @returns Plain text
39
+ * @private
40
+ */
41
+ private stripHtml;
42
+ /**
43
+ * Calculate comprehensive content metrics
44
+ *
45
+ * @param plainText - Plain text content
46
+ * @param htmlContent - Original HTML content
47
+ * @param params - Analysis parameters
48
+ * @returns SEO metrics
49
+ * @private
50
+ */
51
+ private calculateMetrics;
52
+ /**
53
+ * Generate SEO recommendations based on analysis
54
+ *
55
+ * @param post - WordPress post
56
+ * @param metrics - Calculated metrics
57
+ * @param params - Analysis parameters
58
+ * @returns Array of recommendations
59
+ * @private
60
+ */
61
+ private generateRecommendations;
62
+ /**
63
+ * Analyze focus keyword usage
64
+ *
65
+ * @param plainText - Plain text content
66
+ * @param keyword - Focus keyword
67
+ * @returns Keyword analysis
68
+ * @private
69
+ */
70
+ private analyzeKeywords;
71
+ /**
72
+ * Analyze content structure
73
+ *
74
+ * @param htmlContent - HTML content
75
+ * @returns Structure analysis
76
+ * @private
77
+ */
78
+ private analyzeStructure;
79
+ private getWords;
80
+ private getSentences;
81
+ private countSyllables;
82
+ private calculateFleschReadingEase;
83
+ private calculateFleschKincaidGrade;
84
+ private calculateKeywordDensity;
85
+ private countHeadings;
86
+ private countLinks;
87
+ private countImages;
88
+ private findSemanticKeywords;
89
+ private checkHeadingHierarchy;
90
+ private getCurrentDomain;
91
+ private calculateOverallScore;
92
+ private getScoreStatus;
93
+ }
94
+ //# sourceMappingURL=ContentAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/tools/seo/analyzers/ContentAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAiC,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE7G;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,MAAM,CAAkC;IAEhD;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqCzF;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAYjB;;;;;;;;OAQG;YACW,gBAAgB;IAuC9B;;;;;;;;OAQG;YACW,uBAAuB;IAgGrC;;;;;;;OAOG;YACW,eAAe;IAmC7B;;;;;;OAMG;YACW,gBAAgB;IAiC9B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,cAAc;CAMvB"}
@@ -0,0 +1,402 @@
1
+ /**
2
+ * Content Analyzer for SEO
3
+ *
4
+ * Analyzes WordPress content for SEO optimization opportunities including
5
+ * readability scoring, keyword analysis, content structure evaluation,
6
+ * and technical SEO factors.
7
+ *
8
+ * @since 2.7.0
9
+ */
10
+ import { LoggerFactory } from "../../../utils/logger.js";
11
+ import { Config } from "../../../config/Config.js";
12
+ /**
13
+ * Content analyzer for SEO evaluation
14
+ */
15
+ export class ContentAnalyzer {
16
+ logger = LoggerFactory.tool("content_analyzer");
17
+ config = Config.getInstance().get().seo;
18
+ /**
19
+ * Analyze post content for SEO factors
20
+ *
21
+ * @param post - WordPress post data
22
+ * @param params - Analysis parameters
23
+ * @returns Comprehensive SEO analysis
24
+ */
25
+ async analyzePost(post, params) {
26
+ const siteLogger = LoggerFactory.tool("seo_analyze_content", params.site);
27
+ return await siteLogger.time("Content SEO analysis", async () => {
28
+ // Extract content for analysis
29
+ const content = this.extractContent(post);
30
+ const plainText = this.stripHtml(content);
31
+ // Perform various analyses
32
+ const metrics = await this.calculateMetrics(plainText, content, params);
33
+ const recommendations = await this.generateRecommendations(post, metrics, params);
34
+ const keywordAnalysis = params.focusKeywords?.length
35
+ ? await this.analyzeKeywords(plainText, params.focusKeywords[0])
36
+ : undefined;
37
+ const structure = await this.analyzeStructure(content);
38
+ // Calculate overall SEO score
39
+ const score = this.calculateOverallScore(metrics, recommendations);
40
+ const status = this.getScoreStatus(score);
41
+ const result = {
42
+ score,
43
+ status,
44
+ metrics,
45
+ recommendations,
46
+ structure,
47
+ analyzedAt: new Date().toISOString(),
48
+ };
49
+ if (keywordAnalysis) {
50
+ result.keywordAnalysis = keywordAnalysis;
51
+ }
52
+ return result;
53
+ });
54
+ }
55
+ /**
56
+ * Extract text content from WordPress post
57
+ *
58
+ * @param post - WordPress post
59
+ * @returns Combined content string
60
+ * @private
61
+ */
62
+ extractContent(post) {
63
+ const titleContent = typeof post.title === "object" ? post.title.rendered : post.title || "";
64
+ const bodyContent = typeof post.content === "object" ? post.content.rendered : post.content || "";
65
+ const excerptContent = typeof post.excerpt === "object" ? post.excerpt.rendered : post.excerpt || "";
66
+ return `${titleContent} ${bodyContent} ${excerptContent}`.trim();
67
+ }
68
+ /**
69
+ * Strip HTML tags and return plain text
70
+ *
71
+ * @param html - HTML content
72
+ * @returns Plain text
73
+ * @private
74
+ */
75
+ stripHtml(html) {
76
+ // Remove HTML tags, scripts, and styles
77
+ return html
78
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "")
79
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "")
80
+ .replace(/<[^>]*>/g, "")
81
+ .replace(/&nbsp;/g, " ")
82
+ .replace(/&[#\w]+;/g, "")
83
+ .replace(/\s+/g, " ")
84
+ .trim();
85
+ }
86
+ /**
87
+ * Calculate comprehensive content metrics
88
+ *
89
+ * @param plainText - Plain text content
90
+ * @param htmlContent - Original HTML content
91
+ * @param params - Analysis parameters
92
+ * @returns SEO metrics
93
+ * @private
94
+ */
95
+ async calculateMetrics(plainText, htmlContent, params) {
96
+ const words = this.getWords(plainText);
97
+ const sentences = this.getSentences(plainText);
98
+ const syllables = this.countSyllables(plainText);
99
+ // Calculate readability scores
100
+ const avgWordsPerSentence = words.length / Math.max(sentences.length, 1);
101
+ const avgSyllablesPerWord = syllables / Math.max(words.length, 1);
102
+ const fleschReadingEase = this.calculateFleschReadingEase(avgWordsPerSentence, avgSyllablesPerWord);
103
+ const fleschKincaidGrade = this.calculateFleschKincaidGrade(avgWordsPerSentence, avgSyllablesPerWord);
104
+ // Keyword density for focus keyword
105
+ const keywordDensity = params.focusKeywords?.length
106
+ ? this.calculateKeywordDensity(plainText, params.focusKeywords[0])
107
+ : 0;
108
+ // HTML structure analysis
109
+ const headings = this.countHeadings(htmlContent);
110
+ const links = this.countLinks(htmlContent);
111
+ const images = this.countImages(htmlContent);
112
+ return {
113
+ wordCount: words.length,
114
+ avgWordsPerSentence,
115
+ avgSyllablesPerWord,
116
+ fleschReadingEase,
117
+ fleschKincaidGrade,
118
+ keywordDensity,
119
+ headingCount: headings.total,
120
+ internalLinkCount: links.internal,
121
+ externalLinkCount: links.external,
122
+ imageCount: images.total,
123
+ imagesWithAltText: images.withAlt,
124
+ readingTime: Math.ceil(words.length / 200), // Assume 200 WPM reading speed
125
+ };
126
+ }
127
+ /**
128
+ * Generate SEO recommendations based on analysis
129
+ *
130
+ * @param post - WordPress post
131
+ * @param metrics - Calculated metrics
132
+ * @param params - Analysis parameters
133
+ * @returns Array of recommendations
134
+ * @private
135
+ */
136
+ async generateRecommendations(post, metrics, params) {
137
+ const recommendations = [];
138
+ // Word count recommendations
139
+ if (metrics.wordCount < this.config.analysis.minWordCount) {
140
+ recommendations.push({
141
+ type: "content",
142
+ priority: "high",
143
+ message: `Content is too short (${metrics.wordCount} words). Aim for at least ${this.config.analysis.minWordCount} words for better SEO.`,
144
+ impact: 80,
145
+ autoFixAvailable: false,
146
+ helpUrl: "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
147
+ });
148
+ }
149
+ // Readability recommendations
150
+ if (metrics.fleschReadingEase < this.config.analysis.minReadabilityScore) {
151
+ recommendations.push({
152
+ type: "content",
153
+ priority: "medium",
154
+ message: `Content readability is low (${metrics.fleschReadingEase.toFixed(1)}). Consider using shorter sentences and simpler words.`,
155
+ impact: 60,
156
+ autoFixAvailable: false,
157
+ suggestedFix: "Break up long sentences and use more common vocabulary.",
158
+ });
159
+ }
160
+ // Keyword density recommendations
161
+ if (params.focusKeywords?.length) {
162
+ const targetDensity = this.config.analysis.targetKeywordDensity;
163
+ const maxDensity = this.config.analysis.maxKeywordDensity;
164
+ if (metrics.keywordDensity < targetDensity) {
165
+ recommendations.push({
166
+ type: "keyword",
167
+ priority: "medium",
168
+ message: `Focus keyword density is low (${metrics.keywordDensity.toFixed(1)}%). Consider adding the keyword "${params.focusKeywords[0]}" more naturally throughout the content.`,
169
+ impact: 70,
170
+ autoFixAvailable: false,
171
+ });
172
+ }
173
+ else if (metrics.keywordDensity > maxDensity) {
174
+ recommendations.push({
175
+ type: "keyword",
176
+ priority: "medium",
177
+ message: `Focus keyword density is too high (${metrics.keywordDensity.toFixed(1)}%). This might be considered keyword stuffing.`,
178
+ impact: 75,
179
+ autoFixAvailable: false,
180
+ suggestedFix: `Reduce keyword usage to around ${targetDensity}%`,
181
+ });
182
+ }
183
+ }
184
+ // Image recommendations
185
+ if (metrics.imageCount > 0 && metrics.imagesWithAltText < metrics.imageCount) {
186
+ const missingAlt = metrics.imageCount - metrics.imagesWithAltText;
187
+ recommendations.push({
188
+ type: "technical",
189
+ priority: "high",
190
+ message: `${missingAlt} image(s) missing alt text. Alt text improves accessibility and SEO.`,
191
+ impact: 85,
192
+ autoFixAvailable: false,
193
+ suggestedFix: "Add descriptive alt text to all images",
194
+ });
195
+ }
196
+ // Heading structure recommendations
197
+ if (metrics.headingCount === 0) {
198
+ recommendations.push({
199
+ type: "structure",
200
+ priority: "high",
201
+ message: "No headings found. Use H1-H6 tags to structure your content.",
202
+ impact: 90,
203
+ autoFixAvailable: false,
204
+ suggestedFix: "Add at least one H1 heading and use H2-H6 for subheadings",
205
+ });
206
+ }
207
+ // Internal linking recommendations
208
+ if (metrics.internalLinkCount === 0) {
209
+ recommendations.push({
210
+ type: "structure",
211
+ priority: "medium",
212
+ message: "No internal links found. Internal linking helps with site navigation and SEO.",
213
+ impact: 65,
214
+ autoFixAvailable: false,
215
+ suggestedFix: "Add 2-3 relevant internal links to other pages on your site",
216
+ });
217
+ }
218
+ return recommendations;
219
+ }
220
+ /**
221
+ * Analyze focus keyword usage
222
+ *
223
+ * @param plainText - Plain text content
224
+ * @param keyword - Focus keyword
225
+ * @returns Keyword analysis
226
+ * @private
227
+ */
228
+ async analyzeKeywords(plainText, keyword) {
229
+ const lowerText = plainText.toLowerCase();
230
+ const lowerKeyword = keyword.toLowerCase();
231
+ const words = this.getWords(plainText);
232
+ // Count exact keyword occurrences
233
+ const keywordRegex = new RegExp(`\\b${lowerKeyword.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`, "gi");
234
+ const matches = lowerText.match(keywordRegex) || [];
235
+ const occurrences = matches.length;
236
+ // Calculate keyword density
237
+ const density = (occurrences / words.length) * 100;
238
+ // Find semantic keywords (simple implementation)
239
+ const semanticKeywords = this.findSemanticKeywords(plainText, keyword);
240
+ return {
241
+ primaryKeyword: keyword,
242
+ keywordFound: occurrences > 0,
243
+ occurrences,
244
+ density,
245
+ semanticKeywords,
246
+ };
247
+ }
248
+ /**
249
+ * Analyze content structure
250
+ *
251
+ * @param htmlContent - HTML content
252
+ * @returns Structure analysis
253
+ * @private
254
+ */
255
+ async analyzeStructure(htmlContent) {
256
+ const h1Match = htmlContent.match(/<h1[^>]*>(.*?)<\/h1>/i);
257
+ const h1Text = h1Match ? this.stripHtml(h1Match[1]) : "";
258
+ const hasH1 = Boolean(h1Match);
259
+ // Check heading hierarchy (simplified)
260
+ const headingHierarchy = this.checkHeadingHierarchy(htmlContent);
261
+ // Analyze paragraphs
262
+ const paragraphs = htmlContent.match(/<p[^>]*>[\s\S]*?<\/p>/gi) || [];
263
+ const paragraphTexts = paragraphs.map((p) => this.stripHtml(p)).filter((text) => text.trim().length > 0);
264
+ const avgParagraphLength = paragraphTexts.length > 0
265
+ ? paragraphTexts.reduce((sum, text) => sum + this.getWords(text).length, 0) / paragraphTexts.length
266
+ : 0;
267
+ return {
268
+ hasH1,
269
+ h1Text,
270
+ headingHierarchy,
271
+ paragraphCount: paragraphTexts.length,
272
+ avgParagraphLength,
273
+ };
274
+ }
275
+ // Helper methods
276
+ getWords(text) {
277
+ return text.toLowerCase().match(/\b\w+\b/g) || [];
278
+ }
279
+ getSentences(text) {
280
+ return text.split(/[.!?]+/).filter((s) => s.trim().length > 0);
281
+ }
282
+ countSyllables(text) {
283
+ const words = this.getWords(text);
284
+ return words.reduce((total, word) => {
285
+ // Simple syllable counting heuristic
286
+ const vowels = word.match(/[aeiouy]+/g);
287
+ let count = vowels ? vowels.length : 0;
288
+ if (word.endsWith("e"))
289
+ count--;
290
+ return total + Math.max(1, count);
291
+ }, 0);
292
+ }
293
+ calculateFleschReadingEase(avgWordsPerSentence, avgSyllablesPerWord) {
294
+ return 206.835 - 1.015 * avgWordsPerSentence - 84.6 * avgSyllablesPerWord;
295
+ }
296
+ calculateFleschKincaidGrade(avgWordsPerSentence, avgSyllablesPerWord) {
297
+ return 0.39 * avgWordsPerSentence + 11.8 * avgSyllablesPerWord - 15.59;
298
+ }
299
+ calculateKeywordDensity(text, keyword) {
300
+ const words = this.getWords(text);
301
+ const keywordWords = this.getWords(keyword.toLowerCase());
302
+ if (words.length === 0 || keywordWords.length === 0)
303
+ return 0;
304
+ // Count occurrences of the exact keyword phrase
305
+ const textString = words.join(" ");
306
+ const keywordString = keywordWords.join(" ");
307
+ const regex = new RegExp(keywordString.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "gi");
308
+ const matches = textString.match(regex) || [];
309
+ return (matches.length / words.length) * 100;
310
+ }
311
+ countHeadings(htmlContent) {
312
+ const byLevel = {};
313
+ let total = 0;
314
+ for (let i = 1; i <= 6; i++) {
315
+ const regex = new RegExp(`<h${i}[^>]*>.*?</h${i}>`, "gi");
316
+ const matches = htmlContent.match(regex) || [];
317
+ byLevel[`h${i}`] = matches.length;
318
+ total += matches.length;
319
+ }
320
+ return { total, byLevel };
321
+ }
322
+ countLinks(htmlContent) {
323
+ const linkRegex = /<a[^>]+href=["']([^"']+)["'][^>]*>/gi;
324
+ const links = [];
325
+ let match;
326
+ while ((match = linkRegex.exec(htmlContent)) !== null) {
327
+ links.push(match[1]);
328
+ }
329
+ const internal = links.filter((href) => href.startsWith("/") || href.startsWith("#") || href.includes(this.getCurrentDomain())).length;
330
+ const external = links.length - internal;
331
+ return { internal, external, total: links.length };
332
+ }
333
+ countImages(htmlContent) {
334
+ const imageRegex = /<img[^>]*>/gi;
335
+ const images = htmlContent.match(imageRegex) || [];
336
+ const withAlt = images.filter((img) => /alt\s*=\s*["'][^"']+["']/i.test(img)).length;
337
+ return { total: images.length, withAlt };
338
+ }
339
+ findSemanticKeywords(text, mainKeyword) {
340
+ // Simple semantic keyword detection
341
+ // In a real implementation, this would use NLP libraries or APIs
342
+ const _words = this.getWords(text);
343
+ const _mainKeywordWords = this.getWords(mainKeyword.toLowerCase());
344
+ // Find words that commonly appear with the main keyword
345
+ const semanticKeywords = [];
346
+ // This is a simplified implementation
347
+ // Real semantic analysis would use word embeddings, LSI, or similar techniques
348
+ return semanticKeywords.slice(0, 10); // Return top 10 semantic keywords
349
+ }
350
+ checkHeadingHierarchy(htmlContent) {
351
+ const headingMatches = htmlContent.match(/<h([1-6])[^>]*>/gi);
352
+ if (!headingMatches)
353
+ return true;
354
+ const levels = headingMatches.map((match) => {
355
+ const levelMatch = match.match(/<h([1-6])/i);
356
+ return levelMatch ? parseInt(levelMatch[1]) : 0;
357
+ });
358
+ // Check if headings follow proper hierarchy (no skipping levels)
359
+ let currentLevel = 0;
360
+ for (const level of levels) {
361
+ if (level > currentLevel + 1) {
362
+ return false; // Skipped a level
363
+ }
364
+ currentLevel = Math.max(currentLevel, level);
365
+ }
366
+ return true;
367
+ }
368
+ getCurrentDomain() {
369
+ // This would need to be determined from the WordPress site URL
370
+ // For testing purposes, return a default domain
371
+ return "localhost";
372
+ }
373
+ calculateOverallScore(metrics, recommendations) {
374
+ let score = 100;
375
+ // Deduct points for each recommendation based on impact
376
+ for (const rec of recommendations) {
377
+ const deduction = rec.impact * 0.3; // Scale impact to reasonable deduction
378
+ score -= deduction;
379
+ }
380
+ // Bonus points for good metrics
381
+ if (metrics.wordCount >= this.config.analysis.minWordCount) {
382
+ score += 5;
383
+ }
384
+ if (metrics.fleschReadingEase >= this.config.analysis.minReadabilityScore) {
385
+ score += 5;
386
+ }
387
+ if (metrics.imagesWithAltText === metrics.imageCount && metrics.imageCount > 0) {
388
+ score += 5;
389
+ }
390
+ return Math.max(0, Math.min(100, Math.round(score)));
391
+ }
392
+ getScoreStatus(score) {
393
+ if (score >= 90)
394
+ return "excellent";
395
+ if (score >= 70)
396
+ return "good";
397
+ if (score >= 50)
398
+ return "needs-improvement";
399
+ return "poor";
400
+ }
401
+ }
402
+ //# sourceMappingURL=ContentAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentAnalyzer.js","sourceRoot":"","sources":["../../../../src/tools/seo/analyzers/ContentAnalyzer.ts"],"names":[],"mappings":"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"}