{t.common.all_tools}
diff --git a/src/app/[lang]/convert-encode/layout.tsx b/src/app/[lang]/convert-encode/layout.tsx
index fcf0e1a0..7e985548 100644
--- a/src/app/[lang]/convert-encode/layout.tsx
+++ b/src/app/[lang]/convert-encode/layout.tsx
@@ -3,8 +3,10 @@ import type { Metadata } from "next"
import { isValidLocale } from "@/core/i18n/i18n"
import { getTranslation } from "@/core/i18n/translations/catalog"
import { buildHubMetadata } from "@/core/seo/seo"
+import { buildCanonicalUrl, buildLocalizedAlternates } from "@/core/seo/urls"
const SLUG = "convert-encode"
+const CANONICAL_SLUG = "all-tools"
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise
diff --git a/src/features/tool-discovery/all-tools-query-robots.tsx b/src/features/tool-discovery/all-tools-query-robots.tsx
new file mode 100644
index 00000000..a619dc18
--- /dev/null
+++ b/src/features/tool-discovery/all-tools-query-robots.tsx
@@ -0,0 +1,26 @@
+"use client"
+
+import * as React from "react"
+import { shouldNoindexAllToolsUrl } from "@/core/routing/seo-route-policy"
+
+const META_SELECTOR = 'meta[name="robots"][data-byteflow-all-tools-query-robots="true"]'
+
+export function AllToolsQueryRobots() {
+ React.useEffect(() => {
+ const shouldNoindex = shouldNoindexAllToolsUrl(window.location.href)
+ const existing = document.head.querySelector {toolT.hmac_secret_hint} {toolT.error_title} {text("no_steps_title")} {text("no_steps")}{labels.commonWorkflows}
{group.title}
@@ -739,10 +739,10 @@ export function AllToolsDiscovery({
+
{tool.title}