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.