{
  "scanDirectories": "docs,pages,posts,projects,special",
  "ignoreUnderscoreFiles": false,
  "enableMDXSupport": false,
  "keywordProperty": "targetKeyword",
  "descriptionProperty": "description",
  "titleProperty": "title",
  "useFilenameAsTitle": false,
  "slugProperty": "",
  "useFilenameAsSlug": true,
  "parentFolderSlugFilename": "index",
  "titlePrefixSuffix": "- Astro Modular",
  "checkTitleLength": true,
  "checkHeadingOrder": true,
  "checkAltText": true,
  "checkImageNaming": true,
  "checkBrokenLinks": true,
  "checkExternalLinks": true,
  "enableExternalLinkButton": true,
  "enableExternalLinkVaultCheck": false,
  "checkNakedLinks": true,
  "checkContentLength": true,
  "checkDuplicateContent": false,
  "checkReadingLevel": true,
  "checkPotentiallyBrokenLinks": true,
  "checkPotentiallyBrokenEmbeds": true,
  "useNoteTitles": true,
  "skipH1Check": true,
  "publishMode": true,
  "defaultSort": "issues-desc",
  "showRibbonIcon": true,
  "exportFormat": "csv",
  "minContentLength": 300,
  "keywordDensityMin": 1,
  "keywordDensityMax": 2,
  "duplicateThreshold": 80,
  "cachedGlobalResults": [
    {
      "file": "docs/sourcetree-and-git-setup/index.md",
      "displayName": "SourceTree and Git Setup",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 40 characters (SourceTree and Git Setup + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 75 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 928 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://git-scm.com/download/win",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 29,
              "searchText": "https://git-scm.com/download/win",
              "context": "\n### Windows\n1. Download Git from [git-scm.com](https://git-scm.com/download/win)\n2. Run the installer with default settings\n3. Verify installation: Open Command Prompt and run `git --version`"
            }
          },
          {
            "passed": true,
            "message": "External link: https://git-scm.com/download/mac",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 35,
              "searchText": "https://git-scm.com/download/mac",
              "context": "### macOS\n1. Install Xcode Command Line Tools: `xcode-select --install`\n2. Or download from [git-scm.com](https://git-scm.com/download/mac)\n3. Verify installation: Open Terminal and run `git --version`\n"
            }
          },
          {
            "passed": true,
            "message": "External link: https://www.sourcetreeapp.com/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 69,
              "searchText": "https://www.sourcetreeapp.com/",
              "context": "\n### Download and Install\n1. Visit [sourcetreeapp.com](https://www.sourcetreeapp.com/)\n2. Download the free version\n3. Install with default settings"
            }
          },
          {
            "passed": true,
            "message": "External link: https://netlify.com",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 120,
              "searchText": "https://netlify.com",
              "context": "\n### For Netlify\n1. Go to [netlify.com](https://netlify.com)\n2. Connect your GitHub account\n3. Select your blog repository"
            }
          },
          {
            "passed": true,
            "message": "External link: https://vercel.com",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 129,
              "searchText": "https://vercel.com",
              "context": "\n### For Vercel\n1. Go to [vercel.com](https://vercel.com)\n2. Import your GitHub repository\n3. Framework preset: Astro"
            }
          },
          {
            "passed": true,
            "message": "External link: https://confluence.atlassian.com/sourcetreekb",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 228,
              "searchText": "https://confluence.atlassian.com/sourcetreekb",
              "context": "## Getting Help\n\n- **SourceTree Documentation**: [confluence.atlassian.com](https://confluence.atlassian.com/sourcetreekb)\n- **Git Documentation**: [git-scm.com/doc](https://git-scm.com/doc)\n- **GitHub Help**: [docs.github.com](https://docs.github.com)"
            }
          },
          {
            "passed": true,
            "message": "External link: https://git-scm.com/doc",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 229,
              "searchText": "https://git-scm.com/doc",
              "context": "\n- **SourceTree Documentation**: [confluence.atlassian.com](https://confluence.atlassian.com/sourcetreekb)\n- **Git Documentation**: [git-scm.com/doc](https://git-scm.com/doc)\n- **GitHub Help**: [docs.github.com](https://docs.github.com)\n"
            }
          },
          {
            "passed": true,
            "message": "External link: https://docs.github.com",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 230,
              "searchText": "https://docs.github.com",
              "context": "- **SourceTree Documentation**: [confluence.atlassian.com](https://confluence.atlassian.com/sourcetreekb)\n- **Git Documentation**: [git-scm.com/doc](https://git-scm.com/doc)\n- **GitHub Help**: [docs.github.com](https://docs.github.com)\n\nRemember: Git and SourceTree are powerful tools that will make managing your blog much easier. Take time to learn the basics, and don't hesitate to experiment in a test repository first!"
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 5.5 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 85,
      "issuesCount": 0,
      "warningsCount": 1,
      "noticesCount": 12
    },
    {
      "file": "docs/installing-obsidian.md",
      "displayName": "Installing Obsidian",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 35 characters (Installing Obsidian + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 60 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 154 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://obsidian.md",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 19,
              "searchText": "https://obsidian.md",
              "context": "## Download Obsidian\n\n1. Go to [obsidian.md](https://obsidian.md)\n2. Click \"Download\"\n3. Choose your operating system"
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 3.4 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 75,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 5
    },
    {
      "file": "docs/configuration.md",
      "displayName": "Configuration",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 29 characters (Configuration + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 89 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 784 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 10.9 (Moderately easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 78,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 4
    },
    {
      "file": "docs/api.md",
      "displayName": "API",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 19 characters (API + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 50 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 214 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": false,
            "message": "Reading level too high: 25.7 (Very difficult to read)",
            "suggestion": "Consider simplifying sentence structure and using shorter words",
            "severity": "warning"
          }
        ]
      },
      "overallScore": 58,
      "issuesCount": 0,
      "warningsCount": 4,
      "noticesCount": 4
    },
    {
      "file": "pages/privacy-policy.md",
      "displayName": "Privacy Policy",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 30 characters (Privacy Policy + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 112 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 2616 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html#main_Where_can_I_change_the_settings_for_disabling__or_deleting_local_shared_objects_",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 63,
              "searchText": "https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html#main_Where_can_I_change_the_settings_for_disabling__or_deleting_local_shared_objects_",
              "context": "\n- **Cookies or Browser Cookies.** A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.\n- **Flash Cookies.** Certain features of our Service may use local stored objects (or Flash Cookies) to collect and store information about Your preferences or Your activity on our Service. Flash Cookies are not managed by the same browser settings as those used for Browser Cookies. For more information on how You can delete Flash Cookies, please read \"Where can I change the settings for disabling, or deleting local shared objects?\" available [here](https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html#main_Where_can_I_change_the_settings_for_disabling__or_deleting_local_shared_objects_).\n- **Web Beacons.** Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).\n"
            }
          },
          {
            "passed": true,
            "message": "External link: https://www.privacypolicies.com/blog/cookies/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 66,
              "searchText": "https://www.privacypolicies.com/blog/cookies/",
              "context": "- **Web Beacons.** Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).\n\nCookies can be \"Persistent\" or \"Session\" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. Learn more about cookies: [What Are Cookies?](https://www.privacypolicies.com/blog/cookies/).\n\nWe use both Session and Persistent Cookies for the purposes set out below:"
            }
          }
        ],
        "readingLevel": [
          {
            "passed": false,
            "message": "Reading level too high: 14.9 (Moderately difficult to read)",
            "suggestion": "Consider simplifying sentence structure and using shorter words",
            "severity": "warning"
          }
        ]
      },
      "overallScore": 75,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 6
    },
    {
      "file": "pages/thank-you.md",
      "displayName": "Thank You",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 25 characters (Thank You + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 30 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "No heading structure issues found",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 9 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 3.2 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 68,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 4
    },
    {
      "file": "pages/contact.md",
      "displayName": "Contact",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 23 characters (Contact + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 11 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "No heading structure issues found",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 71 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 1.3 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 68,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 4
    },
    {
      "file": "pages/about.md",
      "displayName": "About",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 21 characters (About + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 77 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 229 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": false,
            "message": "Broken internal link: Astro Suite Vault (Modular) Guide",
            "suggestion": "Check if the file \"posts/astro-suite-vault-modular-guide.md\" exists or update the link",
            "severity": "error",
            "position": {
              "line": 41,
              "searchText": "[Astro Suite Vault (Modular) Guide](posts/astro-suite-vault-modular-guide.md)",
              "context": "## Posts to Check Out\n- [[getting-started|Getting Started]]\n- [Astro Suite Vault (Modular) Guide](posts/astro-suite-vault-modular-guide.md) \n\n---"
            }
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://davidvkimball.com",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 11,
              "searchText": "https://davidvkimball.com",
              "context": "  - about-us\n---\nWelcome to **Astro Modular**, an Astro blog theme template designed for Obsidian users, created by [David V. Kimball](https://davidvkimball.com). This theme turns Obsidian into a powerful CMS for instant blog publishing.\n\n## Philosophy"
            }
          },
          {
            "passed": true,
            "message": "External link: https://unsplash.com/@hg_photo?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 45,
              "searchText": "https://unsplash.com/@hg_photo?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
              "context": "---\n![Water droplet](attachments/water.webp)\n*Photo by [Herbert Goetsch](https://unsplash.com/@hg_photo?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral)*"
            }
          },
          {
            "passed": true,
            "message": "External link: https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 45,
              "searchText": "https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
              "context": "---\n![Water droplet](attachments/water.webp)\n*Photo by [Herbert Goetsch](https://unsplash.com/@hg_photo?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral)*"
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 11.8 (Moderately easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 60,
      "issuesCount": 1,
      "warningsCount": 3,
      "noticesCount": 7
    },
    {
      "file": "posts/xây-dựng-thư-viện-tri-thức-cá-nhân-với-notebook-lm-và-obsidian.md",
      "displayName": "Xây Dựng Thư Viện Tri Thức Cá Nhân Với NotebookLM Và Obsidian",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too long: 77 characters (Xây Dựng Thư Viện Tri Thức Cá Nhân Với NotebookLM Và Obsidian + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 149 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": false,
            "message": "Keyword not found in title",
            "suggestion": "Include your target keyword in the title",
            "severity": "warning"
          }
        ],
        "keywordInDescription": [
          {
            "passed": false,
            "message": "Keyword not found in description",
            "suggestion": "Include your target keyword in the description",
            "severity": "warning"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": false,
            "message": "Keyword not found in H1",
            "suggestion": "Include your target keyword in the H1 heading for better SEO",
            "severity": "warning"
          }
        ],
        "keywordInSlug": [
          {
            "passed": false,
            "message": "Target keyword \"NotebookLM; Obsidian\" not found in slug",
            "suggestion": "Include your target keyword in the file name",
            "severity": "warning"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 0.0%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 2566 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": false,
            "message": "Broken internal link: Nâng cấp kỹ năng và mindset sử dụng AI: Làm gì để hạn chế FOMO trong thời đại AI nhiễu loạn?",
            "suggestion": "Check if the file \"posts/n%C3%A2ng-c%E1%BA%A5p-k%E1%BB%B9-n%C4%83ng-v%C3%A0-mindset-s%E1%BB%AD-d%E1%BB%A5ng-ai-l%C3%A0m-g%C3%AC-%C4%91%E1%BB%83-h%E1%BA%A1n-ch%E1%BA%BF-fomo-trong-th%E1%BB%9Di-%C4%91%E1%BA%A1i-ai-nhi%E1%BB%85u-lo%E1%BA%A1n.md\" exists or update the link",
            "severity": "error",
            "position": {
              "line": 131,
              "searchText": "[Nâng cấp kỹ năng và mindset sử dụng AI: Làm gì để hạn chế FOMO trong thời đại AI nhiễu loạn?](posts/n%C3%A2ng-c%E1%BA%A5p-k%E1%BB%B9-n%C4%83ng-v%C3%A0-mindset-s%E1%BB%AD-d%E1%BB%A5ng-ai-l%C3%A0m-g%C3%AC-%C4%91%E1%BB%83-h%E1%BA%A1n-ch%E1%BA%BF-fomo-trong-th%E1%BB%9Di-%C4%91%E1%BA%A1i-ai-nhi%E1%BB%85u-lo%E1%BA%A1n.md)",
              "context": "- **Markdown format**. Mình đã chia sẻ ở trên, markdown giúp các AI model đọc hiểu dễ hơn, lưu trữ ít tốn dung lượng hơn. Cứ lưu trữ note markdown rồi khi cần thì ném lên NotebookLM hoặc mấy con agents để làm việc rất tiện.\n- **Nhẹ**. Rất nhẹ so với Notion. Một số note trên Notion của mình phức tạp tới mức bây giờ chỉ cần mở lên là lag hết máy rồi. Kiểu như muốn xài nữa cũng không được ấy T.T\n- **Khả năng liên kết kiến thức**. Nếu bạn làm content SEO thì chắc rành về khái niệm internal linking, thì Obsidian rất rất tối ưu cho việc đó. Ví dụ như đang viết bài này nhưng mình muốn liên kết tới bài mình đã viết là [Nâng cấp kỹ năng và mindset sử dụng AI: Làm gì để hạn chế FOMO trong thời đại AI nhiễu loạn?](posts/n%C3%A2ng-c%E1%BA%A5p-k%E1%BB%B9-n%C4%83ng-v%C3%A0-mindset-s%E1%BB%AD-d%E1%BB%A5ng-ai-l%C3%A0m-g%C3%AC-%C4%91%E1%BB%83-h%E1%BA%A1n-ch%E1%BA%BF-fomo-trong-th%E1%BB%9Di-%C4%91%E1%BA%A1i-ai-nhi%E1%BB%85u-lo%E1%BA%A1n.md) thì thao tác siêu nhanh trên bàn phím mà không phải chuyển đổi các tab qua lại copy-paste. Bạn viết 1 tiểu thuyết với hàng trăm chương, hay một internal guideline cho nhân sự công ty, Obsidian hỗ trợ lưu trữ và liên kết các dữ liệu này rất tốt. Đó là chưa kể khả năng liên kết các kiến thức dạng graph, nhưng cái này phức tạp hơn nên mình ko đề cập.\n\nPhạm vi bài viết này mình không thể hướng dẫn sử dụng Obsidian được, có rất nhiều video youtube hướng dẫn bạn có thể tìm hiểu thêm. Mình sẽ ví dụ giao diện Obsidian hiện tại của mình. Mình dùng [PARA framework](https://www.todoist.com/productivity-methods/para-method) (**Projects**, **Areas**, **Resources**, and **Archives**) để cấu trúc và hệ thống các note."
            }
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://notebooklm.google.com/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 27,
              "searchText": "https://notebooklm.google.com/",
              "context": "## NotebookLM và NotebookLM Tools extension\n\n### [NotebookLM](https://notebooklm.google.com/): thư viện lưu trữ và truy vấn kiến thức cá nhân tích hợp AI\nNotebookLM chắc nhiều bạn đã biết rồi, nhưng mình vẫn nói lại trong trường hợp các bạn chưa biết. Ví dụ các bạn muốn tra cứu một thông tin trong một hệ thống dữ liệu/kiến thức nhất định, không phải tràn lan trên mạng hoặc 'đoán mò' bởi AI, thì NotebookLM của Google là công cụ giúp bạn làm việc đó.\n"
            }
          },
          {
            "passed": true,
            "message": "External link: https://io.google/2026/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 71,
              "searchText": "https://io.google/2026/",
              "context": "Giải thích cho bạn hiểu tại sao upgrade này lại quan trọng. \n\nNhiều bạn thắc mắc là NotebookLM cũng dùng Gemini model để hỏi đáp thôi, sao phải qua Gemini chat làm gì cho phức tạp. Thì đây là câu trả lời. Gemini model mặc định trên NotebookLM hiện tại là Gemini 3, còn Gemini có trên phiên bản chat base là 3.1 đến 3.5 và có cả chế độ Thinking Level Extended (mới nhất sau [Google I/O 2026](https://io.google/2026/)).\n\n![gemini-model-in-notebooklm](attachments/gemini-model-in-notebooklm.webp)"
            }
          },
          {
            "passed": true,
            "message": "External link: https://gemini.google.com/share/8b8f59acdd29",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 84,
              "searchText": "https://gemini.google.com/share/8b8f59acdd29",
              "context": "\n![canvas-gemini-outcome](attachments/canvas-gemini-outcome.png)\nXem thử một canvas về ['Toàn cảnh du lịch Việt Nam' ở đây](https://gemini.google.com/share/8b8f59acdd29) được tạo trong 2 phút từ nguồn dữ liệu lưu trữ trong NotebookLM. \n\n#### 4. Tạo Media (video/audio/infographic...) liên quan từ Notebook"
            }
          },
          {
            "passed": true,
            "message": "External link: https://chromewebstore.google.com/detail/notebooklm-tools/hiibkpjljigehlnnecbgehkhfibmahjn?ref=producthunt",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 103,
              "searchText": "https://chromewebstore.google.com/detail/notebooklm-tools/hiibkpjljigehlnnecbgehkhfibmahjn?ref=producthunt",
              "context": "Trên đây là 3 use case điển hình mà mình hay xài, bạn có thể khám phá các use case khác và share với mình nhen!!\n\n### [NotebookLM Tools](https://chromewebstore.google.com/detail/notebooklm-tools/hiibkpjljigehlnnecbgehkhfibmahjn?ref=producthunt): Chrome Extension hỗ trợ quản lý các source và các Notebook khác nhau\nĐã xài NotebookLM rồi thì ko thể bỏ sót em extension này đâu.\nNăm nay để mà bầu chọn 'Ra đường không biết lạy ai' thì tui xin bầu chọn cho em [NotebookLM Tools](https://www.nlmtools.com/) này, và [9Router](https://9router.com/). Mà thú vị thay, cả 2 đều là do người Việt phát triển đó nha!! "
            }
          },
          {
            "passed": true,
            "message": "External link: https://www.nlmtools.com/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 105,
              "searchText": "https://www.nlmtools.com/",
              "context": "### [NotebookLM Tools](https://chromewebstore.google.com/detail/notebooklm-tools/hiibkpjljigehlnnecbgehkhfibmahjn?ref=producthunt): Chrome Extension hỗ trợ quản lý các source và các Notebook khác nhau\nĐã xài NotebookLM rồi thì ko thể bỏ sót em extension này đâu.\nNăm nay để mà bầu chọn 'Ra đường không biết lạy ai' thì tui xin bầu chọn cho em [NotebookLM Tools](https://www.nlmtools.com/) này, và [9Router](https://9router.com/). Mà thú vị thay, cả 2 đều là do người Việt phát triển đó nha!! \n\nNếu sử dụng NotebookLM đủ lâu (và đủ nhiều), bạn sẽ gặp các vấn đề sau:"
            }
          },
          {
            "passed": true,
            "message": "External link: https://9router.com/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 105,
              "searchText": "https://9router.com/",
              "context": "### [NotebookLM Tools](https://chromewebstore.google.com/detail/notebooklm-tools/hiibkpjljigehlnnecbgehkhfibmahjn?ref=producthunt): Chrome Extension hỗ trợ quản lý các source và các Notebook khác nhau\nĐã xài NotebookLM rồi thì ko thể bỏ sót em extension này đâu.\nNăm nay để mà bầu chọn 'Ra đường không biết lạy ai' thì tui xin bầu chọn cho em [NotebookLM Tools](https://www.nlmtools.com/) này, và [9Router](https://9router.com/). Mà thú vị thay, cả 2 đều là do người Việt phát triển đó nha!! \n\nNếu sử dụng NotebookLM đủ lâu (và đủ nhiều), bạn sẽ gặp các vấn đề sau:"
            }
          },
          {
            "passed": true,
            "message": "External link: https://notebooklm.google/plans?gad_source=1&gad_campaignid=22919071430&gbraid=0AAAAA-fwSsfWCEPsfIsGFrrKkInLLifxW",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 122,
              "searchText": "https://notebooklm.google/plans?gad_source=1&gad_campaignid=22919071430&gbraid=0AAAAA-fwSsfWCEPsfIsGFrrKkInLLifxW",
              "context": "\n![notebooklm-plan](attachments/notebooklm-plan.png)\n[NotebookLM Plan](https://notebooklm.google/plans?gad_source=1&gad_campaignid=22919071430&gbraid=0AAAAA-fwSsfWCEPsfIsGFrrKkInLLifxW)\n![google-ai-plan](attachments/google-ai-plan.png)\n[Google AI Plan](https://one.google.com/about/plans?hl=en-US&g1_landing_page=60)"
            }
          },
          {
            "passed": true,
            "message": "External link: https://one.google.com/about/plans?hl=en-US&g1_landing_page=60",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 124,
              "searchText": "https://one.google.com/about/plans?hl=en-US&g1_landing_page=60",
              "context": "[NotebookLM Plan](https://notebooklm.google/plans?gad_source=1&gad_campaignid=22919071430&gbraid=0AAAAA-fwSsfWCEPsfIsGFrrKkInLLifxW)\n![google-ai-plan](attachments/google-ai-plan.png)\n[Google AI Plan](https://one.google.com/about/plans?hl=en-US&g1_landing_page=60)\n\n## Obsidian và Obsidian Clipping Tools Extension"
            }
          },
          {
            "passed": true,
            "message": "External link: https://www.todoist.com/productivity-methods/para-method",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 133,
              "searchText": "https://www.todoist.com/productivity-methods/para-method",
              "context": "- **Khả năng liên kết kiến thức**. Nếu bạn làm content SEO thì chắc rành về khái niệm internal linking, thì Obsidian rất rất tối ưu cho việc đó. Ví dụ như đang viết bài này nhưng mình muốn liên kết tới bài mình đã viết là [Nâng cấp kỹ năng và mindset sử dụng AI: Làm gì để hạn chế FOMO trong thời đại AI nhiễu loạn?](posts/n%C3%A2ng-c%E1%BA%A5p-k%E1%BB%B9-n%C4%83ng-v%C3%A0-mindset-s%E1%BB%AD-d%E1%BB%A5ng-ai-l%C3%A0m-g%C3%AC-%C4%91%E1%BB%83-h%E1%BA%A1n-ch%E1%BA%BF-fomo-trong-th%E1%BB%9Di-%C4%91%E1%BA%A1i-ai-nhi%E1%BB%85u-lo%E1%BA%A1n.md) thì thao tác siêu nhanh trên bàn phím mà không phải chuyển đổi các tab qua lại copy-paste. Bạn viết 1 tiểu thuyết với hàng trăm chương, hay một internal guideline cho nhân sự công ty, Obsidian hỗ trợ lưu trữ và liên kết các dữ liệu này rất tốt. Đó là chưa kể khả năng liên kết các kiến thức dạng graph, nhưng cái này phức tạp hơn nên mình ko đề cập.\n\nPhạm vi bài viết này mình không thể hướng dẫn sử dụng Obsidian được, có rất nhiều video youtube hướng dẫn bạn có thể tìm hiểu thêm. Mình sẽ ví dụ giao diện Obsidian hiện tại của mình. Mình dùng [PARA framework](https://www.todoist.com/productivity-methods/para-method) (**Projects**, **Areas**, **Resources**, and **Archives**) để cấu trúc và hệ thống các note.\n![obsidian-ux](attachments/obsidian-ux.png)\nTùy vào mục đích sử dụng của mỗi dự án, mình sẽ có logic sắp xếp folder, quy định title note, các properties khác nhau..."
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 5.0 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 75,
      "issuesCount": 1,
      "warningsCount": 6,
      "noticesCount": 9
    },
    {
      "file": "posts/nâng-cấp-kỹ-năng-và-mindset-sử-dụng-ai-làm-gì-để-hạn-chế-fomo-trong-thời-đại-ai-nhiễu-loạn.md",
      "displayName": "Nâng cấp kỹ năng và mindset sử dụng AI: Làm gì để hạn chế FOMO trong thời đại AI nhiễu loạn?",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too long: 110 characters (\"Nâng cấp kỹ năng và mindset sử dụng AI: Làm gì để hạn chế FOMO trong thời đại AI nhiễu loạn?\" + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too long: 163 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": true,
            "message": "Keyword found in description",
            "severity": "info"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "Target keyword \"AI\" found in slug",
            "severity": "info"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "Good keyword density: 1.8%",
            "severity": "info"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 2871 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 6.8 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 78,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 0
    },
    {
      "file": "posts/vault-cms-guide.md",
      "displayName": "Vault CMS Guide",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 31 characters (Vault CMS Guide + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 62 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": false,
            "message": "Keyword not found in description",
            "suggestion": "Include your target keyword in the description",
            "severity": "warning"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "Target keyword \"vault cms\" found in slug",
            "severity": "info"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 0.1%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 2312 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://github.com/davidvkimball/obsidian-oxygen",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 43,
              "searchText": "https://github.com/davidvkimball/obsidian-oxygen",
              "context": "## Theme\n\nFor out-of-the-box customization, [Oxygen](https://github.com/davidvkimball/obsidian-oxygen) theme is used, based on the [Minimal theme system](https://minimal.guide/home). It uses a slick color scheme that's highly customizable. \n\nThe [Oxygen Theme Settings](https://github.com/davidvkimball/obsidian-oxygen-settings) plugin is also installed by default, giving you complete control over your experience. You can even define your own color scheme presets. More on that [below](vault-cms-guide.md#Oxygen%20Theme%20Settings%20and%20Zen%20Mode)."
            }
          },
          {
            "passed": true,
            "message": "External link: https://minimal.guide/home",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 43,
              "searchText": "https://minimal.guide/home",
              "context": "## Theme\n\nFor out-of-the-box customization, [Oxygen](https://github.com/davidvkimball/obsidian-oxygen) theme is used, based on the [Minimal theme system](https://minimal.guide/home). It uses a slick color scheme that's highly customizable. \n\nThe [Oxygen Theme Settings](https://github.com/davidvkimball/obsidian-oxygen-settings) plugin is also installed by default, giving you complete control over your experience. You can even define your own color scheme presets. More on that [below](vault-cms-guide.md#Oxygen%20Theme%20Settings%20and%20Zen%20Mode)."
            }
          },
          {
            "passed": true,
            "message": "External link: https://github.com/davidvkimball/obsidian-oxygen-settings",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 45,
              "searchText": "https://github.com/davidvkimball/obsidian-oxygen-settings",
              "context": "For out-of-the-box customization, [Oxygen](https://github.com/davidvkimball/obsidian-oxygen) theme is used, based on the [Minimal theme system](https://minimal.guide/home). It uses a slick color scheme that's highly customizable. \n\nThe [Oxygen Theme Settings](https://github.com/davidvkimball/obsidian-oxygen-settings) plugin is also installed by default, giving you complete control over your experience. You can even define your own color scheme presets. More on that [below](vault-cms-guide.md#Oxygen%20Theme%20Settings%20and%20Zen%20Mode).\n\n## Important Hotkeys"
            }
          },
          {
            "passed": true,
            "message": "External link: https://github.com/kepano/obsidian-minimal",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 142,
              "searchText": "https://github.com/kepano/obsidian-minimal",
              "context": "The Oxygen Theme Settings plugin helps you customize your experience if you use the provided Oxygen Obsidian theme and can help you focus on writing.\n\nYou'll notice a wide variety of color scheme options, most of which were included in the [Minimal](https://github.com/kepano/obsidian-minimal) theme upon which Oxygen is based.\n\nShould you desire to hide any of the panels, you can use `CTRL + ALT Z` for the left side panel, `CTRL + ALT + X` for the right side panel, or `CTRL + ALT + S` for the tab bar. Pressing it again will reveal it again. "
            }
          },
          {
            "passed": true,
            "message": "External link: https://github.com/mgmeyers/obsidian-style-settings",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 152,
              "searchText": "https://github.com/mgmeyers/obsidian-style-settings",
              "context": "Zen Mode offers another quick option to focus on your writing. Pressing `CTRL + SHIFT + Z` will enter Zen mode. When activated, all elements removed except for your content. Use the keystroke again to exit. \n\nIf you like, you can install the [Style Settings](https://github.com/mgmeyers/obsidian-style-settings) plugin for even more control over your experience.\n\n### Git"
            }
          },
          {
            "passed": true,
            "message": "External link: https://obsidian.md/plugins?id=obsidian-git",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 156,
              "searchText": "https://obsidian.md/plugins?id=obsidian-git",
              "context": "### Git\n\nWith the [Git](https://obsidian.md/plugins?id=obsidian-git) plugin, you can easily publish to your Astro blog without leaving Obsidian. Simply configure with git to enable it. By default, you'll see your current git status and count of files changed (if any) in the status bar on the bottom right.\n\nTo publish, you can use `CTRL + SHIFT + S` or click the \"commit-and-sync\" button on the status bar. Your changes will be committed and pushed to your remote repository automatically. By default it's pinned to the far right of the status bar. You can also re-arrange status bar items to your liking using UI Tweaker."
            }
          },
          {
            "passed": true,
            "message": "External link: https://github.com/ViscousPot/GitSync",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 214,
              "searchText": "https://github.com/ViscousPot/GitSync",
              "context": "### Disabling the Git Plugin\n\nIt's recommended to disable the Git plugin on mobile and use something like [Git Sync](https://github.com/ViscousPot/GitSync) for iOS and Android (or [MGit](https://github.com/maks/MGit) just for Android) instead. The Git plugin is notoriously buggy on mobile so it's better to use something else. \n\nHere's how to disable it: "
            }
          },
          {
            "passed": true,
            "message": "External link: https://github.com/maks/MGit",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 214,
              "searchText": "https://github.com/maks/MGit",
              "context": "### Disabling the Git Plugin\n\nIt's recommended to disable the Git plugin on mobile and use something like [Git Sync](https://github.com/ViscousPot/GitSync) for iOS and Android (or [MGit](https://github.com/maks/MGit) just for Android) instead. The Git plugin is notoriously buggy on mobile so it's better to use something else. \n\nHere's how to disable it: "
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 8.7 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 81,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 8
    },
    {
      "file": "posts/tac-dong-hanh-tinh-vong-ngoai.md",
      "displayName": "Tác Động Của Hành Tinh Vòng Ngoài (Outer Planets)",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too long: 65 characters (Tác Động Của Hành Tinh Vòng Ngoài (Outer Planets) + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too long: 164 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 1229 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 7.5 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 78,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 4
    },
    {
      "file": "posts/phan-biet-cam-xuc-va-tam-thuc.md",
      "displayName": "Phân Biệt \"Cảm Xúc\" (Feelings) và \"Tâm Thức\" (Consciousness)",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too long: 76 characters (Phân Biệt \"Cảm Xúc\" (Feelings) và \"Tâm Thức\" (Consciousness) + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 147 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 2255 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 7.8 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 93,
      "issuesCount": 0,
      "warningsCount": 1,
      "noticesCount": 4
    },
    {
      "file": "posts/obsidian-embeds-demo.md",
      "displayName": "Obsidian Embeds Demo",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 36 characters (Obsidian Embeds Demo + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 39 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": true,
            "message": "Keyword found in description",
            "severity": "info"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "Target keyword \"obsidian embeds\" found in slug",
            "severity": "info"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 0.2%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 720 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://www.youtube.com/watch?v=3zeqJ5tqmaQ",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 47,
              "searchText": "https://www.youtube.com/watch?v=3zeqJ5tqmaQ",
              "context": "### YouTube Videos\n\n![Astro Suite for Obsidian](https://www.youtube.com/watch?v=3zeqJ5tqmaQ)\n\nYouTube videos are automatically embedded with responsive design and optimized settings."
            }
          },
          {
            "passed": true,
            "message": "External link: https://x.com/davidvkimball/status/1933196479801536736",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 53,
              "searchText": "https://x.com/davidvkimball/status/1933196479801536736",
              "context": "### Twitter/X Posts\n\n![Why doesn't everyone use Astro? Writing blog posts in markdown is beautiful.](https://x.com/davidvkimball/status/1933196479801536736)\n\nTwitter posts are embedded with theme-aware styling that matches your site's light/dark mode."
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 8.6 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 83,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 2
    },
    {
      "file": "posts/nuoc-tia-to-gung-sa.md",
      "displayName": "Nước Tía Tô Gừng Sả và Ngâm Chân",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 48 characters (Nước Tía Tô Gừng Sả và Ngâm Chân + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 129 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": true,
            "message": "Keyword found in description",
            "severity": "info"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": false,
            "message": "Target keyword \"nước tía tô\" not found in slug",
            "suggestion": "Include your target keyword in the file name",
            "severity": "warning"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 0.4%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 754 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 2.9 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 96,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 0
    },
    {
      "file": "posts/những-skills-cần-có-cho-thời-đại-ai.md",
      "displayName": "Những skills cần có cho thời đại AI",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 51 characters (Những skills cần có cho thời đại AI + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 0 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": false,
            "message": "Keyword not found in description",
            "suggestion": "Include your target keyword in the description",
            "severity": "warning"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "Target keyword \"AI\" found in slug",
            "severity": "info"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "Good keyword density: 1.4%",
            "severity": "info"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 366 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 8.9 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 83,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 0
    },
    {
      "file": "posts/getting-started.md",
      "displayName": "Getting Started",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 31 characters (Getting Started + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 143 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 454 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 8.4 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 100,
      "issuesCount": 0,
      "warningsCount": 0,
      "noticesCount": 4
    },
    {
      "file": "posts/le-chung-tac-duong-phen.md",
      "displayName": "Lê Chưng Tắc Đường Phèn (Trị Ho Khan)",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 53 characters (Lê Chưng Tắc Đường Phèn (Trị Ho Khan) + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 144 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": true,
            "message": "Keyword found in description",
            "severity": "info"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": false,
            "message": "Target keyword \"ho khan\" not found in slug",
            "suggestion": "Include your target keyword in the file name",
            "severity": "warning"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 0.4%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 741 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 2.8 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 96,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 0
    },
    {
      "file": "posts/formatting-reference.md",
      "displayName": "Formatting Reference",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 36 characters (Formatting Reference + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 155 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No valid keyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": false,
            "message": "\"Heading 1\" (H1) appears after H3",
            "suggestion": "H1 should be the first heading or not used at all",
            "severity": "warning",
            "position": {
              "line": 35,
              "searchText": "# Heading 1",
              "context": "### Headings\n\n# Heading 1\n## Heading 2\n### Heading 3"
            }
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 1198 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": false,
            "message": "Naked link found: https://example.com",
            "suggestion": "Convert to markdown link format: [link text](url)",
            "severity": "warning",
            "position": {
              "line": 225,
              "searchText": "https://example.com",
              "context": "This is a [reference link][1] and this is another [reference link][markdown].\n\n[1]: https://example.com\n[markdown]: https://daringfireball.net/projects/markdown/\n"
            }
          },
          {
            "passed": false,
            "message": "Naked link found: https://daringfireball.net/projects/markdown/",
            "suggestion": "Convert to markdown link format: [link text](url)",
            "severity": "warning",
            "position": {
              "line": 226,
              "searchText": "https://daringfireball.net/projects/markdown/",
              "context": "\n[1]: https://example.com\n[markdown]: https://daringfireball.net/projects/markdown/\n\n## Code Blocks"
            }
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://unsplash.com/@antoinerault?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 121,
              "searchText": "https://unsplash.com/@antoinerault?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
              "context": "\n![Mountains](/posts/attachments/mountains.webp)\n*Photo by [Antoine Rault](https://unsplash.com/@antoinerault?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral)*\n\n#### Multiple Image Layouts"
            }
          },
          {
            "passed": true,
            "message": "External link: https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 121,
              "searchText": "https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral",
              "context": "\n![Mountains](/posts/attachments/mountains.webp)\n*Photo by [Antoine Rault](https://unsplash.com/@antoinerault?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=Obsidian%20Image%20Inserter%20Plugin&utm_medium=referral)*\n\n#### Multiple Image Layouts"
            }
          },
          {
            "passed": true,
            "message": "External link: https://obsidian.md",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 159,
              "searchText": "https://obsidian.md",
              "context": "### Linked Images\n\n[![Mountains](/posts/attachments/mountains.webp)](https://obsidian.md)\n\n```"
            }
          },
          {
            "passed": true,
            "message": "External link: https://example.com",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 225,
              "searchText": "https://example.com",
              "context": "This is a [reference link][1] and this is another [reference link][markdown].\n\n[1]: https://example.com\n[markdown]: https://daringfireball.net/projects/markdown/\n"
            }
          },
          {
            "passed": true,
            "message": "External link: https://daringfireball.net/projects/markdown/",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 226,
              "searchText": "https://daringfireball.net/projects/markdown/",
              "context": "\n[1]: https://example.com\n[markdown]: https://daringfireball.net/projects/markdown/\n\n## Code Blocks"
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 7.1 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 75,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 9
    },
    {
      "file": "posts/chao-tia-to.md",
      "displayName": "Cháo Tía Tô Gừng Trứng Gà",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 41 characters (Cháo Tía Tô Gừng Trứng Gà + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 156 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": true,
            "message": "Keyword found in description",
            "severity": "info"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": false,
            "message": "Target keyword \"tía tô\" not found in slug",
            "suggestion": "Include your target keyword in the file name",
            "severity": "warning"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 1.0%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 927 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 2.5 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 96,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 0
    },
    {
      "file": "posts/chanh-non-muoi-hat.md",
      "displayName": "Chanh Non Ngậm Muối Hạt Trị Viêm Họng",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 53 characters (Chanh Non Ngậm Muối Hạt Trị Viêm Họng + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 147 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "Keyword found in title",
            "severity": "info"
          }
        ],
        "keywordInDescription": [
          {
            "passed": true,
            "message": "Keyword found in description",
            "severity": "info"
          }
        ],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "Keyword found in H1",
            "severity": "info"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "Target keyword \"chanh non\" found in slug",
            "severity": "info"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": false,
            "message": "Keyword density too low: 0.4%",
            "suggestion": "Aim for at least 1% density",
            "severity": "warning"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 858 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "All media elements have alt text",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 2.4 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 98,
      "issuesCount": 0,
      "warningsCount": 1,
      "noticesCount": 0
    },
    {
      "file": "projects/vault-cms/index.md",
      "displayName": "Vault CMS",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 25 characters (Vault CMS + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 67 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 616 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "Relative path link: Vault Guide",
            "suggestion": "This link may be valid for static site generators but may not work in Obsidian",
            "severity": "notice",
            "position": {
              "line": 81,
              "searchText": "[Vault Guide](/posts/vault-cms-guide)",
              "context": "- **CMS-Like Homepage**: \"Home Base\" view showing all posts in reverse-chronological order with bulk editing\n- **Astro Integration**: Seamless workflow from Obsidian to Astro publishing without link conversion\n- **Optimized Hotkeys**: Custom keyboard shortcuts designed for Astro workflows (see [Vault Guide](/posts/vault-cms-guide))\n- **Git Integration**: Optional instant-publish functionality via Git plugin\n- **Visual Parity**: Oxygen theme matches frontend styling for consistent experience"
            }
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://github.com/davidvkimball/astro-modular",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 106,
              "searchText": "https://github.com/davidvkimball/astro-modular",
              "context": "## Project Status\n\nThis project is actively maintained and provides a complete solution for Obsidian-based content management with Astro publishing workflows. The suite is designed to work seamlessly with the above examples and [Astro Modular](https://github.com/davidvkimball/astro-modular) but can be integrated into any Astro project.\n\n<a href=\"https://github.com/davidvkimball/vault-cms\" class=\"no-styling no-underline\" target=\"_blank\"><button class=\"btn btn-primary w-full\">  "
            }
          }
        ],
        "readingLevel": [
          {
            "passed": false,
            "message": "Reading level too high: 18.6 (Very difficult to read)",
            "suggestion": "Consider simplifying sentence structure and using shorter words",
            "severity": "warning"
          }
        ]
      },
      "overallScore": 68,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 6
    },
    {
      "file": "projects/hanh-trinh-chua-cam-sot.md",
      "displayName": "Hành Trình Chữa Cảm Sốt, Ho, Viêm Họng bằng Ăn Uống",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too long: 67 characters (Hành Trình Chữa Cảm Sốt, Ho, Viêm Họng bằng Ăn Uống + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 109 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 960 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": false,
            "message": "Wikilink media missing alt text: attachments/chua-tri-cam-sot.webp",
            "suggestion": "Add alt text using ![[media.png|alt text]] syntax or consider using standard markdown media syntax",
            "severity": "error",
            "position": {
              "line": 18,
              "searchText": "![[attachments/chua-tri-cam-sot.webp]]",
              "context": "featured: true\n---\n![[attachments/chua-tri-cam-sot.webp]]\n\nĐể thuận tiện cho việc theo dõi, Nhi tạo bài viết này như một bản đồ tổng hợp lại toàn bộ hành trình chăm sóc cơ thể khi gặp phải các cơn cảm sốt thông thường. Bệnh tật thường không diễn ra một cách ngẫu nhiên mà luôn tuân theo một chuỗi nhân quả tự nhiên. Việc hiểu rõ cơ thể đang ở giai đoạn nào sẽ giúp bạn chọn đúng loại thức ăn mang tính vị phù hợp để hỗ trợ quá trình tự chữa lành."
            }
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "External link: https://unsplash.com/@ghulamkhairulbashar",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 30,
              "searchText": "https://unsplash.com/@ghulamkhairulbashar",
              "context": "- **Bài viết chi tiết:** [[chanh-non-muoi-hat|Trị Viêm Họng - Chanh Non Ngậm Muối Hạt]]\n![Tổng Hợp Hành Trình Chữa Cảm Sốt, Ho, Viêm Họng Bằng Ăn Uống - green lemon](attachments/chanh-non.webp)\n*Photo by [Ghulam Khairul Bashar](https://unsplash.com/@ghulamkhairulbashar) on [Unsplash](https://unsplash.com/?utm_source=Obsidian%20Image%20Manager&utm_medium=referral)*\n\n**Giai đoạn 2: Trị Sốt gai lạnh (Đẩy hàn khí ra ngoài)** Khi hàn khí nhiễm sâu vào trong, bạn sẽ thấy ớn lạnh, rét run từ trong tủy dù mặc áo ấm, và đặc biệt là tuyệt đối không đổ mồ hôi. Đây là lúc cần mượn tính ấm nóng (Dương/Ôn) để mở lỗ chân lông, ép khí lạnh thoát ra ngoài."
            }
          },
          {
            "passed": true,
            "message": "External link: https://unsplash.com/?utm_source=Obsidian%20Image%20Manager&utm_medium=referral",
            "suggestion": "To find if any of these are broken, use the 'Check external links for 404s' button to trigger it.",
            "severity": "notice",
            "position": {
              "line": 30,
              "searchText": "https://unsplash.com/?utm_source=Obsidian%20Image%20Manager&utm_medium=referral",
              "context": "- **Bài viết chi tiết:** [[chanh-non-muoi-hat|Trị Viêm Họng - Chanh Non Ngậm Muối Hạt]]\n![Tổng Hợp Hành Trình Chữa Cảm Sốt, Ho, Viêm Họng Bằng Ăn Uống - green lemon](attachments/chanh-non.webp)\n*Photo by [Ghulam Khairul Bashar](https://unsplash.com/@ghulamkhairulbashar) on [Unsplash](https://unsplash.com/?utm_source=Obsidian%20Image%20Manager&utm_medium=referral)*\n\n**Giai đoạn 2: Trị Sốt gai lạnh (Đẩy hàn khí ra ngoài)** Khi hàn khí nhiễm sâu vào trong, bạn sẽ thấy ớn lạnh, rét run từ trong tủy dù mặc áo ấm, và đặc biệt là tuyệt đối không đổ mồ hôi. Đây là lúc cần mượn tính ấm nóng (Dương/Ôn) để mở lỗ chân lông, ép khí lạnh thoát ra ngoài."
            }
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 5.0 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 68,
      "issuesCount": 1,
      "warningsCount": 2,
      "noticesCount": 6
    },
    {
      "file": "projects/astro-composer.md",
      "displayName": "Astro Composer",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 30 characters (Astro Composer + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": true,
            "message": "Good description length: 151 characters",
            "severity": "info"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": true,
            "message": "Good content length: 671 words",
            "severity": "info"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": false,
            "message": "Broken internal link: My Post",
            "suggestion": "Check if the file \"My Post.md\" exists or update the link",
            "severity": "error",
            "position": {
              "line": 36,
              "searchText": "[[My Post]]",
              "context": "\n### Link Conversion\n- **Internal Link Conversion**: Converts Obsidian wikilinks and markdown internal links (`[[My Post]]` or `[My Post](my-post)`) to Astro-friendly Markdown links (`[My Post](/blog/my-post/)`), supporting both file-based and folder-based post structures.\n\n### Multi-Content Type Support"
            }
          },
          {
            "passed": false,
            "message": "Broken internal link: My Post",
            "suggestion": "Check if the file \"my-post.md\" exists or update the link",
            "severity": "error",
            "position": {
              "line": 36,
              "searchText": "[My Post](my-post)",
              "context": "\n### Link Conversion\n- **Internal Link Conversion**: Converts Obsidian wikilinks and markdown internal links (`[[My Post]]` or `[My Post](my-post)`) to Astro-friendly Markdown links (`[My Post](/blog/my-post/)`), supporting both file-based and folder-based post structures.\n\n### Multi-Content Type Support"
            }
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "Relative path link: My Post",
            "suggestion": "This link may be valid for static site generators but may not work in Obsidian",
            "severity": "notice",
            "position": {
              "line": 36,
              "searchText": "[My Post](/blog/my-post/)",
              "context": "\n### Link Conversion\n- **Internal Link Conversion**: Converts Obsidian wikilinks and markdown internal links (`[[My Post]]` or `[My Post](my-post)`) to Astro-friendly Markdown links (`[My Post](/blog/my-post/)`), supporting both file-based and folder-based post structures.\n\n### Multi-Content Type Support"
            }
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": false,
            "message": "Reading level too high: 12.7 (Moderately difficult to read)",
            "suggestion": "Consider simplifying sentence structure and using shorter words",
            "severity": "warning"
          }
        ]
      },
      "overallScore": 80,
      "issuesCount": 2,
      "warningsCount": 1,
      "noticesCount": 5
    },
    {
      "file": "special/projects.md",
      "displayName": "Projects",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 24 characters (Projects + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 26 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "No heading structure issues found",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 2 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": false,
            "message": "Reading level too high: 14.7 (Moderately difficult to read)",
            "suggestion": "Consider simplifying sentence structure and using shorter words",
            "severity": "warning"
          }
        ]
      },
      "overallScore": 58,
      "issuesCount": 0,
      "warningsCount": 4,
      "noticesCount": 4
    },
    {
      "file": "special/posts.md",
      "displayName": "All Posts",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 25 characters (All Posts + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 0 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "No heading structure issues found",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 10 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": false,
            "message": "Reading level too high: 13.5 (Moderately difficult to read)",
            "suggestion": "Consider simplifying sentence structure and using shorter words",
            "severity": "warning"
          }
        ]
      },
      "overallScore": 58,
      "issuesCount": 0,
      "warningsCount": 4,
      "noticesCount": 4
    },
    {
      "file": "special/home.md",
      "displayName": "Homepage",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 24 characters (Homepage + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "No description found in properties",
            "suggestion": "Add description to properties",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "Heading structure is correct",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 34 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "Relative path link: posts",
            "suggestion": "This link may be valid for static site generators but may not work in Obsidian",
            "severity": "notice",
            "position": {
              "line": 8,
              "searchText": "[posts](/posts/)",
              "context": "## Thanks for Reading\n\nIf you're looking for more, check out the [posts](/posts/) page.\n"
            }
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 5.4 (Very easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 68,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 5
    },
    {
      "file": "special/docs.md",
      "displayName": "Documentation",
      "checks": {
        "titleLength": [
          {
            "passed": false,
            "message": "Title too short: 29 characters (Documentation + \" - Astro Modular\")",
            "suggestion": "Aim for 30-60 characters",
            "severity": "warning"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 102 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "No heading structure issues found",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 12 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "Good reading level: 8.8 (Easy to read)",
            "severity": "info"
          }
        ]
      },
      "overallScore": 68,
      "issuesCount": 0,
      "warningsCount": 3,
      "noticesCount": 4
    },
    {
      "file": "special/404.md",
      "displayName": "Page Not Found",
      "checks": {
        "titleLength": [
          {
            "passed": true,
            "message": "Good title length: 30 characters (Page Not Found + \" - Astro Modular\")",
            "severity": "info"
          }
        ],
        "metaDescription": [
          {
            "passed": false,
            "message": "Description too short: 81 characters",
            "suggestion": "Aim for 120-160 characters",
            "severity": "warning"
          }
        ],
        "titleH1Uniqueness": [
          {
            "passed": true,
            "message": "Meta title and H1 are unique (prefix/suffix configured)",
            "severity": "info"
          }
        ],
        "keywordInTitle": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInDescription": [],
        "keywordInHeadings": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "keywordInSlug": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "slugFormat": [],
        "keywordDensity": [
          {
            "passed": true,
            "message": "No targetKeyword defined in properties",
            "severity": "notice"
          }
        ],
        "headingOrder": [
          {
            "passed": true,
            "message": "No heading structure issues found",
            "severity": "info"
          }
        ],
        "contentLength": [
          {
            "passed": false,
            "message": "Content too short: 0 words",
            "suggestion": "Aim for at least 300 words",
            "severity": "warning"
          }
        ],
        "duplicateTitles": [],
        "duplicateDescriptions": [],
        "duplicateContent": [],
        "altText": [
          {
            "passed": true,
            "message": "No media elements in this post",
            "severity": "info"
          }
        ],
        "imageFileNames": [
          {
            "passed": true,
            "message": "All images have good file names",
            "severity": "info"
          }
        ],
        "nakedLinks": [
          {
            "passed": true,
            "message": "No naked links found",
            "severity": "info"
          }
        ],
        "brokenLinks": [
          {
            "passed": true,
            "message": "No broken internal links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenLinks": [
          {
            "passed": true,
            "message": "No potentially broken links found",
            "severity": "info"
          }
        ],
        "potentiallyBrokenEmbeds": [],
        "externalBrokenLinks": [
          {
            "passed": true,
            "message": "No external links found",
            "severity": "info"
          }
        ],
        "readingLevel": [
          {
            "passed": true,
            "message": "No readable content found for reading level analysis",
            "severity": "info"
          }
        ]
      },
      "overallScore": 75,
      "issuesCount": 0,
      "warningsCount": 2,
      "noticesCount": 4
    }
  ],
  "lastScanTimestamp": 1779355273686,
  "showNotices": true
}