@dijitrak/react-nextjs-seo-plugin
Version:
A modern, user-friendly SEO plugin for React and Next.js with multilingual support and comprehensive optimization tools
128 lines (118 loc) • 2.26 kB
text/typescript
/**
* SEO Plugin tip tanımları
*/
/**
* SEO Plugin konfigürasyonu
*/
export interface SEOPluginConfig {
defaultTitle?: string;
defaultDescription?: string;
defaultImage?: string;
defaultTwitterCard?: 'summary' | 'summary_large_image' | 'app' | 'player';
ogSiteName?: string;
twitterHandle?: string;
siteLanguage?: string;
apiUrl?: string;
}
/**
* SEO Meta verileri
*/
export interface SEOMetaData {
title: string;
description: string;
keywords?: string;
allowIndex?: boolean;
allowFollow?: boolean;
canonicalUrl?: string;
ogTitle?: string;
ogDescription?: string;
ogImage?: string;
ogType?: string;
twitterTitle?: string;
twitterDescription?: string;
twitterImage?: string;
twitterCard?: 'summary' | 'summary_large_image' | 'app' | 'player';
language?: string;
focusKeyword?: string;
}
/**
* SEO başlık bileşeni props
*/
export interface SEOHeadProps {
title?: string;
description?: string;
ogImage?: string;
pageUrl?: string;
meta?: SEOMetaData;
schema?: JSONLDSchema[];
languageMetadata?: LanguageMetadata;
}
/**
* Dil metadata bilgileri
*/
export interface LanguageMetadata {
primary?: string;
alternate?: Array<{
hrefLang: string;
href: string;
}>;
}
/**
* JSON-LD şema tipi
*/
export type SchemaType =
| 'WebSite'
| 'Organization'
| 'LocalBusiness'
| 'Person'
| 'Product'
| 'Article'
| 'BlogPosting'
| 'Event'
| 'FAQ'
| 'HowTo'
| 'BreadcrumbList'
| 'Recipe'
| 'VideoObject';
/**
* JSON-LD şema
*/
export interface JSONLDSchema {
type: SchemaType;
data: Record<string, any>;
}
/**
* SEO puanı
*/
export interface SEOScore {
overall: number;
metadata: number;
content: number;
pageSpeed: number;
social: number;
schema: number;
details?: Record<string, number>;
}
/**
* SEO sorunu
*/
export interface SEOIssue {
id: string;
type: 'error' | 'warning' | 'info';
message: string;
details?: string;
pageId?: string;
url?: string;
fixSuggestion?: string;
}
/**
* İçerik analiz sonuçları
*/
export interface ContentAnalysisResult {
score: number;
wordCount: number;
readability: number;
keywordDensity?: number;
recommendations: string[];
issues: SEOIssue[];
}