addedInput schema / additionalProperties
Added value: +false
addedInput schema / properties / minLength / default
Added value: +3
addedInput schema / properties / minLength / description
Added value: +"Minimum token character length to include in rankings; shorter tokens are dropped. Clamped to 1-10."
addedInput schema / properties / minLength / maximum
Added value: +10
addedInput schema / properties / minLength / minimum
Added value: +1
addedInput schema / properties / mode / default
Added value: +"plain"
addedInput schema / properties / mode / description
Added value: +"Input format. plain analyzes text verbatim; html strips script/style/comments/tags and decodes entities before analysis. Unrecognized values fall back to plain."
addedInput schema / properties / mode / enum
Added value: +[
+ "plain",
+ "html"
+]
addedInput schema / properties / operation
Added value: +{
+ "default": "analyze",
+ "description": "Operation to run. Only analyze is supported.",
+ "enum": [
+ "analyze"
+ ],
+ "type": "string"
+}
addedInput schema / properties / stopwords / default
Added value: +"en"
addedInput schema / properties / stopwords / description
Added value: +"Stopword filter for the unigram ranking and (when active) n-grams. en/english uses the built-in English list; none/off/empty disables filtering; an array of strings supplies a custom case-insensitive list. Any other string defaults to the English list."
addedInput schema / properties / stopwords / items
Added value: +{
+ "type": "string"
+}
changedInput schema / properties / stopwords / type
Previous value: -"string"New value: +[
+ "array",
+ "string"
+]
addedInput schema / properties / text / description
Added value: +"Content to analyze: UTF-8 plain text, or an HTML document when mode is html. Must not be blank. Hard cap roughly 5 MB."
addedInput schema / properties / topN / default
Added value: +20
addedInput schema / properties / topN / description
Added value: +"Maximum number of entries returned in each of the unigram, bigram, and trigram tables. Clamped to 1-100."
addedInput schema / properties / topN / maximum
Added value: +100
addedInput schema / properties / topN / minimum
Added value: +1
changedInput schema / required
Previous value: -[
- "text",
- "mode",
- "stopwords",
- "minLength",
- "topN"
-]New value: +[
+ "text"
+]
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "operation": {
+ "description": "The operation performed (analyze).",
+ "type": "string"
+ },
+ "result": {
+ "description": "The keyword density analysis.",
+ "properties": {
+ "bigrams": {
+ "description": "Top two-word phrases by frequency, up to topN. Same item shape as unigrams.",
+ "items": {
+ "properties": {
+ "count": {
+ "description": "Number of occurrences.",
+ "type": "integer"
+ },
+ "density": {
+ "description": "Occurrences as a percentage of the density base (rounded to 2 dp).",
+ "type": "number"
+ },
+ "word": {
+ "description": "The two-word phrase.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "stats": {
+ "description": "Document-level statistics for the cleaned text.",
+ "properties": {
+ "avgCharsPerWord": {
+ "description": "Mean characters per token (rounded to 2 dp).",
+ "type": "number"
+ },
+ "avgWordsPerSentence": {
+ "description": "Mean tokens per sentence (rounded to 2 dp).",
+ "type": "number"
+ },
+ "charCount": {
+ "description": "Total characters in the cleaned text.",
+ "type": "integer"
+ },
+ "charCountNoSpaces": {
+ "description": "Characters excluding spaces, tabs, and newlines.",
+ "type": "integer"
+ },
+ "lexicalDiversity": {
+ "description": "Unique words divided by total words (0-1, rounded to 4 dp).",
+ "type": "number"
+ },
+ "paragraphCount": {
+ "description": "Paragraphs (split on blank lines).",
+ "type": "integer"
+ },
+ "sentenceCount": {
+ "description": "Sentences (split on terminal . ! ? punctuation).",
+ "type": "integer"
+ },
+ "uniqueWords": {
+ "description": "Count of distinct tokens.",
+ "type": "integer"
+ },
+ "wordCount": {
+ "description": "Total tokens (words) found.",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "trigrams": {
+ "description": "Top three-word phrases by frequency, up to topN. Same item shape as unigrams.",
+ "items": {
+ "properties": {
+ "count": {
+ "description": "Number of occurrences.",
+ "type": "integer"
+ },
+ "density": {
+ "description": "Occurrences as a percentage of the density base (rounded to 2 dp).",
+ "type": "number"
+ },
+ "word": {
+ "description": "The three-word phrase.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "unigrams": {
+ "description": "Top single words by frequency (after stopword/minLength filtering), up to topN.",
+ "items": {
+ "properties": {
+ "count": {
+ "description": "Number of occurrences.",
+ "type": "integer"
+ },
+ "density": {
+ "description": "Occurrences as a percentage of filtered tokens (rounded to 2 dp).",
+ "type": "number"
+ },
+ "word": {
+ "description": "The word or phrase.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "warnings": {
+ "description": "Over-optimization and quality notices (e.g. density too high, text too short, repetitive phrases).",
+ "items": {
+ "properties": {
+ "message": {
+ "description": "Human-readable explanation.",
+ "type": "string"
+ },
+ "severity": {
+ "description": "Warning severity.",
+ "enum": [
+ "critical",
+ "high",
+ "medium",
+ "low",
+ "info"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "success": {
+ "description": "Whether the analysis succeeded.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}