export type ScreamingFrogIssueTier = 'p0' | 'p1' | 'p2' | 'p3' | 'noise'; export interface ScreamingFrogCrawlProfile { label: string; startUrl: string; /** Path to .seospiderconfig (supports ~) */ configFile: string; /** Optional env var that overrides startUrl when set in .env.local */ urlEnv?: string; } /** Site config loaded from the repo manifest (seo/screaming-frog.json). */ export interface ScreamingFrogSiteConfig { site: string; siteLabel: string; defaultSiteUrl: string; /** Host substring used to filter internal redirect samples */ siteHost: string; outputMdName: string; compareMdName?: string; productionAuditDoc?: string; defaultProfile?: string; profiles: Record; /** Optional per-site issue rule overrides (merged over base rules) */ issueRuleOverrides?: ScreamingFrogIssueRule[]; } export interface ScreamingFrogIssueRule { /** Substring match on normalized Screaming Frog issue name */ match: string; tier: ScreamingFrogIssueTier; category: string; note?: string; } export interface ScreamingFrogAuditConfig { exportDir: string; site?: ScreamingFrogSiteConfig; siteUrl?: string; outputMdName?: string; /** Max sample URLs per issue in the report */ sampleLimit?: number; issueRules?: ScreamingFrogIssueRule[]; } export interface ScreamingFrogIssueRow { name: string; sfType: string; sfPriority: string; urlCount: number; pctOfHtml: string; tier: ScreamingFrogIssueTier; category: string; note?: string; samples: string[]; } export interface ScreamingFrogAuditResult { exportDir: string; exportDirLabel: string; siteLabel: string; siteUrl: string; productionAuditDoc?: string; crawlStarted?: string; htmlPages: number; internalIndexable: number; issues: ScreamingFrogIssueRow[]; tierCounts: Record; tierUrlCounts: Record; } export interface ScreamingFrogAuditCliOptions { exportDir: string; site: ScreamingFrogSiteConfig; outDir?: string; siteUrl?: string; sampleLimit?: number; } export interface ScreamingFrogCrawlTarget { name: string; url: string; configFile: string; label?: string; } /** Raw JSON shape in seo/screaming-frog.json */ export interface ScreamingFrogProfileManifest { site: string; siteLabel: string; siteHost: string; defaultSiteUrl: string; outputMdName: string; productionAuditDoc?: string; defaultProfile?: string; issueRuleOverrides?: ScreamingFrogIssueRule[]; compareMdName?: string; profiles: Record; } export interface ScreamingFrogCrawlResult { exportDir: string; crawlUrl: string; configFile: string; profileName: string; siteLabel: string; databaseId?: string; } export interface ScreamingFrogCompareResult { exportDir: string; currentDatabaseId: string; previousDatabaseId: string; siteLabel: string; currentCrawl?: import('./list-crawls.js').StoredScreamingFrogCrawl; previousCrawl?: import('./list-crawls.js').StoredScreamingFrogCrawl; } export interface ScreamingFrogCompareCliOptions { currentDatabaseId: string; previousDatabaseId: string; siteLabel: string; exportRoot?: string; exportDir?: string; exportTabs?: string[]; currentCrawl?: import('./list-crawls.js').StoredScreamingFrogCrawl; previousCrawl?: import('./list-crawls.js').StoredScreamingFrogCrawl; } export interface ScreamingFrogCrawlCliOptions { site: ScreamingFrogSiteConfig; profile: string; workspaceRoot: string; exportRoot?: string; envFile?: string; skipCrawl?: boolean; exportDir?: string; } export interface ResolvedSiteConfig { config: ScreamingFrogSiteConfig; workspaceRoot: string; manifestPath: string; } //# sourceMappingURL=types.d.ts.map