From 1c2d0656e841b97c49500043209c640037a86c59 Mon Sep 17 00:00:00 2001 From: bryantgillespie Date: Thu, 11 Jun 2026 11:32:08 -0400 Subject: [PATCH] Fix broken docs links --- content/community/3.codebase/1.overview.md | 4 ++-- content/frameworks/01.nextjs/02.authentication.md | 2 +- content/guides/11.ai/1.assistant/1.setup.md | 4 ++-- content/guides/11.ai/2.mcp/1.installation.md | 2 +- content/guides/11.ai/2.mcp/8.local-mcp/0.index.md | 2 +- content/releases/2.changelog.md | 4 ++-- ...ng-platform-with-next-js-stripe-and-directus-automate.md | 2 +- .../building-ai-venture-an-ai-powered-game-with-directus.md | 6 +++--- ...tus-as-a-baby-health-tracker-with-owlet-and-ops-genie.md | 2 +- .../search-engine-optimization-best-practices.md | 2 +- .../4.migration/migrate-from-notion-to-directus.md | 2 +- .../5.extensions/validating-third-party-jwts-in-directus.md | 2 +- 12 files changed, 17 insertions(+), 17 deletions(-) diff --git a/content/community/3.codebase/1.overview.md b/content/community/3.codebase/1.overview.md index d0569a068..75ae54052 100644 --- a/content/community/3.codebase/1.overview.md +++ b/content/community/3.codebase/1.overview.md @@ -67,7 +67,7 @@ The `/packages` directory modularizes smaller parts of the Directus project into | [@directus/format-title](https://github.com/directus/directus/tree/main/packages/format-title/) | Custom formatter that converts any string into Title Case. | | [@directus/memory](https://github.com/directus/directus/tree/main/packages/memory/) | Memory / Redis abstraction for Directus. | | [@directus/pressure](https://github.com/directus/directus/tree/main/packages/pressure/) | Pressure based rate limiter. | -| [@directus/random](https://github.com/directus/directus/tree/main/packages/random/) | Set of random-utilities for use in tests. | +| @directus/random | Set of random-utilities for use in tests. | | [@directus/release-notes-generator](https://github.com/directus/directus/tree/main/packages/release-notes-generator) | Package that generates release notes for Directus monorepo. | | [@directus/schema](https://github.com/directus/directus/tree/main/packages/schema) | Utility for extracting information about the database schema. | | [@directus/specs](https://github.com/directus/directus/tree/main/packages/specs) | OpenAPI Specification of the Directus API. | @@ -80,7 +80,7 @@ The `/packages` directory modularizes smaller parts of the Directus project into | [@directus/storage](https://github.com/directus/directus/tree/main/packages/storage) | Object storage abstraction layer for Directus. | | [@directus/stores](https://github.com/directus/directus/tree/main/packages/stores/) | Shared Data Studio state for use in components, extensions, and the `@directus/app` routes. Stores use [Pinia](https://www.npmjs.com/package/pinia). | | [@directus/system-data](https://github.com/directus/directus/tree/main/packages/system-data/) | Definitions and types for Directus system collections. | -| [@directus/tsconfig](https://github.com/directus/directus/tree/main/packages/tsconfig) | The shared TS Config files used by the projects in the Directus ecosystem. | +| @directus/tsconfig | The shared TS Config files used by the projects in the Directus ecosystem. | | [@directus/types](https://github.com/directus/directus/tree/main/packages/types/) | Shared types for Directus. | | [@directus/update-check](https://github.com/directus/directus/tree/main/packages/update-check/) | Check if an update is available for a given package. | | [@directus/utils](https://github.com/directus/directus/tree/main/packages/utils) | Utilities shared between the Directus packages. | diff --git a/content/frameworks/01.nextjs/02.authentication.md b/content/frameworks/01.nextjs/02.authentication.md index 2f34c0605..f4e4b8dd7 100644 --- a/content/frameworks/01.nextjs/02.authentication.md +++ b/content/frameworks/01.nextjs/02.authentication.md @@ -21,7 +21,7 @@ Authentication is a critical part of any modern web application, ensuring that u You will need: -- [A Directus project with admin access](https://github.com/directus-labs/guest-authors/blob/next-live-preview/getting-started/create-a-project). +- [A Directus project with admin access](/getting-started/create-a-project). - Fundamental understanding of Next.js concepts. - Optional but recommended: Familiarity with data modeling in Directus. diff --git a/content/guides/11.ai/1.assistant/1.setup.md b/content/guides/11.ai/1.assistant/1.setup.md index 089a9c66b..01fd1fae8 100644 --- a/content/guides/11.ai/1.assistant/1.setup.md +++ b/content/guides/11.ai/1.assistant/1.setup.md @@ -157,7 +157,7 @@ For each model, you can specify: | **Provider Options** | JSON object for model-specific parameters | ::callout{icon="i-lucide-info" color="info"} -The **Provider Options** field allows you to pass provider-specific parameters to the AI SDK. This is useful for enabling features like extended thinking or custom sampling parameters. See the [Vercel AI SDK documentation](https://sdk.vercel.ai/providers/openai-compatible) for details. +The **Provider Options** field allows you to pass provider-specific parameters to the AI SDK. This is useful for enabling features like extended thinking or custom sampling parameters. See the [Vercel AI SDK documentation](https://ai-sdk.dev/providers/openai-compatible-providers) for details. :: ### Example Configurations @@ -231,7 +231,7 @@ See [Mistral AI documentation](https://docs.mistral.ai/) for available models an Optionally customize how the AI assistant behaves in **Settings → AI → Custom System Prompt**. -The [default system prompt](https://github.com/directus/directus/blob/main/api/src/ai/assistant/constants/system-prompt.ts) provides the AI with helpful instructions on how to interact with Directus and is tuned to provide good results. +The default system prompt provides the AI with helpful instructions on how to interact with Directus and is tuned to provide good results. If you choose to customize the system prompt, it's recommended to use the following template as a starting point: diff --git a/content/guides/11.ai/2.mcp/1.installation.md b/content/guides/11.ai/2.mcp/1.installation.md index 1b7c192df..3d08c7f52 100644 --- a/content/guides/11.ai/2.mcp/1.installation.md +++ b/content/guides/11.ai/2.mcp/1.installation.md @@ -214,7 +214,7 @@ Use this fallback when OAuth is not available for your setup. VS Code uses Client ID Metadata Document registration and does not fall back to Dynamic Client Registration. -1. Install VS Code 1.102+ and the [GitHub Copilot extension](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat). +1. Install VS Code 1.102+ and the [GitHub Copilot extension](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot). 2. Create or edit `mcp.json` in your workspace `.vscode` folder or user settings. 3. Add this configuration: diff --git a/content/guides/11.ai/2.mcp/8.local-mcp/0.index.md b/content/guides/11.ai/2.mcp/8.local-mcp/0.index.md index b925f1c08..a7af4a72d 100644 --- a/content/guides/11.ai/2.mcp/8.local-mcp/0.index.md +++ b/content/guides/11.ai/2.mcp/8.local-mcp/0.index.md @@ -46,7 +46,7 @@ Before starting, ensure you have: - One of the supported MCP clients: Claude Desktop, Cursor, or Raycast If you don't have an existing Directus project, you can: -- Start a free trial on [Directus Cloud](https://directus.cloud/register) +- Start a free trial on [Directus Cloud](https://directus.cloud) - Create a local instance with `npx directus-template-cli@latest init` ## Get Directus Credentials diff --git a/content/releases/2.changelog.md b/content/releases/2.changelog.md index 9525856b1..668542800 100644 --- a/content/releases/2.changelog.md +++ b/content/releases/2.changelog.md @@ -85,7 +85,7 @@ This month we had two releases. - In [11.7.0](https://github.com/directus/directus/releases/tag/v11.7.0) a Schema Builder package was published for mocking database schemas. - The [Visual Editor](https://directus.com/docs/guides/content/visual-editor) has been updated, with improved UX & UI, adding the ability to add a dynamic URL as a route parameter and the ability to display the title of the current page in the URL drop-down and to reflect the URL of the current page as a route parameter of the Visual Editor module. - Our revamped [SEO Plugin](https://github.com/directus-labs/extensions/tree/main/packages/seo-plugin) can now analyze your content for keywords to help cover even more SEO use cases. -- The [Super Header Interface](https://github.com/directus-labs/extensions/tree/main/packages/super-header-interface) adds contextual info, help, and actions right where users need it most - inside the CMS. Updated version includes support for relational fields and translating help content in any language. +- The Super Header Interface adds contextual info, help, and actions right where users need it most - inside the CMS. Updated version includes support for relational fields and translating help content in any language. ## April 2025 - [Directus 11.6.0.](https://github.com/directus/directus/releases/tag/v11.6.0) has a potential breaking change: Fixed filter hook altered payload not passed to action hook on create. @@ -124,7 +124,7 @@ This month we had two releases. - A [Tree View Table Layout](https://github.com/directus-labs/extensions/tree/main/packages/tree-view-table-layout) allows you to nest items within a table. - Add a [Switch Interface](https://github.com/directus-labs/extensions/tree/main/packages/switch-interface) which displays a more traditional toggle switch for boolean fields as opposed to the default Toggle interface. - The [Card Select Interfaces](https://github.com/directus-labs/extensions/tree/main/packages/card-select-interfaces) provides selection options for both radio (single select) and checkbox (multiple select) inputs. -- A [Super Header Interface](https://github.com/directus-labs/extensions/tree/main/packages/super-header-interface) allows you to create rich page headers with titles, subtitles, help information, and interactive actions. +- A Super Header Interface allows you to create rich page headers with titles, subtitles, help information, and interactive actions. ## December 2024 diff --git a/content/tutorials/2.projects/build-an-hotel-booking-platform-with-next-js-stripe-and-directus-automate.md b/content/tutorials/2.projects/build-an-hotel-booking-platform-with-next-js-stripe-and-directus-automate.md index 18fdcdd83..4f5f15179 100644 --- a/content/tutorials/2.projects/build-an-hotel-booking-platform-with-next-js-stripe-and-directus-automate.md +++ b/content/tutorials/2.projects/build-an-hotel-booking-platform-with-next-js-stripe-and-directus-automate.md @@ -862,7 +862,7 @@ You will receive a response that looks like this: In this tutorial, you've successfully created a hotel booking website fetching data from Directus and its relational datasets using Directus's powerful operators and filter rules, trigger a payment on Stripe, create a webhook that listens to the Stripe payment, and then make a reservation in Directus. -The complete code for this tutorial can be found [here](https://github.com/directs-labs/nextjs-hotel-booking). +The original example repository for this tutorial is no longer available. Some possible steps to carry out next might include: diff --git a/content/tutorials/2.projects/building-ai-venture-an-ai-powered-game-with-directus.md b/content/tutorials/2.projects/building-ai-venture-an-ai-powered-game-with-directus.md index 618d197f0..218b24b3f 100644 --- a/content/tutorials/2.projects/building-ai-venture-an-ai-powered-game-with-directus.md +++ b/content/tutorials/2.projects/building-ai-venture-an-ai-powered-game-with-directus.md @@ -10,7 +10,7 @@ description: Learn the advanced techniques used with Directus Flows to build a g --- ## You are standing in an open field… -[AIVenture](https://aiventure.craigharman.com) harks back to the days of text-based adventure games such at [Zork](https://en.wikipedia.org/wiki/Zork) and [Hitchhiker’s Guide to the Galaxy](https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy_(video_game)) but with a modern AI twist. The game uses Directus Flows and user registration along with the [directus-extension-ai-pack](https://github.com/br41nslug/directus-extension-ai-pack) extension to create a low-code game engine offering players a unique story-telling experience. +AIVenture harks back to the days of text-based adventure games such at [Zork](https://en.wikipedia.org/wiki/Zork) and [Hitchhiker’s Guide to the Galaxy](https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy_%28video_game%29) but with a modern AI twist. The game uses Directus Flows and user registration along with the [directus-extension-ai-pack](https://github.com/br41nslug/directus-extension-ai-pack) extension to create a low-code game engine offering players a unique story-telling experience. ![AIVenture in-game screenshot](/img/47ad01fe-84b9-46fd-9de2-438461385360.webp) @@ -43,7 +43,7 @@ The emails sent to players are customized by directly editing the [liquid](https AIVenture uses the [directus-extension-ai-pack](https://github.com/br41nslug/directus-extension-ai-pack) extension to interact with OpenAI’s **Chat Completion API** within Directus Flows. The extension requires minimal setup before allowing chat prompts to be sent to OpenAI and have responses returned for further processing in our flows. -OpenAI charges the API account owner for usage via [tokens](https://platform.openai.com/docs/guides/gpt/managing-tokens) allocated by the length of your prompts and the resulting responses. In order to keep OpenAI bills under control, AIVenture allocates daily, per user, token limits on a player’s progress through the game as well as a hard limit that indicates the game needs to reach a conclusion. +OpenAI charges the API account owner for usage via [tokens](https://platform.openai.com/docs/concepts) allocated by the length of your prompts and the resulting responses. In order to keep OpenAI bills under control, AIVenture allocates daily, per user, token limits on a player’s progress through the game as well as a hard limit that indicates the game needs to reach a conclusion. The ChatGPT API returns a token count with each response, so we were able to access the ChatGPT usage data in our flow: @@ -135,4 +135,4 @@ module.exports = async function(data) { ## Summary -AIVenture is a modern text-based adventure game engine that combines AI technology to create an engaging and immersive gaming experience. The use of Directus Flows simplifies game logic management, and uses sparing amounts of Javascript to handle forking game logic. If you’d like to play a game or two visit the [AIVenture website](https://aiventure.craigharman.com). +AIVenture is a modern text-based adventure game engine that combines AI technology to create an engaging and immersive gaming experience. The use of Directus Flows simplifies game logic management, and uses sparing amounts of Javascript to handle forking game logic. The original AIVenture demo is no longer available. diff --git a/content/tutorials/2.projects/use-directus-as-a-baby-health-tracker-with-owlet-and-ops-genie.md b/content/tutorials/2.projects/use-directus-as-a-baby-health-tracker-with-owlet-and-ops-genie.md index 5f197f3c6..d37b7ee19 100644 --- a/content/tutorials/2.projects/use-directus-as-a-baby-health-tracker-with-owlet-and-ops-genie.md +++ b/content/tutorials/2.projects/use-directus-as-a-baby-health-tracker-with-owlet-and-ops-genie.md @@ -114,7 +114,7 @@ Create a Request operation with the final token we got from the authentication o | Method | URL | | --- | --- | -| GET | https://ads-field-eu-1a2039d9.aylanetworks.com/apiv1/devices.json | +| GET | `https://ads-field-eu-1a2039d9.aylanetworks.com/apiv1/devices.json` | As header parameter, we set the following: diff --git a/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md b/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md index 2b5fc3395..ad136e144 100644 --- a/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md +++ b/content/tutorials/3.tips-and-tricks/search-engine-optimization-best-practices.md @@ -394,7 +394,7 @@ export default defineEventHandler(async (event) => { **Frontend Framework Sitemap Resources** - [Next.js - XML Sitemap Documentation](https://nextjs.org/learn/seo/crawling-and-indexing/xml-sitemaps) -- [Nuxt - Nuxt Simple Sitemap Module](https://nuxt.com/modules/simple-sitemap) +- [Nuxt - Nuxt Sitemap Module](https://nuxtseo.com/docs/sitemap/getting-started/installation) - [Astro - @astro/sitemap Integration](https://docs.astro.build/en/guides/integrations-guide/sitemap/) - [Svelte - Sitemap Package](https://github.com/bartholomej/svelte-sitemap) - [Remix - Remix SEO Package](https://github.com/balavishnuvj/remix-seo) diff --git a/content/tutorials/4.migration/migrate-from-notion-to-directus.md b/content/tutorials/4.migration/migrate-from-notion-to-directus.md index 97582e22e..4eff964af 100644 --- a/content/tutorials/4.migration/migrate-from-notion-to-directus.md +++ b/content/tutorials/4.migration/migrate-from-notion-to-directus.md @@ -90,7 +90,7 @@ Today I am excited to share my recent adventure of migrating my blog content fro Well, Directus is not just another CMS. It offers a unique combination of flexibility, customization, and collaboration for content management. It also has built-in user roles and permissions and a JavaScript SDK which were core features I was particularly interested in. -💡 If you're new to Directus, create a Directus Cloud account [here](https://directus.cloud/register). +💡 If you're new to Directus, create a Directus Cloud account [here](https://directus.cloud). ## Creating the Blogs Collection and Data Model diff --git a/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md b/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md index 5d0c9bdb8..fa651412f 100644 --- a/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md +++ b/content/tutorials/5.extensions/validating-third-party-jwts-in-directus.md @@ -10,7 +10,7 @@ authors: Integrating external identity providers (e.g. Okta) with Directus often results in the need to accept a third-party JWT, validate it and translate it into a Directus **Accountability** object. This allows clients to authenticate with their external provider while Directus enforces access controls. -This guide walks through implementing this flow using Directus's `authenticate` hook. This guide assumes the provider exposes a [JWK](https://www.rfc-editor.org/rfc/rfc7517) endpoint. +This guide walks through implementing this flow using Directus's `authenticate` hook. This guide assumes the provider exposes a [JWK](https://www.rfc-editor.org/rfc/rfc7517.html) endpoint. ## 1. Create an `authenticate` filter hook