diff --git a/.github/workflows/validate-sync.yml b/.github/workflows/validate-sync.yml
index e1efe4a5..ffa28429 100644
--- a/.github/workflows/validate-sync.yml
+++ b/.github/workflows/validate-sync.yml
@@ -23,3 +23,5 @@ jobs:
python tests/test_sync_from_platformbackend.py
python tests/test_quickstart_acquisition.py
python scripts/check_quickstart_acquisition.py
+ python tests/test_quickstart_sdk.py
+ python scripts/check_quickstart_sdk.py
diff --git a/ar/quickstart.mdx b/ar/quickstart.mdx
index 38de2243..ac4252c3 100644
--- a/ar/quickstart.mdx
+++ b/ar/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
دروس تفصيلية لكل خدمة
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/de/quickstart.mdx b/de/quickstart.mdx
index bece23e3..b1b20b64 100644
--- a/de/quickstart.mdx
+++ b/de/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Detaillierte Integrationsanleitungen für jeden Dienst
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/el/quickstart.mdx b/el/quickstart.mdx
index 1063299c..93a2c500 100644
--- a/el/quickstart.mdx
+++ b/el/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Αναλυτικά μαθήματα ενσωμάτωσης για κάθε υπηρεσία
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/en/quickstart.mdx b/en/quickstart.mdx
index d3cce4a5..26c05c08 100644
--- a/en/quickstart.mdx
+++ b/en/quickstart.mdx
@@ -121,4 +121,7 @@ Heavier video and music endpoints typically return only a `task_id` and deliver
Call from Claude / Cursor directly
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
diff --git a/es/quickstart.mdx b/es/quickstart.mdx
index 118e392c..77ee2bbf 100644
--- a/es/quickstart.mdx
+++ b/es/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Tutoriales detallados de integración para cada servicio
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/fi/quickstart.mdx b/fi/quickstart.mdx
index 39557d70..0ff4cd08 100644
--- a/fi/quickstart.mdx
+++ b/fi/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Yksityiskohtaiset integraatio-oppaat jokaiselle palvelulle
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/fr/quickstart.mdx b/fr/quickstart.mdx
index d5924060..d9b3a15f 100644
--- a/fr/quickstart.mdx
+++ b/fr/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Tutoriels détaillés pour l'intégration de chaque service
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/it/quickstart.mdx b/it/quickstart.mdx
index 6271358a..cef7c557 100644
--- a/it/quickstart.mdx
+++ b/it/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Tutorial dettagliati per l'integrazione di ogni servizio
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/ja/quickstart.mdx b/ja/quickstart.mdx
index 8c678c2e..db8d022f 100644
--- a/ja/quickstart.mdx
+++ b/ja/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
各サービスの詳細な統合チュートリアル
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/ko/quickstart.mdx b/ko/quickstart.mdx
index a76bdc41..8661b233 100644
--- a/ko/quickstart.mdx
+++ b/ko/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
각 서비스별 상세 통합 튜토리얼
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/pl/quickstart.mdx b/pl/quickstart.mdx
index 90c9f1d7..bf1a69c0 100644
--- a/pl/quickstart.mdx
+++ b/pl/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Szczegółowe instrukcje integracji dla każdej usługi
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/pt/quickstart.mdx b/pt/quickstart.mdx
index 420bc1ad..e7bb6ef0 100644
--- a/pt/quickstart.mdx
+++ b/pt/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Tutoriais detalhados de integração para cada serviço
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/ru/quickstart.mdx b/ru/quickstart.mdx
index ad4532e8..14076a06 100644
--- a/ru/quickstart.mdx
+++ b/ru/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Подробные инструкции по интеграции для каждого сервиса
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/scripts/check_quickstart_sdk.py b/scripts/check_quickstart_sdk.py
new file mode 100644
index 00000000..a4e7b4ff
--- /dev/null
+++ b/scripts/check_quickstart_sdk.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+from __future__ import annotations
+
+import sys
+from pathlib import Path
+
+
+ROOT = Path(__file__).resolve().parents[1]
+SDK_URL = (
+ "https://github.com/AceDataCloud/SDK"
+ "?utm_source=docs&utm_medium=quickstart&utm_campaign=docs-sdk"
+)
+
+
+def main() -> int:
+ errors: list[str] = []
+ files = sorted(ROOT.glob("*/quickstart.mdx"))
+ if not files:
+ errors.append("no localized quickstart pages found")
+ for path in files:
+ text = path.read_text()
+ if text.count(f'') != 1:
+ errors.append(f"{path.relative_to(ROOT)}: expected one canonical SDK card")
+ for package in ("`acedatacloud`", "`@acedatacloud/sdk`", "Go"):
+ if package not in text:
+ errors.append(f"{path.relative_to(ROOT)}: SDK card is missing {package}")
+ if errors:
+ for error in errors:
+ print(error, file=sys.stderr)
+ return 1
+ print(f"Quickstart SDK cards cover {len(files)} localized pages")
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/sr/quickstart.mdx b/sr/quickstart.mdx
index 2cbe842d..2700730a 100644
--- a/sr/quickstart.mdx
+++ b/sr/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Detaljni vodiči za integraciju za svaku uslugu
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/sv/quickstart.mdx b/sv/quickstart.mdx
index 5e0af7c3..07fb19fa 100644
--- a/sv/quickstart.mdx
+++ b/sv/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Detaljerade integrationsguider för varje tjänst
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/tests/test_quickstart_sdk.py b/tests/test_quickstart_sdk.py
new file mode 100644
index 00000000..61771cf7
--- /dev/null
+++ b/tests/test_quickstart_sdk.py
@@ -0,0 +1,29 @@
+from __future__ import annotations
+
+import sys
+import unittest
+from pathlib import Path
+
+
+SCRIPTS = Path(__file__).resolve().parents[1] / "scripts"
+sys.path.insert(0, str(SCRIPTS))
+
+from check_quickstart_sdk import SDK_URL, main # noqa: E402
+
+
+class QuickstartSdkTest(unittest.TestCase):
+ def test_sdk_campaign_is_stable(self) -> None:
+ self.assertEqual(
+ SDK_URL,
+ "https://github.com/AceDataCloud/SDK?utm_source=docs&utm_medium=quickstart&utm_campaign=docs-sdk",
+ )
+
+ def test_sdk_target_is_the_canonical_repository(self) -> None:
+ self.assertTrue(SDK_URL.startswith("https://github.com/AceDataCloud/SDK?"))
+
+ def test_repository_quickstarts_link_the_sdks(self) -> None:
+ self.assertEqual(main(), 0)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/uk/quickstart.mdx b/uk/quickstart.mdx
index 155aed4f..71064d6e 100644
--- a/uk/quickstart.mdx
+++ b/uk/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
Детальні інструкції з інтеграції для кожного сервісу
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file
diff --git a/zh-Hans/quickstart.mdx b/zh-Hans/quickstart.mdx
index 47df8962..c1e72751 100644
--- a/zh-Hans/quickstart.mdx
+++ b/zh-Hans/quickstart.mdx
@@ -121,4 +121,7 @@ console.log(await res.json());
在 Claude / Cursor 里直接调用
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
diff --git a/zh-Hant/quickstart.mdx b/zh-Hant/quickstart.mdx
index f5f2a34d..51c5ef5c 100644
--- a/zh-Hant/quickstart.mdx
+++ b/zh-Hant/quickstart.mdx
@@ -76,4 +76,7 @@ console.log(data);
每個服務的詳細整合教程
+
+ `acedatacloud` · `@acedatacloud/sdk` · Go
+
\ No newline at end of file