diff --git a/packages/backend/src/server/web/FeedService.ts b/packages/backend/src/server/web/FeedService.ts
index 57a32ca934321a1a81303806ae57f13c295493f6..664f21d30807fb843d0745abe397971a65157a0c 100644
--- a/packages/backend/src/server/web/FeedService.ts
+++ b/packages/backend/src/server/web/FeedService.ts
@@ -48,7 +48,7 @@ export class FeedService {
 
 		const profile = await this.userProfilesRepository.findOneByOrFail({ userId: user.id });
 
-		const notes = await this.notesRepository.find({
+		const notes = user.requireSigninToViewContents ? [] : await this.notesRepository.find({
 			where: {
 				userId: user.id,
 				renoteId: IsNull(),
@@ -74,7 +74,16 @@ export class FeedService {
 			copyright: user.name ?? user.username,
 		});
 
+		const followersOnlyBefore = user.makeNotesFollowersOnlyBefore;
+		const hiddenBefore = user.makeNotesHiddenBefore;
+
 		for (const note of notes) {
+			const createdAt = new Date(this.idService.parse(note.id).date);
+
+			if (this.shouldHideNote(followersOnlyBefore, createdAt) || this.shouldHideNote(hiddenBefore, createdAt)) {
+				continue;
+			}
+
 			const files = note.fileIds.length > 0 ? await this.driveFilesRepository.findBy({
 				id: In(note.fileIds),
 			}) : [];
@@ -93,4 +102,17 @@ export class FeedService {
 
 		return feed;
 	}
+
+	// this logic is copied from NoteEntityService.hideNote
+	private shouldHideNote(reference: number | null, createdAt: Date): boolean {
+		if ((reference !== null)
+				&& (
+					(reference <= 0 && (Date.now() - createdAt.getTime() > 0 - (reference * 1000)))
+						|| (reference > 0 && (createdAt.getTime() < reference * 1000))
+				)
+		) {
+			return true;
+		}
+		return false;
+	}
 }