npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mastodont

v0.1.12

Published

CLI tool to import server blocklists into Mastodon v4+

Downloads

13

Readme

Mastodont

Mastodont is a CLI tool to import blocklists into Mastodon written in Node.js.

It uses the /admin/domain_blocks endpoint newly available in Mastodon v4 and therefore requires instances run on v4+.

mastodont

Installation

Go to https://${YOUR_INSTANCE_URL}/settings/applications/new and create a new application called Mastodont with the permissions:

  • admin:read:domain_allows
  • admin:write:domain_allows

Save the application, click on it, and copy the value of Your access token to the clipboard.

Open a terminal and run:

> npm install -g mastodont

Usage

> mastodont

Mastodont operates interactively and requires only a Mastodon instance URL, an access token with the necessary permissions, and a text file containing a list of domains to block, one per line. A sample blocklist is provided in the examples folder at the root of this repository. The file can be hosted locally or remotely.

Mastodont will prompt you for your instance URL, access token, and the location of the blocklist file. It will optionally save the former two options, along with your preferences for domain blocks, to a .mastodont.yml file in your home folder so that you don't need to enter them repeatedly.

If you want to skip the prompts, you can pass the values as arguments using the following flags:

Mastodont config

  • --help: Show help
  • -c $PATH, --config $PATH: Optional custom config file path
  • --non-interactive: Disable interactive mode
  • --save: Save config to default location
  • --reset: Delete config (cannot be used with other options)

Instance config

  • -e $URL, --endpoint $URL: Mastodon server URL
  • -t $TOKEN, --access-token $TOKEN: Mastodon Access Token
  • -b $LOCATION, --blocklist $LOCATION: Blocklist filepath or URL

Block config

  • -s $LEVEL, --severity $LEVEL: Block severity level (limit, suspend, noop)
  • --obfuscate: Obfuscate domains in public listing
  • --reject-media: Reject media from domains (works with limit, noop)
  • --reject-reports: Reject reports from domains (works with limit,noop)
  • --private-comment $COMMENT: Private comment
  • --public-comment $COMMENT: Public comment

Automation

Mastodont can be used to automatically update your blocklist on a regular basis. To do so, you can use a cron job or a CI workflow. Examples of a cron job and CI workflows are provided in the examples folder at the root of this repository.

Debugging

Something not working as expected? You can see more detailed debugging output if you add DEBUG=* before the command. For example:

> DEBUG=* mastodont

License

MIT

Author

@selfagency