diff --git a/help-tables/markdown_extractor.py b/help-tables/markdown_extractor.py
index 711b813..56d7c86 100644
--- a/help-tables/markdown_extractor.py
+++ b/help-tables/markdown_extractor.py
@@ -366,10 +366,13 @@ def build_output(name, syntax: str, desc: str, example: list, path: str):
         parts.append(f"Examples\n--------\n\n{example_str}")
     desc_str = "\n\n".join(parts) if parts else ""
     desc_str = strip_markdown(desc_str)
-    url_path = str(Path(path).resolve().relative_to(REPO_ROOT)).removesuffix(".md")
+    url_path = str(Path(path).resolve().relative_to(REPO_ROOT)).removesuffix(".md").removesuffix("/README")
     url = f"https://mariadb.com/docs/{url_path}"
-    desc_str += f"\n\nURL: {url}"
-    desc_str = truncate_to_bytes(desc_str)
+    url_line = f"\n\nURL: {url}"
+    desc_str = truncate_to_bytes(desc_str, 15000 - len(url_line.encode('utf8'))) + url_line
+
+    # Titles keep markdown escapes (e.g. AUTO\_INCREMENT); HELP looks names up as typed
+    name = re.sub(r'\\([\\`*_{}\[\]()#+\-.!~|<>])', r'\1', name)
 
     # help_topic.name is CHAR(64) — truncate if over limit
     if len(name) > 64:
