/* You need create .env file with the following variables: BSKYHANDLE=yourhandle BSKYPASS=yourpass */ const { BskyAgent } = require('@atproto/api'); require('dotenv').config(); const BSKYHANDLE = process.env.BSKYHANDLE || 'defaultHandle'; const BSKYPASS = process.env.BSKYPASS || 'defaultPassword'; const Unfollowing = async () => { const agent = new BskyAgent({ service: 'https://bsky.social' }); await agent.login({ identifier: BSKYHANDLE, password: BSKYPASS }); let follows = []; let cursor; while (true) { const following = await agent.app.bsky.graph.getFollows({ cursor, actor: BSKYHANDLE, }); cursor = following.data.cursor; follows = [...follows, ...following.data.follows]; if (!cursor) break; } for (const actor of follows) { const followingInfo = actor.viewer ? actor.viewer.following : null; const [rkey, , repo] = followingInfo ? followingInfo.split('/').reverse() : []; console.log(rkey, repo); console.log( `Unfollowing ${actor.handle}`, await agent.com.atproto.repo.deleteRecord({ collection: 'app.bsky.graph.follow', repo, rkey, }) ); } }; Unfollowing();