diff --git a/packages/backend/src/server/web/views/announcement.pug b/packages/backend/src/server/web/views/announcement.pug
index 7a4052e8a4..06cea4e57b 100644
--- a/packages/backend/src/server/web/views/announcement.pug
+++ b/packages/backend/src/server/web/views/announcement.pug
@@ -7,15 +7,3 @@ block vars
block title
= `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content=description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= description)
- meta(property='og:url' content= url)
- if announcement.imageUrl
- meta(property='og:image' content=announcement.imageUrl)
- meta(property='twitter:card' content='summary_large_image')
diff --git a/packages/backend/src/server/web/views/channel.pug b/packages/backend/src/server/web/views/channel.pug
index c514025e0b..701b88c8c4 100644
--- a/packages/backend/src/server/web/views/channel.pug
+++ b/packages/backend/src/server/web/views/channel.pug
@@ -6,14 +6,3 @@ block vars
block title
= `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= channel.description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= channel.description)
- meta(property='og:url' content= url)
- meta(property='og:image' content= channel.bannerUrl)
- meta(property='twitter:card' content='summary')
diff --git a/packages/backend/src/server/web/views/clip.pug b/packages/backend/src/server/web/views/clip.pug
index 5a0018803a..6510232266 100644
--- a/packages/backend/src/server/web/views/clip.pug
+++ b/packages/backend/src/server/web/views/clip.pug
@@ -8,17 +8,6 @@ block vars
block title
= `${title} | ${instanceName}`
-block desc
- meta(name='description' content= clip.description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= clip.description)
- meta(property='og:url' content= url)
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
-
block meta
if profile.noCrawle
meta(name='robots' content='noindex')
diff --git a/packages/backend/src/server/web/views/flash.pug b/packages/backend/src/server/web/views/flash.pug
index 1549aa7906..02501b3767 100644
--- a/packages/backend/src/server/web/views/flash.pug
+++ b/packages/backend/src/server/web/views/flash.pug
@@ -8,17 +8,6 @@ block vars
block title
= `${title} | ${instanceName}`
-block desc
- meta(name='description' content= flash.summary)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= flash.summary)
- meta(property='og:url' content= url)
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
-
block meta
if profile.noCrawle
meta(name='robots' content='noindex')
diff --git a/packages/backend/src/server/web/views/gallery-post.pug b/packages/backend/src/server/web/views/gallery-post.pug
index 9ae25d9ac8..aba5a8c1ce 100644
--- a/packages/backend/src/server/web/views/gallery-post.pug
+++ b/packages/backend/src/server/web/views/gallery-post.pug
@@ -8,21 +8,6 @@ block vars
block title
= `${title} | ${instanceName}`
-block desc
- meta(name='description' content= post.description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= post.description)
- meta(property='og:url' content= url)
- if post.isSensitive
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
- else
- meta(property='og:image' content= post.files[0].thumbnailUrl)
- meta(property='twitter:card' content='summary_large_image')
-
block meta
if user.host || profile.noCrawle
meta(name='robots' content='noindex')
diff --git a/packages/backend/src/server/web/views/note.pug b/packages/backend/src/server/web/views/note.pug
index 53cff6bcd3..3ff4005915 100644
--- a/packages/backend/src/server/web/views/note.pug
+++ b/packages/backend/src/server/web/views/note.pug
@@ -11,31 +11,6 @@ block vars
block title
= `${title} | ${instanceName}`
-block desc
- meta(name='description' content= summary)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= summary)
- meta(property='og:url' content= url)
- if videos.length
- each video in videos
- meta(property='og:video:url' content= video.url)
- meta(property='og:video:secure_url' content= video.url)
- meta(property='og:video:type' content= video.type)
- meta(property='og:image' content= video.thumbnailUrl)
- // FIXME: add width and height
- // FIXME: add embed player for Twitter
- if images.length
- meta(property='twitter:card' content='summary_large_image')
- each image in images
- meta(property='og:image' content= image.url)
- else if !videos.length
- meta(property='twitter:card' content='summary')
- meta(property='og:image' content= avatarUrl)
-
-
block meta
if user.host || isRenote || profile.noCrawle
meta(name='robots' content='noindex')
diff --git a/packages/backend/src/server/web/views/page.pug b/packages/backend/src/server/web/views/page.pug
index 03c50eca8a..31abaf2c78 100644
--- a/packages/backend/src/server/web/views/page.pug
+++ b/packages/backend/src/server/web/views/page.pug
@@ -8,17 +8,6 @@ block vars
block title
= `${title} | ${instanceName}`
-block desc
- meta(name='description' content= page.summary)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= page.summary)
- meta(property='og:url' content= url)
- meta(property='og:image' content= page.eyeCatchingImage ? page.eyeCatchingImage.thumbnailUrl : avatarUrl)
- meta(property='twitter:card' content= page.eyeCatchingImage ? 'summary_large_image' : 'summary')
-
block meta
if profile.noCrawle
meta(name='robots' content='noindex')
diff --git a/packages/backend/src/server/web/views/user.pug b/packages/backend/src/server/web/views/user.pug
index 2b0a7bab5c..88d2c843e1 100644
--- a/packages/backend/src/server/web/views/user.pug
+++ b/packages/backend/src/server/web/views/user.pug
@@ -7,17 +7,6 @@ block vars
block title
= `${title} | ${instanceName}`
-block desc
- meta(name='description' content= profile.description)
-
-block og
- meta(property='og:type' content='blog')
- meta(property='og:title' content= title)
- meta(property='og:description' content= profile.description)
- meta(property='og:url' content= url)
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
-
block meta
if user.host || profile.noCrawle
meta(name='robots' content='noindex')
diff --git a/packages/frontend/src/components/global/userIdWatermark.vue b/packages/frontend/src/components/global/userIdWatermark.vue
new file mode 100644
index 0000000000..3e00fc6320
--- /dev/null
+++ b/packages/frontend/src/components/global/userIdWatermark.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
diff --git a/packages/frontend/src/ui/_common_/common.vue b/packages/frontend/src/ui/_common_/common.vue
index 9d748d9331..739c4576a7 100644
--- a/packages/frontend/src/ui/_common_/common.vue
+++ b/packages/frontend/src/ui/_common_/common.vue
@@ -4,6 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
+
import('./stream-indicator.vue'));
const XUpload = defineAsyncComponent(() => import('./upload.vue'));