Content quality validation - composite validator combining link integrity, image optimization, editorial style, and markdown structure validation
npm install @bernierllc/validators-contentContent quality validation - composite validator combining link integrity, image optimization, editorial style, and markdown structure validation.
The validators-content package is a domain validator that orchestrates multiple primitive validators to provide comprehensive content quality assurance. It validates links, images, editorial style, and markdown structure in a single operation.
``bash`
npm install @bernierllc/validators-content
- Link Integrity: Validates broken links, anchor targets, redirect chains, and protocol consistency
- Image Assets: Checks alt text, image format, file size, dimensions, and srcset
- Editorial Style: Validates inclusive language, brand terms, tone, and readability
- Markdown Structure: Verifies heading hierarchy, link references, list formatting, and code blocks
- Flexible Configuration: Enable/disable individual validators as needed
- Multiple Content Types: Supports markdown, HTML, and plain text
`typescript
import { validateContent } from '@bernierllc/validators-content';
import { createSharedUtils } from '@bernierllc/validators-utils';
const utils = createSharedUtils();
const content = {
markdown:
Check out our site!
!Logo
.trim(),
};
const result = await validateContent(content, {}, utils);
if (result.problems.length === 0) {
console.log('Content is valid!');
} else {
result.problems.forEach(problem => {
console.log(${problem.severity}: ${problem.message});`
});
}
`typescript
import { validateContent } from '@bernierllc/validators-content';
import { createSharedUtils } from '@bernierllc/validators-utils';
const utils = createSharedUtils();
const content = {
html: '
Some content with link
',const result = await validateContent(content, {
validateLinks: true,
validateImages: true,
validateEditorialStyle: false, // Skip editorial validation
validateMarkdownStructure: false, // Skip markdown validation
maxContentLength: 10000, // Warn if content exceeds 10KB
skipExternalLinks: true, // Don't check external links
}, utils);
`
`typescript
import { createContentValidator } from '@bernierllc/validators-content';
import { createSharedUtils } from '@bernierllc/validators-utils';
const utils = createSharedUtils();
// Create a configured validator
const validator = createContentValidator({
validateLinks: true,
validateImages: true,
validateEditorialStyle: true,
validateMarkdownStructure: true,
});
// Get metadata
const meta = validator.getMeta();
console.log('Validator:', meta.name);
console.log('Enabled rules:', meta.enabledRules);
// Validate content
const content = {
text: 'Check out this link: https://example.com',
};
const result = await validator.validate(content, utils);
console.log('Problems found:', result.problems.length);
`
Validates content using configured validators.
Parameters:
- content (ContentInput): Content to validatetext?: string
- - Plain text contenthtml?: string
- - HTML contentmarkdown?: string
- - Markdown contentbaseUrl?: string
- - Base URL for resolving relative linksfilePath?: string
- - Source file path (for context)options?
- (ContentValidationOptions): Validation optionsvalidateLinks?: boolean
- - Validate link integrity (default: true)validateImages?: boolean
- - Validate image assets (default: true)validateEditorialStyle?: boolean
- - Validate editorial style (default: true)validateMarkdownStructure?: boolean
- - Validate markdown structure (default: true)severity?: Severity
- - Severity level for problems (default: 'warn')linkOptions?: Partial
- - Options for link validationskipExternalLinks?: boolean
- - Skip external link checking (default: false)maxContentLength?: number
- - Maximum content length (default: unlimited)utils
- (SharedUtils): Shared utilities from @bernierllc/validators-utils
Returns: Promise
Creates a configured content validator instance.
Parameters:
- options? (ContentValidationOptions): Validation configuration
Returns: Object with:
- validate(content, utils) - Validation functiongetMeta()
- - Metadata function
The validator supports three content types:
`typescript`
const content = {
markdown: '# Title\n\nLink\n\n!Image',
};
For markdown content:
- Links are extracted from text syntax!alt
- Images are extracted from syntax
- Markdown structure is validated if enabled
`typescript`
const content = {
html: 'Title
',
};
For HTML content:
- Links are extracted from tags
- Images are extracted from tags
- HTML structure is validated through editorial rules
`typescript`
const content = {
text: 'Plain text content with no markup.',
};
For plain text content:
- Editorial style validation is performed
- Links and images are not extracted
This domain validator composes four primitive validators:
Validates:
- Broken links
- Anchor targets
- Redirect chains
- Protocol consistency
Validates:
- Missing alt text
- Inefficient image format
- Excessive file size
- Excessive dimensions
- Missing srcset
Validates:
- Inclusive language
- Brand terms
- Prohibited terms
- Tone validation
- Readability score
Validates:
- Heading hierarchy
- Link references
- List formatting
- Code block syntax
`typescript`
const result = await validateContent(content, {
validateLinks: true,
linkOptions: {
checkBrokenLinks: true,
checkAnchorTargets: true,
checkRedirectChains: true,
checkProtocolConsistency: true,
},
}, utils);
`typescript`
const result = await validateContent(content, {
maxContentLength: 5000, // Warn if content exceeds 5KB
severity: 'error', // Treat warnings as errors
}, utils);
`typescript`
// Only validate links and images
const result = await validateContent(content, {
validateLinks: true,
validateImages: true,
validateEditorialStyle: false,
validateMarkdownStructure: false,
}, utils);
- Logger Integration: Not applicable - Pure validation function with no runtime logging requirements
- Docs-Suite: Ready - Exports markdown documentation
- NeverHub Integration: Not applicable - Stateless validator with no service discovery or event bus requirements
BernierLLC Packages:
- @bernierllc/validators-core - Core validation framework@bernierllc/validators-runner
- - Validation runner@bernierllc/validators-utils
- - Shared utilities@bernierllc/validators-link-integrity
- - Link integrity validation@bernierllc/validators-image-asset
- - Image asset validation@bernierllc/validators-editorial-style
- - Editorial style validation@bernierllc/validators-markdown-structure
- - Markdown structure validation
- @bernierllc/validators-email - Email content validation@bernierllc/validators-web
- - Web page validation@bernierllc/validators-api` - API specification validation
-
Copyright (c) 2025 Bernier LLC. All rights reserved.