diff --git a/locales/index.d.ts b/locales/index.d.ts
index 0ae188f1f7..91cdf54255 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -1670,6 +1670,10 @@ export interface Locale extends ILocale {
      * 複数のCaptchaを使用すると干渉を起こす可能性があります。他のCaptchaを無効にしますか?キャンセルして複数のCaptchaを有効化したままにすることも可能です。
      */
     "avoidMultiCaptchaConfirm": string;
+    /**
+     * サイトキーに"{testSiteKey}"と入力することでプレビューを確認できます。
+     */
+    "testSiteKeyMessage": ParameterizedString<"testSiteKey">;
     /**
      * アンテナ
      */
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 1b59708d85..1c0b25767c 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -413,6 +413,7 @@ enableTurnstile: "Turnstileを有効にする"
 turnstileSiteKey: "サイトキー"
 turnstileSecretKey: "シークレットキー"
 avoidMultiCaptchaConfirm: "複数のCaptchaを使用すると干渉を起こす可能性があります。他のCaptchaを無効にしますか?キャンセルして複数のCaptchaを有効化したままにすることも可能です。"
+testSiteKeyMessage: "サイトキーに\"{testSiteKey}\"と入力することでプレビューを確認できます。"
 antennas: "アンテナ"
 manageAntennas: "アンテナの管理"
 name: "名前"
diff --git a/packages/backend/src/server/api/endpoints/admin/captcha/save.ts b/packages/backend/src/server/api/endpoints/admin/captcha/save.ts
index d3a71e32f3..511cb055dc 100644
--- a/packages/backend/src/server/api/endpoints/admin/captcha/save.ts
+++ b/packages/backend/src/server/api/endpoints/admin/captcha/save.ts
@@ -15,7 +15,8 @@ export const meta = {
 	requireModerator: true,
 	secure: true,
 
-	kind: 'read:admin:captcha',
+	// 実態はmetaの更新であるため
+	kind: 'write:admin:meta',
 
 	errors: {
 		invalidProvider: {
diff --git a/packages/frontend/src/pages/admin/bot-protection.vue b/packages/frontend/src/pages/admin/bot-protection.vue
index aa41edd219..eaf98de15c 100644
--- a/packages/frontend/src/pages/admin/bot-protection.vue
+++ b/packages/frontend/src/pages/admin/bot-protection.vue
@@ -42,12 +42,9 @@ SPDX-License-Identifier: AGPL-3.0-only
 			</FormSlot>
 			<MkInfo>
 				<div :class="$style.captchaInfoMsg">
+					<div>{{ i18n.tsx.testSiteKeyMessage({ testSiteKey: '10000000-ffff-ffff-ffff-000000000001' }) }}</div>
 					<div>
-						サイトキーに"10000000-ffff-ffff-ffff-000000000001"と入力することで動作をテスト出来ます。<br/>本番運用時には必ず正規のサイトキーを設定してください。
-					</div>
-					<div>
-						ref: <a href="https://docs.hcaptcha.com/#integration-testing-test-keys" target="_blank">hCaptcha
-							Developer Guide</a>
+						<span>ref: </span><a href="https://docs.hcaptcha.com/#integration-testing-test-keys" target="_blank">hCaptcha Developer Guide</a>
 					</div>
 				</div>
 			</MkInfo>
@@ -93,11 +90,10 @@ SPDX-License-Identifier: AGPL-3.0-only
 			</FormSlot>
 			<MkInfo>
 				<div :class="$style.captchaInfoMsg">
+					<div>{{ i18n.tsx.testSiteKeyMessage({ testSiteKey: '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI' }) }}</div>
 					<div>
-						サイトキーに"6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"と入力することで動作をテスト出来ます。<br/>本番運用時には必ず正規のサイトキーを設定してください。
-					</div>
-					<div>
-						ref: <a
+						<span>ref: </span>
+						<a
 							href="https://developers.google.com/recaptcha/docs/faq?hl=ja#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do"
 							target="_blank"
 						>reCAPTCHA FAQ</a>
@@ -124,12 +120,11 @@ SPDX-License-Identifier: AGPL-3.0-only
 			</FormSlot>
 			<MkInfo>
 				<div :class="$style.captchaInfoMsg">
-					<div>
-						サイトキーに"1x00000000000000000000AA"と入力することで動作をテスト出来ます。<br/>本番運用時には必ず正規のサイトキーを設定してください。
+					<div :class="$style.noSpace">
+						{{ i18n.tsx.testSiteKeyMessage({ testSiteKey: '1x00000000000000000000AA' }) }}
 					</div>
-					<div>
-						ref: <a href="https://developers.cloudflare.com/turnstile/troubleshooting/testing/" target="_blank">Cloudflare
-							Docs</a>
+					<div :class="$style.noSpace">
+						<span>ref: </span><a href="https://developers.cloudflare.com/turnstile/troubleshooting/testing/" target="_blank">Cloudflare Docs</a>
 					</div>
 				</div>
 			</MkInfo>
@@ -246,4 +241,8 @@ watch(botProtectionForm.state, () => {
 	flex-direction: column;
 	gap: 8px;
 }
+
+.noSpace {
+	white-space-collapse: discard;
+}
 </style>