diff --git a/src/config/types.ts b/src/config/types.ts
index b181f2c8c1..dff3f7d37c 100644
--- a/src/config/types.ts
+++ b/src/config/types.ts
@@ -40,6 +40,12 @@ export type Source = {
 		site_key: string;
 		secret_key: string;
 	};
+
+	/**
+	 * ゴーストアカウントのID
+	 */
+	ghost?: string;
+
 	accesslog?: string;
 	twitter?: {
 		consumer_key: string;
diff --git a/src/models/user.ts b/src/models/user.ts
index a65fcc1878..352819f618 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -458,3 +458,7 @@ function img(url) {
 	};
 }
 */
+
+export function getGhost(): Promise<ILocalUser> {
+	return User.findOne({ _id: new mongo.ObjectId(config.ghost) });
+}
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index 467c08efd4..5d6f201524 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -1,7 +1,10 @@
 import $ from 'cafy'; import ID from '../../../../../cafy-id';
 import UserList from '../../../../../models/user-list';
-import User, { pack as packUser } from '../../../../../models/user';
+import User, { pack as packUser, isRemoteUser, getGhost } from '../../../../../models/user';
 import { publishUserListStream } from '../../../../../publishers/stream';
+import ap from '../../../../../remote/activitypub/renderer';
+import renderFollow from '../../../../../remote/activitypub/renderer/follow';
+import { deliver } from '../../../../../queue';
 
 /**
  * Add a user to a user list
@@ -48,4 +51,11 @@ module.exports = async (params, me) => new Promise(async (res, rej) => {
 	res();
 
 	publishUserListStream(userList._id, 'userAdded', await packUser(user));
+
+	// このインスタンス内にこのリモートユーザーをフォローしているユーザーがいなくても投稿を受け取るためにダミーのユーザーがフォローしたということにする
+	if (isRemoteUser(user)) {
+		const ghost = await getGhost();
+		const content = ap(renderFollow(ghost, user));
+		deliver(ghost, content, user.inbox);
+	}
 });