diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index c947243664..94d723e239 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -47,7 +47,8 @@ export async function createNote(value: any, resolver?: Resolver, silent = false
 	const object = await resolver.resolve(value) as any;
 
 	if (object == null || object.type !== 'Note') {
-		throw new Error('invalid note');
+		log(`invalid note: ${object}`);
+		return null;
 	}
 
 	const note: INoteActivityStreamsObject = object;
@@ -62,7 +63,7 @@ export async function createNote(value: any, resolver?: Resolver, silent = false
 	if (!note.to.includes('https://www.w3.org/ns/activitystreams#Public')) visibility = 'unlisted';
 	if (note.cc.length == 0) visibility = 'private';
 	// TODO
-	if (visibility != 'public') throw new Error('unspported visibility');
+	if (visibility != 'public') return null;
 	//#endergion
 
 	// 添付メディア
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 599126b861..bdef5e09fc 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -1,4 +1,3 @@
-import { MongoError } from 'mongodb';
 import Note, { pack, INote } from '../../models/note';
 import User, { isLocalUser, IUser, isRemoteUser } from '../../models/user';
 import stream, { publishLocalTimelineStream, publishGlobalTimelineStream } from '../../publishers/stream';
@@ -91,7 +90,7 @@ export default async (user: IUser, data: {
 		note = await Note.insert(insert);
 	} catch (e) {
 		// duplicate key error
-		if (e instanceof MongoError && e.code === 11000) {
+		if (e.code === 11000) {
 			return res(null);
 		}
 
diff --git a/src/services/note/reaction/create.ts b/src/services/note/reaction/create.ts
index dd3d4be8b7..dcfbe481af 100644
--- a/src/services/note/reaction/create.ts
+++ b/src/services/note/reaction/create.ts
@@ -9,7 +9,6 @@ import watch from '../watch';
 import renderLike from '../../../remote/activitypub/renderer/like';
 import { deliver } from '../../../queue';
 import pack from '../../../remote/activitypub/renderer';
-import { MongoError } from 'mongodb';
 
 export default async (user: IUser, note: INote, reaction: string) => new Promise(async (res, rej) => {
 	// Myself
@@ -27,8 +26,8 @@ export default async (user: IUser, note: INote, reaction: string) => new Promise
 		});
 	} catch (e) {
 		// duplicate key error
-		if (e instanceof MongoError && e.code === 11000) {
-			return rej('already reacted');
+		if (e.code === 11000) {
+			return res(null);
 		}
 
 		console.error(e);