Releases: CyberCraftBD/power-seo
Release list
Release v1.0.19
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.19] - 2026-07-27
Fixed
@power-seo/core—countKeywordOccurrences(used bycalculateKeywordDensityandanalyzeKeyphraseOccurrences) still used ASCII\bword boundaries, so non-Latin keyphrases (e.g. Bangla) and keyphrases with non-word edges (C++,C#,.NET) counted as zero — producing a false "keyphrase density 0% / keyword never used" report. It now uses lookaround boundaries on letter/number classes (completing #158) (#169).@power-seo/core—analyzeKeyphraseOccurrences().densityno longer multiplies by the keyphrase word count; it now matches the documented/testedcalculateKeywordDensitydefinition (occurrences ÷ total words), so the same keyphrase no longer reports two different densities (#170).@power-seo/content-analysis—keyphrase-introductiondefines the introduction as the first ~150 words of plain text instead of only the first<p>element, so intros not wrapped in<p>(e.g. a leading<div>) are no longer reported as missing the keyphrase (#171).@power-seo/content-analysis—subheading-distributionno longer reports "no subheadings" when a single<h2>leads the content, and no longer counts a heading's own words toward the following section's length (a 298-word section under a 3-word heading was falsely flagged as exceeding 300 words) (#172).@power-seo/content-analysis—keyphrase-markupcounts nested emphasis once: a keyphrase in<strong><em>…</em></strong>was counted per wrapping tag, producing impossible "emphasized 2 of 1" output and false "over-emphasized / keyword stuffing" reports. A single backreferenced scan now consumes inner tags (#173).@power-seo/content-analysis—keyphrase-slugmatches each keyphrase word against whole slug tokens instead of substrings, so "seo" no longer counts as present in a slug likeseason-guide(#174).@power-seo/content-analysis—single-h1treats the page title as an implicit H1 (like the heading-structure check), so a body that already contains its own<h1>plus the CMS title is correctly flagged as duplicate H1s instead of "single H1, good" (#175).@power-seo/content-analysis—detectIntentwith an editor-selectedexpectedIntentoverride no longer injects a confidence of100on the 0–1 scale or duplicates the same-type intent signal, fixing the "10000%" confidence display and the spurious "informational vs informational competing intents" warning.
[1.0.17] - 2026-07-23
Fixed
@power-seo/core—stripHtmlno longer truncates all remaining text when a<script>/<style>tag has no closing tag (only the opening tag is removed), fixing silent content loss for checks that re-strip entity-decoded prose mentioning<script>(#148). Inline tags (<b>,<em>,<a>,<code>, …) no longer insert a space when stripped, so keyphrases spanning inline formatting match again and word counts are accurate; block tags still separate words (#157).@power-seo/core—getParagraphsno longer deletes content between the first and last<br>on a line (only two consecutive<br>s act as a separator), splits on all block-level closers (</ul>,</ol>,</table>,</figure>,</blockquote>, headings) instead of only</p>, and excludes<pre>blocks from paragraph analysis (#150, #160).@power-seo/core— Keyphrases with non-word edges ("C++", "C#", ".NET") now match: keyword occurrence/density regexes use lookaround boundaries instead of\b(#158).extractTagContents('p')no longer matches<pre>/<picture>as paragraph openers (#162). Sentence splitting no longer breaks after common abbreviations (e.g., i.e., etc., vs., Mr., Dr.) (#165).ensureTrailingSlashno longer produces a double slash on bare domains (#167).@power-seo/readability— Passive-voice detection requires an actual past participle (curated irregular list + suffix rule) instead of any word ending in t/en/ed, and the percentage is computed per sentence and clamped to 100 (#156). Transition words are matched with word boundaries, so "distillery"/"tribute" no longer count (#163). ARI and Coleman-Liau count letters and digits only (spaces/punctuation no longer inflate grades by ~5 levels), and Flesch/FKG are computed from raw ratios instead of pre-rounded averages (#165).<pre>/<code>content is excluded from all readability statistics (#151).@power-seo/content-analysis— Bare keyphrases are no longer classified navigational by insertion order: intent defaults to informational unless real navigational modifiers are present, which also removes fabricated "competing intents" warnings for short keyphrases (#149, #167). Thelocalsub-type no longer triggers on any keyphrase containing "in" (#163).@power-seo/content-analysis— FAQ/PAA question detection requires a real question (ends with?or starts with an interrogative); answer paragraphs are searched only within the question's own section, so declarative headings with an unrelated trailing paragraph no longer score full AEO Q&A points (#155). TL;DR detection requires the bullet list to follow the summary heading within its section, and the heading must be a real summary title (#163).@power-seo/content-analysis— Stateful/gregexes used with.test()were made non-global in YMYL disclaimer, affiliate-link, and References-section detection, eliminating flip-flopping results between identical calls and within-call affiliate undercounting (#154).@power-seo/content-analysis— YMYL detection requires two distinct category terms, matchescontentCategoryby exact token (a "Newsletter" category no longer triggers news, "syntax" no longer triggers tax), and phrase-ifies over-broad terms like "recall"; shared detection lives inshared-ymyl.ts(#159).@power-seo/content-analysis— "ad hoc" no longer counts as an FTC disclosure and#ad/#sponsoredhashtags are matched correctly (#163); "paragraph"/"photography" no longer count as charts in original-research detection (#163); CTA-intent alignment scans link and button text instead of all prose, so "Open Graph" in body copy no longer registers as a navigational CTA (#163); sentence-initial "According to Jane Doe" is detected,<cite>/<figcaption>containing nested markup are counted, and the expert-consensus source type is no longer dead code (#164).@power-seo/content-analysis— Link parsing no longer drops hrefs containing#fragments (external/internal/nofollow/competing link checks now see them) (#161). Table-of-contents detection requires ≥2 anchor links inside one list instead of matching any list plus any later anchor in the document (#166).@power-seo/content-analysis—intent-related-coveragereturnsnafor unrecognized keyphrase shapes instead of a dead-end 0/5 and adds checklist/tips/examples/tutorial mappings;secondary-keyphrasesreturnsnawhen no seeds are configured;intent-depth-matchenforces documented upper bounds for informational/commercial content;single-h1no longer penalizes body content that starts at H2 when the page title serves as the H1; author-schema descriptions report a consistent field count; the E-E-A-T overall score is graded from pillar points instead of flat tiers, removing multi-point cliffs; future publish/modified dates no longer earn freshness credit (#167).
[1.0.16] - 2026-07-20
Security
@power-seo/redirects— Open-redirect guard (#129). Resolved destinations are now validated before use:javascript:,data:,vbscript:, andfile:schemes are always rejected; destinations that become off-origin through wildcard/param/regex substitution (//host,\\host, anyscheme:prefix — including single-slash forms likehttps:/hostthat browsers normalize to absolute URLs) are rejected unless the rule's own destination template is external orallowExternalRedirectsis enabled.@power-seo/schema+@power-seo/react— JSON-LD XSS hardening (#124, #125, #136, #146). All JSON-LD React components and theBreadcrumbcomponent serialize through the shared escaping serializer (<,>,&, plus the U+2028/U+2029 line separators) closing</script>-injection vectors.@power-seo/integrations+@power-seo/search-console— Upstream API response bodies are sanitized (secrets redacted, truncated to 200 chars) before appearing in thrown error messages (#130).@power-seo/tracking— Analytics script builders validate GA4/Clarity/PostHog IDs against strict allow-lists and reject any PostHoghostthat is not a bare http(s) origin, preventing XSS breakout from inlinedangerouslySetInnerHTMLscripts (#139).
Fixed
@power-seo/meta—createMetadata()no longer clobbersmetadata.otherwhen both advanced robots directives andadditionalMetaTagsare used; entries are merged (#133).@power-seo/meta+@power-seo/core—createMetadata()andbuildMetaTags()now deriveog:title/og:description/og:urlandtwitter:title/twitter:descriptionfrom top-leveltitle/description/canonicalwhen not explicitly set, so social cards are complete by default (#134). ExplicitopenGraph/twittervalues still take precedence.@power-seo/content-analysis— Content freshness no longer uses a hardcoded "now"; the current date is injected (overridable viaoptions.now) (#127).@power-seo/content-analysis— Media count no longer double-counts video iframes and no longer counts raw video URLs in text as embeds (#121).@power-seo/content-analysis— Transition-word thresholds now come from sharedREADABILITYconstants, matching@power-seo/readability(#122).- **`@po...
v1.0.18 — expectedIntent override + diminishing returns for repeated signals (#152)
Release 1.0.18
Two content-scoring improvements. All 17 @power-seo/* packages are published together at 1.0.18.
Editor-selected target intent (expectedIntent)
analyzeContent() now accepts an optional expectedIntent input:
analyzeContent({
content,
focusKeyphrase,
expectedIntent: 'commercial', // 'informational' | 'navigational' | 'transactional' | 'commercial' | 'commercial-investigation'
});When set, every intent-aware check scores the content against the selected
intent instead of auto-detecting it from the focus keyphrase. This lets an
editor who knows a page's job — a pricing page whose keyphrase happens to read
"informational", for example — override the classification so the Intent and
E-E-A-T tabs score against reality. 'commercial' is accepted as an alias for
'commercial-investigation'.
detectIntent, ExpectedIntent, IntentType, and IntentResult are now
exported from @power-seo/content-analysis, so UIs can show auto-detected vs.
target intent side by side.
Diminishing returns for repeated signal phrases (fixes #152)
Previously, E-E-A-T and AEO checks counted every regex match at full value, so
repeating an exact trigger phrase ("I recommend" ×10) scored the same as ten
genuinely varied signals — the checks were trivially gameable by phrase
stuffing.
@power-seo/core gains countEffectiveMatches(): each distinct matched
phrase earns full credit once, and identical repeats earn log₂-scaled credit
(1 + log2(n)), so ten copies of one phrase are worth ~4.3 instead of 10.
Identical phrases matched by more than one pattern are merged, which also
removes same-phrase double-dipping within a check.
Applied to the three checks named in the issue:
eeat-experience-depth— density tier now uses effective (repetition-discounted) markers; descriptions note "N raw, M after repetition discounting".eeat-methodology-transparency— tier thresholds use effective matches.aeo-fact-density— the same fact repeated no longer counts as multiple facts.
Ten varied experience markers now strictly outscore one marker repeated ten
times, and pasting a trigger-phrase list can no longer buy the top tier. The
deterministic, explainable design is unchanged — only repetition is discounted.
Quality
- 6 new regression tests; 432 tests passing in
@power-seo/content-analysis. - All 17 packages build clean and are version-aligned at 1.0.18.
v1.0.17 — Analyzer correctness: 20 verified scoring bugs fixed (#148–#167)
Fixed
@power-seo/core—stripHtmlno longer truncates all remaining text when a<script>/<style>tag has no closing tag (only the opening tag is removed), fixing silent content loss for checks that re-strip entity-decoded prose mentioning<script>(#148). Inline tags (<b>,<em>,<a>,<code>, …) no longer insert a space when stripped, so keyphrases spanning inline formatting match again and word counts are accurate; block tags still separate words (#157).@power-seo/core—getParagraphsno longer deletes content between the first and last<br>on a line (only two consecutive<br>s act as a separator), splits on all block-level closers (</ul>,</ol>,</table>,</figure>,</blockquote>, headings) instead of only</p>, and excludes<pre>blocks from paragraph analysis (#150, #160).@power-seo/core— Keyphrases with non-word edges ("C++", "C#", ".NET") now match: keyword occurrence/density regexes use lookaround boundaries instead of\b(#158).extractTagContents('p')no longer matches<pre>/<picture>as paragraph openers (#162). Sentence splitting no longer breaks after common abbreviations (e.g., i.e., etc., vs., Mr., Dr.) (#165).ensureTrailingSlashno longer produces a double slash on bare domains (#167).@power-seo/readability— Passive-voice detection requires an actual past participle (curated irregular list + suffix rule) instead of any word ending in t/en/ed, and the percentage is computed per sentence and clamped to 100 (#156). Transition words are matched with word boundaries, so "distillery"/"tribute" no longer count (#163). ARI and Coleman-Liau count letters and digits only (spaces/punctuation no longer inflate grades by ~5 levels), and Flesch/FKG are computed from raw ratios instead of pre-rounded averages (#165).<pre>/<code>content is excluded from all readability statistics (#151).@power-seo/content-analysis— Bare keyphrases are no longer classified navigational by insertion order: intent defaults to informational unless real navigational modifiers are present, which also removes fabricated "competing intents" warnings for short keyphrases (#149, #167). Thelocalsub-type no longer triggers on any keyphrase containing "in" (#163).@power-seo/content-analysis— FAQ/PAA question detection requires a real question (ends with?or starts with an interrogative); answer paragraphs are searched only within the question's own section, so declarative headings with an unrelated trailing paragraph no longer score full AEO Q&A points (#155). TL;DR detection requires the bullet list to follow the summary heading within its section, and the heading must be a real summary title (#163).@power-seo/content-analysis— Stateful/gregexes used with.test()were made non-global in YMYL disclaimer, affiliate-link, and References-section detection, eliminating flip-flopping results between identical calls and within-call affiliate undercounting (#154).@power-seo/content-analysis— YMYL detection requires two distinct category terms, matchescontentCategoryby exact token (a "Newsletter" category no longer triggers news, "syntax" no longer triggers tax), and phrase-ifies over-broad terms like "recall"; shared detection lives inshared-ymyl.ts(#159).@power-seo/content-analysis— "ad hoc" no longer counts as an FTC disclosure and#ad/#sponsoredhashtags are matched correctly (#163); "paragraph"/"photography" no longer count as charts in original-research detection (#163); CTA-intent alignment scans link and button text instead of all prose, so "Open Graph" in body copy no longer registers as a navigational CTA (#163); sentence-initial "According to Jane Doe" is detected,<cite>/<figcaption>containing nested markup are counted, and the expert-consensus source type is no longer dead code (#164).@power-seo/content-analysis— Link parsing no longer drops hrefs containing#fragments (external/internal/nofollow/competing link checks now see them) (#161). Table-of-contents detection requires ≥2 anchor links inside one list instead of matching any list plus any later anchor in the document (#166).@power-seo/content-analysis—intent-related-coveragereturnsnafor unrecognized keyphrase shapes instead of a dead-end 0/5 and adds checklist/tips/examples/tutorial mappings;secondary-keyphrasesreturnsnawhen no seeds are configured;intent-depth-matchenforces documented upper bounds for informational/commercial content;single-h1no longer penalizes body content that starts at H2 when the page title serves as the H1; author-schema descriptions report a consistent field count; the E-E-A-T overall score is graded from pillar points instead of flat tiers, removing multi-point cliffs; future publish/modified dates no longer earn freshness credit (#167).
v1.0.16 — Security hardening and correctness fixes (#121–#146)
Security
@power-seo/redirects— Open-redirect guard (#129). Resolved destinations are now validated before use:javascript:,data:,vbscript:, andfile:schemes are always rejected; destinations that become off-origin through wildcard/param/regex substitution (//host,\\host, anyscheme:prefix — including single-slash forms likehttps:/hostthat browsers normalize to absolute URLs) are rejected unless the rule's own destination template is external orallowExternalRedirectsis enabled.@power-seo/schema+@power-seo/react— JSON-LD XSS hardening (#124, #125, #136, #146). All JSON-LD React components and theBreadcrumbcomponent serialize through the shared escaping serializer (<,>,&, plus the U+2028/U+2029 line separators) closing</script>-injection vectors.@power-seo/integrations+@power-seo/search-console— Upstream API response bodies are sanitized (secrets redacted, truncated to 200 chars) before appearing in thrown error messages (#130).@power-seo/tracking— Analytics script builders validate GA4/Clarity/PostHog IDs against strict allow-lists and reject any PostHoghostthat is not a bare http(s) origin, preventing XSS breakout from inlinedangerouslySetInnerHTMLscripts (#139).
Fixed
@power-seo/meta—createMetadata()no longer clobbersmetadata.otherwhen both advanced robots directives andadditionalMetaTagsare used; entries are merged (#133).@power-seo/meta+@power-seo/core—createMetadata()andbuildMetaTags()now deriveog:title/og:description/og:urlandtwitter:title/twitter:descriptionfrom top-leveltitle/description/canonicalwhen not explicitly set, so social cards are complete by default (#134). ExplicitopenGraph/twittervalues still take precedence.@power-seo/content-analysis— Content freshness no longer uses a hardcoded "now"; the current date is injected (overridable viaoptions.now) (#127).@power-seo/content-analysis— Media count no longer double-counts video iframes and no longer counts raw video URLs in text as embeds (#121).@power-seo/content-analysis— Transition-word thresholds now come from sharedREADABILITYconstants, matching@power-seo/readability(#122).@power-seo/audit— Keyphrase density thresholds now use the sharedKEYWORD_DENSITYconstants (0.5–2.5%) instead of a hardcoded 3.0% bound (#126).@power-seo/content-analysis— Overlapping regex patterns no longer inflate marker counts in E-E-A-T case-study detection; distinct match spans are merged via the newcountDistinctMatchesutility (#128).@power-seo/core— Removed dead identical-branch ternary incountSyllablessuffix handling (#132).@power-seo/core—buildMetaTagsno longer discardsnoindex/nofollowoverrides;resolveTitle/applyTitleTemplateno longer corrupt titles containing$-patterns or legitimate leading/trailing separators;stripQueryParamskeeps repeated params;calculateKeywordDensitymatches its documented metric (#135).@power-seo/schema—clean()now recurses into nested objects and arrays instead of stripping only top-levelundefined(#136).@power-seo/sitemap— Priorities are emitted without lossy rounding;toNextSitemapnormalizes relative locs against an optional hostname instead of silently dropping them;splitSitemapindex URLs are normalized to avoid double slashes (#137).@power-seo/redirects— Query strings no longer break rule matching or leak into path params;substituteParamsandmatchRegexreplace every occurrence with boundary-aware matching;toNextRedirectsperforms a real regex/wildcard → Next.js segment translation (#138).@power-seo/images—FILENAME_PATTERNno longer flags descriptive alt text like "Photo 2 dogs playing" as a raw filename (#140).@power-seo/readability—colemanLiaucounts alphabetic letters directly instead of approximating from character count, so punctuation- and digit-heavy text no longer inflates the grade (#141).@power-seo/links—findOrphanPagesretains page titles;buildLinkGraphstrips fragments and skipsmailto:/tel:links so they no longer create phantom nodes (#142).@power-seo/audit— Empty/info-only categories are excluded and category weights renormalized instead of substituting a synthetic score of 100 (#143).@power-seo/search-console—inspectUrltargets the URL Inspection endpoint instead of the v3 root;createTokenManagerresets its cache on a failed token fetch instead of caching the rejection forever (#144).@power-seo/analytics—analyzeQueryRankingsuses contiguous half-open buckets with an open-ended top bucket, so fractional GSC positions are no longer dropped (#145).
Changed
@power-seo/core— Consolidated shared utilities:escapeXml(xml-utils), HTTP retry/backoff (http-retry), JSON-LD serialization (json-ld), and pattern matching (pattern-utils) are now single-sourced in core and reused by sitemap, redirects, integrations, and search-console (#131). Word counting and sentence splitting are unified across content-analysis checks (#123).
Release v1.0.15
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.15] - 2026-04-06
Added
AEO: Answer Engine Optimization — 8 New Checks (@power-seo/content-analysis)
Answer Engine Optimization (AEO) is now a first-class scoring category. With AI Overviews appearing in 48% of all queries (Feb 2026) and Perplexity/ChatGPT routing 4.4× more converting traffic than organic search, AEO signals are critical for content discoverability in AI-driven environments.
aeo-direct-answer(maxScore: 10) — Detects definition-first openings ("X is/refers to/means…"). Definition-first openings generate up to 34× more daily AI citations vs. narrative openings.aeo-faq-section(maxScore: 10) — Counts Q&A pairs: question-phrased H2/H3 headings followed by 30–200 word answer paragraphs. FAQPage schema + FAQ section yields 2.7–3.2× higher AI Overview citation rate.aeo-fact-density(maxScore: 8) — Measures verifiable fact signals (percentages, currencies, years, study attributions, measurements) per 100 words. Princeton GEO study: adding statistics increases AI visibility by 40%.aeo-tldr-summary(maxScore: 7) — Detects TL;DR / Key Takeaways / summary sections with structured bullet lists. Summary blocks receive 2.1× more AI citations (Moz AI Content Study, 2025).aeo-concise-answers(maxScore: 7) — Checks that question headings are followed by concise 40–120 word answer paragraphs. Perplexity AI study: 40–60 word answers under question headings generate 220% more citations.aeo-structured-data-hints(maxScore: 7) — Detects structured content patterns: tables, numbered step-by-step processes, comparison sections, how-to ordered lists. AI engines extract structured content 3.8× more often than prose (SurferSEO, Q4 2025).aeo-citation-readiness(maxScore: 8) — Measures citation signals: external source links, attribution phrases ("according to…"), footnotes, and a Sources/References section. BrightEdge 2025: cited pages have 3.1× more external references.aeo-entity-coverage(maxScore: 9) — Estimates named entity density (proper nouns, brands, technologies, people, standards). Target: 15–25 entities per 1,000 words. Kalicube AEO study: 15+ entities/1,000 words = 4.8× higher AI engine selection rate.
New CheckId Union Types
- Added 8 new AEO check IDs to the
CheckIdunion type intypes.ts - Full TypeScript type safety and
disabledChecksconfig support for all AEO checks
Changed
SEO Score Weight Rebalancing (@power-seo/content-analysis)
Weights revised based on 2026 ranking factor research: Google Content Warehouse API Leak (2024), NavBoost signals confirmed in DOJ antitrust trial, First Page Sage Q1 2025 correlation study, and Ahrefs/Portent readability research.
| Category | Old Weight | New Weight | Rationale |
|---|---|---|---|
| E-E-A-T | 35% | 30% | Adjusted to accommodate AEO |
| Intent | 27% | 24% | Adjusted to accommodate AEO |
| AEO | 0% | 20% | New category — AI engine citation signals |
| SEO Analysis | 26% | 18% | Keyword density confirmed NOT a ranking factor (Mueller) |
| SERP/CTR | 2% | 5% | NavBoost click signals confirmed critical by DOJ trial |
| Readability | 9% | 2% | Zero correlation with rankings (Ahrefs, Portent studies) |
| Social | 1% | 1% | Unchanged |
maxScore Calibration — content-analysis Checks
All check maxScore values recalibrated to reflect 2026 research-backed importance weighting. Previously all checks had maxScore: 5; now checks are weighted by their actual impact on search rankings:
| Check | Old maxScore | New maxScore | Reason |
|---|---|---|---|
word-count |
5 | 10 | First Page Sage: satisfying content = 23% of ranking weight |
content-freshness |
5 | 10 | First Page Sage: freshness = 6%; critical for AI grounding |
media-count |
5 | 8 | Visual content improves dwell time (NavBoost signal) |
eeat-content-accuracy |
5 | 10 | Core trust signal; YMYL pages penalised heavily for inaccuracy |
eeat-source-quality |
5 | 10 | External citations = primary E-E-A-T trust signal |
eeat-author-schema |
5 | 10 | Author markup directly consumed by Google E-E-A-T evaluators |
eeat-experience-depth |
5 | 9 | First-hand experience confirmed as ranking differentiator (HCU) |
eeat-topical-authority |
5 | 8 | Content Warehouse API: siteFocusScore is a core ranking signal |
eeat-overall-score |
5 | 8 | Aggregated E-E-A-T pillar summary |
intent-keyword-classification |
5 | 10 | Intent mismatch = primary cause of ranking failure |
intent-content-alignment |
5 | 10 | Google's primary satisfaction signal |
intent-satisfaction-score |
5 | 10 | NavBoost: satisfying intent → good clicks → ranking boost |
intent-format-match |
5 | 8 | Format mismatch reduces dwell time (NavBoost bad click signal) |
intent-depth-match |
5 | 8 | Thin content for intent = high bounce = NavBoost penalty |
intent-snippet-readiness |
5 | 6 | Featured snippet still present in non-AI-Overview results |
keyphrase-density |
5 | 1 | Confirmed NOT a ranking factor (John Mueller, multiple statements) |
maxScore Calibration — readability Checks (@power-seo/readability)
| Check | Old maxScore | New maxScore | Reason |
|---|---|---|---|
sentence-length |
5 | 8 | Affects scanability and dwell time |
paragraph-length |
5 | 8 | Mobile UX signal; affects bounce rate |
passive-voice |
5 | 6 | Clarity signal; affects comprehension |
flesch-reading-ease |
5 | 4 | Zero correlation with rankings (Ahrefs 2024 study, 1.9M pages) |
transition-words |
5 | 3 | Minor UX signal only |
consecutive-sentences |
5 | 3 | Minor stylistic signal only |
Fixed
word-countgood-resultmaxScorewas 5 (not updated with other returns) — corrected to 10- All "poor" status returns in modified check files now have consistent
maxScorematching "good"/"ok" returns intent-format-match"na" early-returnmaxScorecorrected from 5 to 8
[1.0.14] - 2026-03-25
Added
E-E-A-T Checks — 25 New Checks (@power-seo/content-analysis)
Comprehensive Google E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) signal detection:
Experience (5 checks)
eeat-experience-depth— First-hand experience signals (personal pronouns, temporal markers, testing outcomes, process narration)eeat-original-research— Original data, surveys, experiments, and unique findingseeat-specificity-depth— Specific details, product versions, measurements that demonstrate hands-on knowledgeeeat-multimedia-evidence— Screenshots, diagrams, original photos, embedded video evidenceeeat-case-study-patterns— Case study and real-world example patterns
Expertise (5 checks)
eeat-author-schema— Author JSON-LD schema completeness (name, jobTitle, worksFor, credentials, knowsAbout, sameAs)eeat-topical-authority— Topical focus and niche expertise signalseeat-technical-vocabulary— Domain-specific technical terminology usageeeat-expert-hedging— Calibrated language ("research suggests", "in most cases") vs. overconfident claimseeat-methodology-transparency— Research methods, data sources, and process transparency
Authoritativeness (5 checks)
eeat-author-social— Social profile links (LinkedIn, Twitter/X, GitHub)eeat-organization— Organization schema and brand signalseeat-published-works— References to publications, research papers, bookseeat-expert-sourcing— Citations from named experts and authoritative sourceseeat-editorial-review— Editorial process signals (reviewed by, fact-checked, updated by)
Trustworthiness (6 checks)
eeat-source-quality— External link quality and diversity (academic, government, industry)eeat-ymyl-compliance— YMYL (Your Money or Your Life) content risk level assessmenteeat-conflict-disclosure— Conflict of interest and sponsorship disclosureeeat-content-accuracy— Misleading language, unsubstantiated claims, clickba...
Release v1.0.12
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.12] - 2026-03-03
Fixed
Documentation
- @power-seo/preview: Added TwitterImageValidation structure documentation
- @power-seo/sitemap: Fixed lastmod conversion claim and clarified namespace detection scope
- @power-seo/redirects: Corrected API function signatures, status codes, and config types (5 fixes)
- @power-seo/links: Fixed function signatures and property names (3 fixes)
- @power-seo/audit: Added missing hostname parameter to API reference
- @power-seo/images: Corrected function signatures, return types, and examples (7 fixes)
- @power-seo/ai: Fixed focusKeyphrase parameter name in OpenAI example
- @power-seo/analytics: Corrected correlation return type, ranking tiers, and usage examples
- @power-seo/search-console: Fixed TokenManager type definition and CI/CD example
- @power-seo/integrations: Corrected error properties and config parameter types
- @power-seo/tracking: Added missing isGranted method to API reference
Total: 18 documentation issues fixed across 11 packages
[1.0.11] - 2026-03-01
Added
Documentation
- Comprehensive GitHub Wiki with 38+ pages covering all packages and use cases
- Interactive MDX documentation files for enhanced learning experience
- Home page with organized navigation for Quick Start, Core Concepts, and Package APIs
- Wiki homepage synchronized across repository and GitHub Pages
- Complete guide to all 17 packages with API references
Features
- Wiki-based documentation system for better discoverability
- Enhanced package documentation with real-world examples
- MDX files for interactive documentation in docs/ directory
- Improved navigation structure across all documentation
Changed
Documentation
- Updated README.md with comprehensive documentation links
- Restructured docs/ directory with WIKI_HOME.mdx for easy navigation
- Improved package selection guide with visual organization
- Enhanced framework integration documentation
Fixed
- Wiki homepage rendering and display issues
- Documentation page synchronization across platforms
- Fixed duplicate wiki page references
- Improved markdown formatting for better GitHub rendering
[1.0.10] - 2026-02-28
Added
New Packages
- @power-seo/ai - LLM-agnostic AI prompt templates for SEO tasks
- @power-seo/search-console - Google Search Console API client
- @power-seo/integrations - Semrush and Ahrefs API clients
- @power-seo/tracking - Analytics tracking with GDPR consent
- @power-seo/analytics - Analytics dashboard builder
- @power-seo/images - Image SEO analysis
- @power-seo/readability - Readability scoring algorithms
Features
- Real-time content analysis (Yoast-style scoring)
- Pixel-accurate SERP previews
- XML sitemap streaming for 50,000+ URLs
- Comprehensive SEO audit (30+ rules)
- Link graph analysis with orphan detection
- Advanced robots directives support
- Multi-language support with hreflang
- Batch processing and data export
- Advanced filtering and monitoring
Documentation
- 11 comprehensive wiki pages (5,063 lines)
- 20+ GitHub Discussion templates
- Getting started guides for all frameworks
- Package selection guide with presets
- Architecture overview
- Real-world use case tutorials
- Troubleshooting guide (20+ solutions)
- Complete API reference
Build & CI/CD
- GitHub Actions workflows
- Changesets-based versioning
- ESLint and Prettier configuration
- Vitest with 95%+ coverage
- Turborepo optimization
- CodeQL and Socket.dev monitoring
- Provenance-signed releases
Changed
API Improvements
- Full TypeScript support across all packages
- Standardized error handling
- Better validation error messages
- Enhanced type definitions
Performance
- Optimized bundle sizes
- Tree-shakeable exports
- Dual ESM + CJS output
- Parallel rule execution
- Improved memory usage
Documentation
- Updated package READMEs
- Added 120+ SVG assets
- Interactive examples
- Architecture documentation
Fixed
- XSS vulnerabilities in JSON-LD rendering
- ReDoS-prone regex patterns
- URL normalization issues
- Redirect chain detection edge cases
- Memory optimization for large datasets
Security
- No install scripts
- No runtime network access
- No eval or dynamic code
- Input validation and sanitization
- Automated security scanning
- Dependency vulnerability management
[1.0.1] - 2026-01-05
Added
- Multi-language support and i18n
- Accessibility improvements
- Advanced analytics dashboard
- Batch processing
- Data export utilities
Fixed
- Content analysis edge cases
- Readability accuracy
- Schema validation
[1.0.0] - 2025-12-01
Added
Core Packages (10)
- @power-seo/core - Zero-dependency foundation
- @power-seo/react - React SEO components
- @power-seo/meta - SSR meta helpers
- @power-seo/schema - JSON-LD builders (23 types)
- @power-seo/content-analysis - Yoast-style scoring
- @power-seo/preview - SERP/OG/Twitter previews
- @power-seo/sitemap - XML sitemap generation
- @power-seo/redirects - Redirect engine
- @power-seo/links - Link graph analysis
- @power-seo/audit - Full audit engine
Features
- Type-safe builders for all SEO tasks
- Framework-native (Next.js 14+, Remix v2, React SPAs)
- Comprehensive test coverage
- Full TypeScript support
- Tree-shakeable exports
- Production-ready
[1.0.0-beta.1] - 2025-10-01
Added
- Beta release for testing
- End-to-end test suite
- Documentation and examples
Fixed
- Community feedback issues
- Edge case handling
[1.0.0-alpha] - 2025-09-15
Added
- Alpha release for early testing
- Core functionality
- API documentation
- CI/CD workflows
Requirements
- Node.js: >= 18.0.0
- TypeScript: >= 5.0 (optional)
- React: >= 18.0.0 (for React packages only)
License
MIT © 2026 CyberCraft Bangladesh
v1.0.11
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.11] - 2026-02-28
Added
New Packages
- @power-seo/ai - LLM-agnostic AI prompt templates for SEO tasks
- @power-seo/search-console - Google Search Console API client
- @power-seo/integrations - Semrush and Ahrefs API clients
- @power-seo/tracking - Analytics tracking with GDPR consent
- @power-seo/analytics - Analytics dashboard builder
- @power-seo/images - Image SEO analysis
- @power-seo/readability - Readability scoring algorithms
Features
- Real-time content analysis (Yoast-style scoring)
- Pixel-accurate SERP previews
- XML sitemap streaming for 50,000+ URLs
- Comprehensive SEO audit (30+ rules)
- Link graph analysis with orphan detection
- Advanced robots directives support
- Multi-language support with hreflang
- Batch processing and data export
- Advanced filtering and monitoring
Documentation
- 11 comprehensive wiki pages (5,063 lines)
- 20+ GitHub Discussion templates
- Getting started guides for all frameworks
- Package selection guide with presets
- Architecture overview
- Real-world use case tutorials
- Troubleshooting guide (20+ solutions)
- Complete API reference
Build & CI/CD
- GitHub Actions workflows
- Changesets-based versioning
- ESLint and Prettier configuration
- Vitest with 95%+ coverage
- Turborepo optimization
- CodeQL and Socket.dev monitoring
- Provenance-signed releases
Changed
API Improvements
- Full TypeScript support across all packages
- Standardized error handling
- Better validation error messages
- Enhanced type definitions
Performance
- Optimized bundle sizes
- Tree-shakeable exports
- Dual ESM + CJS output
- Parallel rule execution
- Improved memory usage
Documentation
- Updated package READMEs
- Added 120+ SVG assets
- Interactive examples
- Architecture documentation
Fixed
- XSS vulnerabilities in JSON-LD rendering
- ReDoS-prone regex patterns
- URL normalization issues
- Redirect chain detection edge cases
- Memory optimization for large datasets
Security
- No install scripts
- No runtime network access
- No eval or dynamic code
- Input validation and sanitization
- Automated security scanning
- Dependency vulnerability management
[1.0.1] - 2026-01-05
Added
- Multi-language support and i18n
- Accessibility improvements
- Advanced analytics dashboard
- Batch processing
- Data export utilities
Fixed
- Content analysis edge cases
- Readability accuracy
- Schema validation
[1.0.0] - 2025-12-01
Added
Core Packages (10)
- @power-seo/core - Zero-dependency foundation
- @power-seo/react - React SEO components
- @power-seo/meta - SSR meta helpers
- @power-seo/schema - JSON-LD builders (23 types)
- @power-seo/content-analysis - Yoast-style scoring
- @power-seo/preview - SERP/OG/Twitter previews
- @power-seo/sitemap - XML sitemap generation
- @power-seo/redirects - Redirect engine
- @power-seo/links - Link graph analysis
- @power-seo/audit - Full audit engine
Features
- Type-safe builders for all SEO tasks
- Framework-native (Next.js 14+, Remix v2, React SPAs)
- Comprehensive test coverage
- Full TypeScript support
- Tree-shakeable exports
- Production-ready
[1.0.0-beta.1] - 2025-10-01
Added
- Beta release for testing
- End-to-end test suite
- Documentation and examples
Fixed
- Community feedback issues
- Edge case handling
[1.0.0-alpha] - 2025-09-15
Added
- Alpha release for early testing
- Core functionality
- API documentation
- CI/CD workflows
Requirements
- Node.js: >= 18.0.0
- TypeScript: >= 5.0 (optional)
- React: >= 18.0.0 (for React packages only)
License
MIT © 2026 CyberCraft Bangladesh
Release v1.0.10
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.11] - 2026-02-28
Added
Documentation
- Comprehensive GitHub Wiki with 38+ pages covering all packages and use cases
- Interactive MDX documentation files for enhanced learning experience
- Home page with organized navigation for Quick Start, Core Concepts, and Package APIs
- Wiki homepage synchronized across repository and GitHub Pages
- Complete guide to all 17 packages with API references
Features
- Wiki-based documentation system for better discoverability
- Enhanced package documentation with real-world examples
- MDX files for interactive documentation in docs/ directory
- Improved navigation structure across all documentation
Changed
Documentation
- Updated README.md with comprehensive documentation links
- Restructured docs/ directory with WIKI_HOME.mdx for easy navigation
- Improved package selection guide with visual organization
- Enhanced framework integration documentation
Fixed
- Wiki homepage rendering and display issues
- Documentation page synchronization across platforms
- Fixed duplicate wiki page references
- Improved markdown formatting for better GitHub rendering
[1.0.10] - 2026-02-28
Added
New Packages
- @power-seo/ai - LLM-agnostic AI prompt templates for SEO tasks
- @power-seo/search-console - Google Search Console API client
- @power-seo/integrations - Semrush and Ahrefs API clients
- @power-seo/tracking - Analytics tracking with GDPR consent
- @power-seo/analytics - Analytics dashboard builder
- @power-seo/images - Image SEO analysis
- @power-seo/readability - Readability scoring algorithms
Features
- Real-time content analysis (Yoast-style scoring)
- Pixel-accurate SERP previews
- XML sitemap streaming for 50,000+ URLs
- Comprehensive SEO audit (30+ rules)
- Link graph analysis with orphan detection
- Advanced robots directives support
- Multi-language support with hreflang
- Batch processing and data export
- Advanced filtering and monitoring
Documentation
- 11 comprehensive wiki pages (5,063 lines)
- 20+ GitHub Discussion templates
- Getting started guides for all frameworks
- Package selection guide with presets
- Architecture overview
- Real-world use case tutorials
- Troubleshooting guide (20+ solutions)
- Complete API reference
Build & CI/CD
- GitHub Actions workflows
- Changesets-based versioning
- ESLint and Prettier configuration
- Vitest with 95%+ coverage
- Turborepo optimization
- CodeQL and Socket.dev monitoring
- Provenance-signed releases
Changed
API Improvements
- Full TypeScript support across all packages
- Standardized error handling
- Better validation error messages
- Enhanced type definitions
Performance
- Optimized bundle sizes
- Tree-shakeable exports
- Dual ESM + CJS output
- Parallel rule execution
- Improved memory usage
Documentation
- Updated package READMEs
- Added 120+ SVG assets
- Interactive examples
- Architecture documentation
Fixed
- XSS vulnerabilities in JSON-LD rendering
- ReDoS-prone regex patterns
- URL normalization issues
- Redirect chain detection edge cases
- Memory optimization for large datasets
Security
- No install scripts
- No runtime network access
- No eval or dynamic code
- Input validation and sanitization
- Automated security scanning
- Dependency vulnerability management
[1.0.1] - 2026-01-05
Added
- Multi-language support and i18n
- Accessibility improvements
- Advanced analytics dashboard
- Batch processing
- Data export utilities
Fixed
- Content analysis edge cases
- Readability accuracy
- Schema validation
[1.0.0] - 2025-12-01
Added
Core Packages (10)
- @power-seo/core - Zero-dependency foundation
- @power-seo/react - React SEO components
- @power-seo/meta - SSR meta helpers
- @power-seo/schema - JSON-LD builders (23 types)
- @power-seo/content-analysis - Yoast-style scoring
- @power-seo/preview - SERP/OG/Twitter previews
- @power-seo/sitemap - XML sitemap generation
- @power-seo/redirects - Redirect engine
- @power-seo/links - Link graph analysis
- @power-seo/audit - Full audit engine
Features
- Type-safe builders for all SEO tasks
- Framework-native (Next.js 14+, Remix v2, React SPAs)
- Comprehensive test coverage
- Full TypeScript support
- Tree-shakeable exports
- Production-ready
[1.0.0-beta.1] - 2025-10-01
Added
- Beta release for testing
- End-to-end test suite
- Documentation and examples
Fixed
- Community feedback issues
- Edge case handling
[1.0.0-alpha] - 2025-09-15
Added
- Alpha release for early testing
- Core functionality
- API documentation
- CI/CD workflows
Requirements
- Node.js: >= 18.0.0
- TypeScript: >= 5.0 (optional)
- React: >= 18.0.0 (for React packages only)
License
MIT © 2026 CyberCraft Bangladesh
Release v1.0.4
@Power-SEO v1.0.4
All 17 packages published to npm under the @power-seo scope.
What's new
- Rewrote documentation for
core,content-analysis,links,audit,images,ai,analytics, andintegrationspackages to follow the full template structure @power-seoin Ecosystem section headings now links to npmjs.com/org/power-seo across all 17 READMEs- CyberCraft Bangladesh links to ccbd.dev across all 17 READMEs
- All packages bumped to v1.0.3
Install any package
npm install @power-seo/core
npm install @power-seo/react
# ...any of the 17 packagesSee the full package list on npm.
Release v1.0.2
@Power-SEO v1.0.2
All 17 packages published to npm under the @power-seo scope.
Install any package
npm install @power-seo/core
npm install @power-seo/react
# ...any of the 17 packagesSee the full package list on npm.