{"record":{"id":"f5bb92b2afc75d05","repo":"facebook/docusaurus","slug":"duplicate-blog-post-authors-were-found-in-blog-pos","errorCode":null,"errorMessage":"Duplicate blog post authors were found in blog post path=${blogSourceRelative} front matter:\n- ${duplicateAuthors.map(authorToString).join('\\n- ')}","messagePattern":"Duplicate blog post authors were found in blog post path=(.+?) front matter:\n- (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/docusaurus-plugin-content-blog/src/authorsProblems.ts","lineNumber":65,"sourceCode":"export function reportDuplicateAuthors({\n  authors,\n  blogSourceRelative,\n}: {\n  authors: Author[];\n  blogSourceRelative: string;\n}): void {\n  const duplicateAuthors = _(authors)\n    // for now we only check for predefined authors duplicates\n    .filter((author) => !!author.key)\n    .groupBy((author) => author.key)\n    .pickBy((authorsByKey) => authorsByKey.length > 1)\n    // We only keep the \"test\" of all the duplicate groups\n    // The first author of a group is not really a duplicate...\n    .flatMap(([, ...rest]) => rest)\n    .value();\n\n  if (duplicateAuthors.length > 0) {\n    throw new Error(logger.interpolate`Duplicate blog post authors were found in blog post path=${blogSourceRelative} front matter:\n- ${duplicateAuthors.map(authorToString).join('\\n- ')}`);\n  }\n}\n\nfunction authorToString(author: Author) {\n  return JSON.stringify(author);\n}\n","sourceCodeStart":47,"sourceCodeEnd":73,"githubUrl":"https://github.com/facebook/docusaurus/blob/3f483e80e326cc646b54b83d564b3f0c4881b9a6/packages/docusaurus-plugin-content-blog/src/authorsProblems.ts#L47-L73","documentation":"Thrown by assertBlogPostAuthorsUnique when a single blog post lists the same predefined author key more than once in its `authors` front matter. Only authors with a `key` (resolved from the authors map) are checked; the first occurrence is kept and any extras are reported as duplicates.","triggerScenarios":"Front matter `authors: [jane, jane]` or `authors: [jane, name: Jane Doe]` where the second also resolves to key `jane`. Triggered during blog source processing per post.","commonSituations":"Copy-paste errors when listing authors, mixing keyed references and inline duplicates of the same person, or YAML merge unexpectedly duplicating entries.","solutions":["Open the blog source file printed in the message.","Remove the duplicate author entry (keep one occurrence per key).","If you intended co-authors with the same name, give the second one a distinct key or remove its key."],"exampleFix":"---\n# before\nauthors: [jane, jane]\n---\n---\n# after\nauthors: [jane]\n---","handlingStrategy":"validation","validationCode":"const keys = frontMatter.authors.filter((a: any) => typeof a === 'string' || a?.key).map((a: any) => typeof a === 'string' ? a : a.key);\nconst dupes = keys.filter((k: string, i: number, arr: string[]) => arr.indexOf(k) !== i);\nif (dupes.length) throw new Error(`Duplicate author keys: ${dupes}`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use a markdown-lint/YAML rule to detect duplicate list entries.","Keep author lists short and review them on copy-paste."],"tags":["blog","authors","frontmatter","dedup"],"backgroundTag":null,"analyzedSha":"3f483e80e326cc646b54b83d564b3f0c4881b9a6","analyzedAt":"2026-08-12T13:25:04.382Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}