@rankcli/agent-runtime 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -809,6 +809,7 @@ __export(index_exports, {
809
809
  PRIORITY_WEIGHTS: () => PRIORITY_WEIGHTS,
810
810
  SEO_SCOPES: () => SEO_SCOPES,
811
811
  SITE_PROFILE_QUESTIONS: () => SITE_PROFILE_QUESTIONS,
812
+ Schemas: () => Schemas,
812
813
  addTrackingResult: () => addTrackingResult,
813
814
  analyzeAnchorText: () => analyzeAnchorText,
814
815
  analyzeCanonicalAdvanced: () => analyzeCanonicalAdvanced,
@@ -954,7 +955,7 @@ __export(index_exports, {
954
955
  generateComparisonTable: () => generateComparisonTable,
955
956
  generateCompleteSocialMetaSetup: () => generateCompleteSocialMetaSetup,
956
957
  generateDuplicateIssues: () => generateDuplicateIssues,
957
- generateFAQSchema: () => generateFAQSchema,
958
+ generateFAQSchema: () => generateFAQSchema2,
958
959
  generateFixes: () => generateFixes,
959
960
  generateGA4EnvTemplate: () => generateGA4EnvTemplate,
960
961
  generateGA4ReactComponent: () => generateGA4ReactComponent,
@@ -29042,6 +29043,588 @@ async function applyFixes(fixes, options) {
29042
29043
  return { applied, skipped };
29043
29044
  }
29044
29045
 
29046
+ // src/fixer/schemas.ts
29047
+ function generateOrganizationSchema(data) {
29048
+ return {
29049
+ "@context": "https://schema.org",
29050
+ "@type": "Organization",
29051
+ name: data.name,
29052
+ url: data.url,
29053
+ logo: data.logo,
29054
+ description: data.description,
29055
+ foundingDate: data.foundingDate,
29056
+ founder: data.founders?.map((f) => ({
29057
+ "@type": "Person",
29058
+ name: f.name,
29059
+ url: f.url
29060
+ })),
29061
+ address: data.address ? {
29062
+ "@type": "PostalAddress",
29063
+ streetAddress: data.address.streetAddress,
29064
+ addressLocality: data.address.addressLocality,
29065
+ addressRegion: data.address.addressRegion,
29066
+ postalCode: data.address.postalCode,
29067
+ addressCountry: data.address.addressCountry
29068
+ } : void 0,
29069
+ contactPoint: data.contactPoint?.map((cp) => ({
29070
+ "@type": "ContactPoint",
29071
+ telephone: cp.telephone,
29072
+ contactType: cp.contactType,
29073
+ availableLanguage: cp.availableLanguage,
29074
+ areaServed: cp.areaServed
29075
+ })),
29076
+ sameAs: data.sameAs
29077
+ };
29078
+ }
29079
+ function generateWebSiteSchema(data) {
29080
+ return {
29081
+ "@context": "https://schema.org",
29082
+ "@type": "WebSite",
29083
+ name: data.name,
29084
+ url: data.url,
29085
+ description: data.description,
29086
+ publisher: data.publisher ? {
29087
+ "@type": "Organization",
29088
+ name: data.publisher
29089
+ } : void 0,
29090
+ potentialAction: data.potentialAction ? {
29091
+ "@type": "SearchAction",
29092
+ target: {
29093
+ "@type": "EntryPoint",
29094
+ urlTemplate: data.potentialAction.target
29095
+ },
29096
+ "query-input": data.potentialAction.queryInput
29097
+ } : void 0
29098
+ };
29099
+ }
29100
+ function generateArticleSchema(data) {
29101
+ const authors = Array.isArray(data.author) ? data.author : [data.author];
29102
+ return {
29103
+ "@context": "https://schema.org",
29104
+ "@type": "Article",
29105
+ headline: data.headline,
29106
+ description: data.description,
29107
+ image: data.image,
29108
+ datePublished: data.datePublished,
29109
+ dateModified: data.dateModified || data.datePublished,
29110
+ author: authors.map((a) => ({
29111
+ "@type": "Person",
29112
+ name: a.name,
29113
+ url: a.url,
29114
+ image: a.image,
29115
+ jobTitle: a.jobTitle,
29116
+ sameAs: a.sameAs
29117
+ })),
29118
+ publisher: {
29119
+ "@type": "Organization",
29120
+ name: data.publisher.name,
29121
+ logo: {
29122
+ "@type": "ImageObject",
29123
+ url: data.publisher.logo
29124
+ }
29125
+ },
29126
+ mainEntityOfPage: data.mainEntityOfPage ? {
29127
+ "@type": "WebPage",
29128
+ "@id": data.mainEntityOfPage
29129
+ } : void 0,
29130
+ wordCount: data.wordCount,
29131
+ articleSection: data.articleSection,
29132
+ keywords: data.keywords?.join(", ")
29133
+ };
29134
+ }
29135
+ function generateBlogPostingSchema(data) {
29136
+ const schema = generateArticleSchema(data);
29137
+ return { ...schema, "@type": "BlogPosting" };
29138
+ }
29139
+ function generateNewsArticleSchema(data) {
29140
+ const schema = generateArticleSchema(data);
29141
+ return { ...schema, "@type": "NewsArticle", dateline: data.dateline };
29142
+ }
29143
+ function generateProductSchema(data) {
29144
+ const offers = Array.isArray(data.offers) ? data.offers : [data.offers];
29145
+ return {
29146
+ "@context": "https://schema.org",
29147
+ "@type": "Product",
29148
+ name: data.name,
29149
+ description: data.description,
29150
+ image: data.image,
29151
+ sku: data.sku,
29152
+ mpn: data.mpn,
29153
+ gtin: data.gtin,
29154
+ brand: data.brand ? {
29155
+ "@type": "Brand",
29156
+ name: data.brand
29157
+ } : void 0,
29158
+ category: data.category,
29159
+ offers: offers.map((o) => ({
29160
+ "@type": "Offer",
29161
+ price: o.price,
29162
+ priceCurrency: o.priceCurrency || "USD",
29163
+ availability: `https://schema.org/${o.availability || "InStock"}`,
29164
+ priceValidUntil: o.priceValidUntil,
29165
+ url: o.url,
29166
+ seller: o.seller ? {
29167
+ "@type": "Organization",
29168
+ name: o.seller
29169
+ } : void 0,
29170
+ itemCondition: o.itemCondition ? `https://schema.org/${o.itemCondition}` : void 0
29171
+ })),
29172
+ aggregateRating: data.aggregateRating ? {
29173
+ "@type": "AggregateRating",
29174
+ ratingValue: data.aggregateRating.ratingValue,
29175
+ reviewCount: data.aggregateRating.reviewCount,
29176
+ ratingCount: data.aggregateRating.ratingCount,
29177
+ bestRating: data.aggregateRating.bestRating || 5,
29178
+ worstRating: data.aggregateRating.worstRating || 1
29179
+ } : void 0,
29180
+ review: data.review?.map((r) => ({
29181
+ "@type": "Review",
29182
+ author: {
29183
+ "@type": "Person",
29184
+ name: r.author
29185
+ },
29186
+ datePublished: r.datePublished,
29187
+ reviewBody: r.reviewBody,
29188
+ reviewRating: {
29189
+ "@type": "Rating",
29190
+ ratingValue: r.reviewRating.ratingValue,
29191
+ bestRating: r.reviewRating.bestRating || 5
29192
+ }
29193
+ }))
29194
+ };
29195
+ }
29196
+ function generateSoftwareApplicationSchema(data) {
29197
+ const offers = Array.isArray(data.offers) ? data.offers : [data.offers];
29198
+ return {
29199
+ "@context": "https://schema.org",
29200
+ "@type": "SoftwareApplication",
29201
+ name: data.name,
29202
+ description: data.description,
29203
+ applicationCategory: data.applicationCategory,
29204
+ operatingSystem: data.operatingSystem || "Web",
29205
+ offers: offers.map((o) => ({
29206
+ "@type": "Offer",
29207
+ price: o.price,
29208
+ priceCurrency: o.priceCurrency || "USD"
29209
+ })),
29210
+ aggregateRating: data.aggregateRating ? {
29211
+ "@type": "AggregateRating",
29212
+ ratingValue: data.aggregateRating.ratingValue,
29213
+ reviewCount: data.aggregateRating.reviewCount,
29214
+ bestRating: data.aggregateRating.bestRating || 5
29215
+ } : void 0,
29216
+ screenshot: data.screenshot,
29217
+ featureList: data.featureList
29218
+ };
29219
+ }
29220
+ function generateFAQSchema(data) {
29221
+ return {
29222
+ "@context": "https://schema.org",
29223
+ "@type": "FAQPage",
29224
+ mainEntity: data.questions.map((q) => ({
29225
+ "@type": "Question",
29226
+ name: q.question,
29227
+ acceptedAnswer: {
29228
+ "@type": "Answer",
29229
+ text: q.answer
29230
+ }
29231
+ }))
29232
+ };
29233
+ }
29234
+ function generateHowToSchema(data) {
29235
+ return {
29236
+ "@context": "https://schema.org",
29237
+ "@type": "HowTo",
29238
+ name: data.name,
29239
+ description: data.description,
29240
+ image: data.image,
29241
+ totalTime: data.totalTime,
29242
+ estimatedCost: data.estimatedCost ? {
29243
+ "@type": "MonetaryAmount",
29244
+ currency: data.estimatedCost.currency,
29245
+ value: data.estimatedCost.value
29246
+ } : void 0,
29247
+ supply: data.supply?.map((s) => ({
29248
+ "@type": "HowToSupply",
29249
+ name: s
29250
+ })),
29251
+ tool: data.tool?.map((t) => ({
29252
+ "@type": "HowToTool",
29253
+ name: t
29254
+ })),
29255
+ step: data.steps.map((step, i) => ({
29256
+ "@type": "HowToStep",
29257
+ position: i + 1,
29258
+ name: step.name,
29259
+ text: step.text,
29260
+ image: step.image,
29261
+ url: step.url
29262
+ }))
29263
+ };
29264
+ }
29265
+ function generateVideoSchema(data) {
29266
+ const stats = data.interactionStatistic;
29267
+ return {
29268
+ "@context": "https://schema.org",
29269
+ "@type": "VideoObject",
29270
+ name: data.name,
29271
+ description: data.description,
29272
+ thumbnailUrl: data.thumbnailUrl,
29273
+ uploadDate: data.uploadDate,
29274
+ duration: data.duration,
29275
+ contentUrl: data.contentUrl,
29276
+ embedUrl: data.embedUrl,
29277
+ interactionStatistic: stats ? [
29278
+ stats.watchCount ? {
29279
+ "@type": "InteractionCounter",
29280
+ interactionType: { "@type": "WatchAction" },
29281
+ userInteractionCount: stats.watchCount
29282
+ } : null,
29283
+ stats.likeCount ? {
29284
+ "@type": "InteractionCounter",
29285
+ interactionType: { "@type": "LikeAction" },
29286
+ userInteractionCount: stats.likeCount
29287
+ } : null,
29288
+ stats.commentCount ? {
29289
+ "@type": "InteractionCounter",
29290
+ interactionType: { "@type": "CommentAction" },
29291
+ userInteractionCount: stats.commentCount
29292
+ } : null
29293
+ ].filter(Boolean) : void 0,
29294
+ publication: data.publication ? {
29295
+ "@type": "BroadcastEvent",
29296
+ isLiveBroadcast: data.publication.isLiveBroadcast,
29297
+ startDate: data.publication.startDate,
29298
+ endDate: data.publication.endDate
29299
+ } : void 0
29300
+ };
29301
+ }
29302
+ function generateEventSchema(data) {
29303
+ return {
29304
+ "@context": "https://schema.org",
29305
+ "@type": "Event",
29306
+ name: data.name,
29307
+ description: data.description,
29308
+ startDate: data.startDate,
29309
+ endDate: data.endDate,
29310
+ image: data.image,
29311
+ eventStatus: data.eventStatus ? `https://schema.org/${data.eventStatus}` : void 0,
29312
+ eventAttendanceMode: data.eventAttendanceMode ? `https://schema.org/${data.eventAttendanceMode}` : void 0,
29313
+ location: data.location.type === "VirtualLocation" ? {
29314
+ "@type": "VirtualLocation",
29315
+ url: data.location.url
29316
+ } : {
29317
+ "@type": "Place",
29318
+ name: data.location.name,
29319
+ address: data.location.address ? {
29320
+ "@type": "PostalAddress",
29321
+ ...data.location.address
29322
+ } : void 0
29323
+ },
29324
+ performer: data.performer?.map((p) => ({
29325
+ "@type": "Person",
29326
+ name: p.name,
29327
+ url: p.url
29328
+ })),
29329
+ organizer: data.organizer ? {
29330
+ "@type": "Organization",
29331
+ name: data.organizer.name,
29332
+ url: data.organizer.url
29333
+ } : void 0,
29334
+ offers: data.offers?.map((o) => ({
29335
+ "@type": "Offer",
29336
+ price: o.price,
29337
+ priceCurrency: o.priceCurrency || "USD",
29338
+ availability: `https://schema.org/${o.availability || "InStock"}`,
29339
+ url: o.url,
29340
+ validFrom: o.priceValidUntil
29341
+ }))
29342
+ };
29343
+ }
29344
+ function generateLocalBusinessSchema(data) {
29345
+ return {
29346
+ "@context": "https://schema.org",
29347
+ "@type": "LocalBusiness",
29348
+ name: data.name,
29349
+ description: data.description,
29350
+ url: data.url,
29351
+ telephone: data.telephone,
29352
+ image: data.image,
29353
+ priceRange: data.priceRange,
29354
+ servesCuisine: data.servesCuisine,
29355
+ menu: data.menu,
29356
+ address: {
29357
+ "@type": "PostalAddress",
29358
+ streetAddress: data.address.streetAddress,
29359
+ addressLocality: data.address.addressLocality,
29360
+ addressRegion: data.address.addressRegion,
29361
+ postalCode: data.address.postalCode,
29362
+ addressCountry: data.address.addressCountry
29363
+ },
29364
+ geo: data.geo ? {
29365
+ "@type": "GeoCoordinates",
29366
+ latitude: data.geo.latitude,
29367
+ longitude: data.geo.longitude
29368
+ } : void 0,
29369
+ openingHoursSpecification: data.openingHours?.map(parseOpeningHours).filter(Boolean),
29370
+ aggregateRating: data.aggregateRating ? {
29371
+ "@type": "AggregateRating",
29372
+ ratingValue: data.aggregateRating.ratingValue,
29373
+ reviewCount: data.aggregateRating.reviewCount,
29374
+ bestRating: data.aggregateRating.bestRating || 5
29375
+ } : void 0,
29376
+ review: data.review?.map((r) => ({
29377
+ "@type": "Review",
29378
+ author: { "@type": "Person", name: r.author },
29379
+ datePublished: r.datePublished,
29380
+ reviewBody: r.reviewBody,
29381
+ reviewRating: {
29382
+ "@type": "Rating",
29383
+ ratingValue: r.reviewRating.ratingValue
29384
+ }
29385
+ }))
29386
+ };
29387
+ }
29388
+ function parseOpeningHours(hours) {
29389
+ const match = hours.match(/^([A-Za-z,-]+)\s+(\d{2}:\d{2})-(\d{2}:\d{2})$/);
29390
+ if (!match) return null;
29391
+ const dayMap = {
29392
+ "Mo": "Monday",
29393
+ "Tu": "Tuesday",
29394
+ "We": "Wednesday",
29395
+ "Th": "Thursday",
29396
+ "Fr": "Friday",
29397
+ "Sa": "Saturday",
29398
+ "Su": "Sunday"
29399
+ };
29400
+ const dayPart = match[1];
29401
+ const opens = match[2];
29402
+ const closes = match[3];
29403
+ if (dayPart.includes("-")) {
29404
+ const [start, end] = dayPart.split("-");
29405
+ const days = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
29406
+ const startIdx = days.indexOf(start);
29407
+ const endIdx = days.indexOf(end);
29408
+ const dayOfWeek = days.slice(startIdx, endIdx + 1).map((d) => dayMap[d]);
29409
+ return { "@type": "OpeningHoursSpecification", dayOfWeek, opens, closes };
29410
+ }
29411
+ return {
29412
+ "@type": "OpeningHoursSpecification",
29413
+ dayOfWeek: dayPart.split(",").map((d) => dayMap[d.trim()]),
29414
+ opens,
29415
+ closes
29416
+ };
29417
+ }
29418
+ function generateBreadcrumbSchema(data) {
29419
+ return {
29420
+ "@context": "https://schema.org",
29421
+ "@type": "BreadcrumbList",
29422
+ itemListElement: data.items.map((item, index) => ({
29423
+ "@type": "ListItem",
29424
+ position: index + 1,
29425
+ name: item.name,
29426
+ item: item.url
29427
+ }))
29428
+ };
29429
+ }
29430
+ function generateJobPostingSchema(data) {
29431
+ return {
29432
+ "@context": "https://schema.org",
29433
+ "@type": "JobPosting",
29434
+ title: data.title,
29435
+ description: data.description,
29436
+ datePosted: data.datePosted,
29437
+ validThrough: data.validThrough,
29438
+ employmentType: data.employmentType,
29439
+ hiringOrganization: {
29440
+ "@type": "Organization",
29441
+ name: data.hiringOrganization.name,
29442
+ sameAs: data.hiringOrganization.url,
29443
+ logo: data.hiringOrganization.logo
29444
+ },
29445
+ jobLocation: data.jobLocation ? {
29446
+ "@type": "Place",
29447
+ address: {
29448
+ "@type": "PostalAddress",
29449
+ ...data.jobLocation.address
29450
+ }
29451
+ } : void 0,
29452
+ jobLocationType: data.jobLocationType,
29453
+ baseSalary: data.baseSalary ? {
29454
+ "@type": "MonetaryAmount",
29455
+ currency: data.baseSalary.currency,
29456
+ value: typeof data.baseSalary.value === "number" ? {
29457
+ "@type": "QuantitativeValue",
29458
+ value: data.baseSalary.value,
29459
+ unitText: data.baseSalary.unitText
29460
+ } : {
29461
+ "@type": "QuantitativeValue",
29462
+ minValue: data.baseSalary.value.minValue,
29463
+ maxValue: data.baseSalary.value.maxValue,
29464
+ unitText: data.baseSalary.unitText
29465
+ }
29466
+ } : void 0,
29467
+ experienceRequirements: data.experienceRequirements,
29468
+ educationRequirements: data.educationRequirements ? {
29469
+ "@type": "EducationalOccupationalCredential",
29470
+ credentialCategory: data.educationRequirements
29471
+ } : void 0,
29472
+ skills: data.skills
29473
+ };
29474
+ }
29475
+ function generateCourseSchema(data) {
29476
+ return {
29477
+ "@context": "https://schema.org",
29478
+ "@type": "Course",
29479
+ name: data.name,
29480
+ description: data.description,
29481
+ provider: {
29482
+ "@type": "Organization",
29483
+ name: data.provider.name,
29484
+ sameAs: data.provider.url
29485
+ },
29486
+ offers: data.offers ? {
29487
+ "@type": "Offer",
29488
+ price: data.offers.price,
29489
+ priceCurrency: data.offers.priceCurrency || "USD",
29490
+ availability: `https://schema.org/${data.offers.availability || "InStock"}`
29491
+ } : void 0,
29492
+ coursePrerequisites: data.coursePrerequisites,
29493
+ educationalLevel: data.educationalLevel,
29494
+ timeRequired: data.timeRequired,
29495
+ image: data.image,
29496
+ aggregateRating: data.aggregateRating ? {
29497
+ "@type": "AggregateRating",
29498
+ ratingValue: data.aggregateRating.ratingValue,
29499
+ reviewCount: data.aggregateRating.reviewCount
29500
+ } : void 0
29501
+ };
29502
+ }
29503
+ function generateRecipeSchema(data) {
29504
+ return {
29505
+ "@context": "https://schema.org",
29506
+ "@type": "Recipe",
29507
+ name: data.name,
29508
+ description: data.description,
29509
+ image: data.image,
29510
+ author: {
29511
+ "@type": "Person",
29512
+ name: data.author.name,
29513
+ url: data.author.url
29514
+ },
29515
+ datePublished: data.datePublished,
29516
+ prepTime: data.prepTime,
29517
+ cookTime: data.cookTime,
29518
+ totalTime: data.totalTime,
29519
+ recipeYield: data.recipeYield,
29520
+ recipeCategory: data.recipeCategory,
29521
+ recipeCuisine: data.recipeCuisine,
29522
+ recipeIngredient: data.recipeIngredient,
29523
+ recipeInstructions: data.recipeInstructions.map((step, i) => ({
29524
+ "@type": "HowToStep",
29525
+ position: i + 1,
29526
+ name: step.name,
29527
+ text: step.text
29528
+ })),
29529
+ nutrition: data.nutrition ? {
29530
+ "@type": "NutritionInformation",
29531
+ calories: data.nutrition.calories,
29532
+ fatContent: data.nutrition.fatContent,
29533
+ proteinContent: data.nutrition.proteinContent,
29534
+ carbohydrateContent: data.nutrition.carbohydrateContent
29535
+ } : void 0,
29536
+ aggregateRating: data.aggregateRating ? {
29537
+ "@type": "AggregateRating",
29538
+ ratingValue: data.aggregateRating.ratingValue,
29539
+ reviewCount: data.aggregateRating.reviewCount
29540
+ } : void 0,
29541
+ video: data.video ? generateVideoSchema(data.video) : void 0
29542
+ };
29543
+ }
29544
+ function generateBookSchema(data) {
29545
+ const authors = Array.isArray(data.author) ? data.author : [data.author];
29546
+ return {
29547
+ "@context": "https://schema.org",
29548
+ "@type": "Book",
29549
+ name: data.name,
29550
+ description: data.description,
29551
+ author: authors.map((a) => ({
29552
+ "@type": "Person",
29553
+ name: a.name,
29554
+ url: a.url
29555
+ })),
29556
+ isbn: data.isbn,
29557
+ numberOfPages: data.numberOfPages,
29558
+ bookFormat: data.bookFormat ? `https://schema.org/${data.bookFormat}` : void 0,
29559
+ publisher: data.publisher ? {
29560
+ "@type": "Organization",
29561
+ name: data.publisher
29562
+ } : void 0,
29563
+ datePublished: data.datePublished,
29564
+ image: data.image,
29565
+ inLanguage: data.inLanguage,
29566
+ aggregateRating: data.aggregateRating ? {
29567
+ "@type": "AggregateRating",
29568
+ ratingValue: data.aggregateRating.ratingValue,
29569
+ reviewCount: data.aggregateRating.reviewCount
29570
+ } : void 0,
29571
+ offers: data.offers ? {
29572
+ "@type": "Offer",
29573
+ price: data.offers.price,
29574
+ priceCurrency: data.offers.priceCurrency || "USD",
29575
+ availability: `https://schema.org/${data.offers.availability || "InStock"}`
29576
+ } : void 0
29577
+ };
29578
+ }
29579
+ function generateSpeakableSchema(data) {
29580
+ return {
29581
+ "@context": "https://schema.org",
29582
+ "@type": "WebPage",
29583
+ speakable: {
29584
+ "@type": "SpeakableSpecification",
29585
+ cssSelector: data.cssSelector,
29586
+ xpath: data.xpath
29587
+ },
29588
+ url: data.url
29589
+ };
29590
+ }
29591
+ function generateSitelinksSearchboxSchema(data) {
29592
+ return {
29593
+ "@context": "https://schema.org",
29594
+ "@type": "WebSite",
29595
+ url: data.url,
29596
+ potentialAction: {
29597
+ "@type": "SearchAction",
29598
+ target: {
29599
+ "@type": "EntryPoint",
29600
+ urlTemplate: data.searchUrl
29601
+ },
29602
+ "query-input": data.queryInput || "required name=search_term_string"
29603
+ }
29604
+ };
29605
+ }
29606
+ var Schemas = {
29607
+ organization: generateOrganizationSchema,
29608
+ webSite: generateWebSiteSchema,
29609
+ article: generateArticleSchema,
29610
+ blogPosting: generateBlogPostingSchema,
29611
+ newsArticle: generateNewsArticleSchema,
29612
+ product: generateProductSchema,
29613
+ softwareApplication: generateSoftwareApplicationSchema,
29614
+ faq: generateFAQSchema,
29615
+ howTo: generateHowToSchema,
29616
+ video: generateVideoSchema,
29617
+ event: generateEventSchema,
29618
+ localBusiness: generateLocalBusinessSchema,
29619
+ breadcrumb: generateBreadcrumbSchema,
29620
+ jobPosting: generateJobPostingSchema,
29621
+ course: generateCourseSchema,
29622
+ recipe: generateRecipeSchema,
29623
+ book: generateBookSchema,
29624
+ speakable: generateSpeakableSchema,
29625
+ sitelinksSearchbox: generateSitelinksSearchboxSchema
29626
+ };
29627
+
29045
29628
  // src/git/commit-helper.ts
29046
29629
  var import_child_process2 = require("child_process");
29047
29630
  var import_util2 = require("util");
@@ -30679,7 +31262,7 @@ function generateKeyFacts(facts, options = {}) {
30679
31262
  return formatted.join("\n");
30680
31263
  }
30681
31264
  }
30682
- function generateFAQSchema(faqs, options = {}) {
31265
+ function generateFAQSchema2(faqs, options = {}) {
30683
31266
  const format = options.format || "json-ld";
30684
31267
  if (format === "markdown") {
30685
31268
  const lines = ["## FAQ", ""];
@@ -30762,7 +31345,7 @@ function generateAICitableContent(config) {
30762
31345
  sections.push("");
30763
31346
  }
30764
31347
  if (config.faqs && config.faqs.length > 0) {
30765
- sections.push(generateFAQSchema(config.faqs, { format: "markdown" }));
31348
+ sections.push(generateFAQSchema2(config.faqs, { format: "markdown" }));
30766
31349
  sections.push("");
30767
31350
  }
30768
31351
  return sections.join("\n").trim();
@@ -31605,6 +32188,7 @@ if (typeof globalThis !== "undefined") {
31605
32188
  PRIORITY_WEIGHTS,
31606
32189
  SEO_SCOPES,
31607
32190
  SITE_PROFILE_QUESTIONS,
32191
+ Schemas,
31608
32192
  addTrackingResult,
31609
32193
  analyzeAnchorText,
31610
32194
  analyzeCanonicalAdvanced,