diff --git a/nonebot_bison/admin_page/api.py b/nonebot_bison/admin_page/api.py
index 2351a32..14111c8 100644
--- a/nonebot_bison/admin_page/api.py
+++ b/nonebot_bison/admin_page/api.py
@@ -15,10 +15,10 @@ from .jwt import load_jwt, pack_jwt
 from ..scheduler import scheduler_dict
 from ..types import Target as T_Target
 from ..utils.get_bot import get_groups
+from ..platform import platform_manager
 from .token_manager import token_manager
 from ..config.db_config import SubscribeDupException
-from ..platform import site_manager, platform_manager
-from ..utils.site import CookieClientManager, is_cookie_client_manager
+from ..utils.site import CookieClientManager, site_manager, is_cookie_client_manager
 from ..config import NoSuchUserException, NoSuchTargetException, NoSuchSubscribeException, config
 from .types import (
     Cookie,
diff --git a/nonebot_bison/platform/__init__.py b/nonebot_bison/platform/__init__.py
index 063c60d..accdf83 100644
--- a/nonebot_bison/platform/__init__.py
+++ b/nonebot_bison/platform/__init__.py
@@ -3,7 +3,6 @@ from pkgutil import iter_modules
 from collections import defaultdict
 from importlib import import_module
 
-from ..utils import Site
 from ..plugin_config import plugin_config
 from .platform import Platform, make_no_target_group
 
@@ -36,10 +35,3 @@ def _get_unavailable_platforms() -> dict[str, str]:
 
 # platform => reason for not available
 unavailable_paltforms: dict[str, str] = _get_unavailable_platforms()
-
-
-site_manager: dict[str, type[Site]] = {}
-for site in Site.registry:
-    if not hasattr(site, "name"):
-        continue
-    site_manager[site.name] = site
diff --git a/nonebot_bison/utils/site.py b/nonebot_bison/utils/site.py
index 141c717..95a5b85 100644
--- a/nonebot_bison/utils/site.py
+++ b/nonebot_bison/utils/site.py
@@ -9,10 +9,10 @@ import httpx
 from httpx import AsyncClient
 from nonebot.log import logger
 
+from ..types import Target
 from ..config import config
 from .http import http_client
 from ..config.db_model import Cookie
-from ..types import Target, RegistryMeta
 
 
 class ClientManager(ABC):
@@ -161,7 +161,17 @@ def is_cookie_client_manager(manger: type[ClientManager]) -> bool:
     return issubclass(manger, CookieClientManager)
 
 
-class Site(metaclass=RegistryMeta, base=True):
+site_manager: dict[str, type["Site"]] = {}
+
+
+class SiteMeta(type):
+    def __init__(cls, *args, **kwargs):
+        if hasattr(cls, "name"):
+            site_manager[cls.name] = cls
+        super().__init__(*args, **kwargs)
+
+
+class Site(metaclass=SiteMeta):
     schedule_type: Literal["date", "interval", "cron"]
     schedule_setting: dict
     name: str
diff --git a/tests/config/test_cookie.py b/tests/config/test_cookie.py
index 9f29790..8d463d4 100644
--- a/tests/config/test_cookie.py
+++ b/tests/config/test_cookie.py
@@ -10,12 +10,11 @@ from nonebug import App
 async def test_cookie(app: App, init_scheduler):
     from nonebot_plugin_saa import TargetQQGroup
 
-    from nonebot_bison.platform import site_manager
     from nonebot_bison.config.db_config import config
     from nonebot_bison.scheduler import scheduler_dict
     from nonebot_bison.types import Target as T_Target
-    from nonebot_bison.utils.site import CookieClientManager
     from nonebot_bison.config.utils import DuplicateCookieTargetException
+    from nonebot_bison.utils.site import CookieClientManager, site_manager
 
     target = T_Target("weibo_id")
     platform_name = "weibo"