Improve readme and add CI

This commit is contained in:
Melroy van den Berg 2025-04-24 17:51:31 +02:00
parent b4e461f90e
commit efa7a38276
No known key found for this signature in database
GPG key ID: 71D11FF23454B9D7
3 changed files with 46 additions and 9 deletions

20
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,20 @@
image: golang:latest
stages:
- test
- build
format:
stage: test
script:
- go fmt $(go list ./... | grep -v /vendor/)
- go vet $(go list ./... | grep -v /vendor/)
build:
stage: build
script:
- go build
artifacts:
paths:
- fediresolve
expire_in: 1 week

View file

@ -1,20 +1,32 @@
# FediResolve
FediResolve is a command-line tool for resolving and displaying Fediverse content. It can parse and display ActivityPub content from various Fediverse platforms including Mastodon, Mbin, Lemmy, PeerTube, and others.
FediResolve is a command-line tool for resolving and displaying Fediverse content.
It can parse and display ActivityPub content from various Fediverse platforms including Mastodon, Mbin, Lemmy, PeerTube, and others. For easy reading or debugging purposes.
~ Vibe coded within 2 hours.
## Features
- Resolve Fediverse URLs to their ActivityPub representation
- Resolve Fediverse handles (e.g., @username@domain.tld)
- Display both the full JSON data and a human-readable summary
- Support for various ActivityPub types (Person, Note, Article, Create, Announce, etc.)
- Support for various ActivityPub types (Person, Page, Note, Article, etc.)
- Automatic resolution of shared/forwarded content to the original source
![Demo of FediResolve](./demo-fediresolve.png)
## Download
[FediResolve for Linux](https://gitlab.melroy.org/melroy/fediresolve/-/releases)
## Installation
Either download the prebuild binary from [releases](https://gitlab.melroy.org/melroy/fediresolve/-/releases) or build from source, see below.
### Prerequisites
- Go 1.16 or later
- Go 1.21 or later
### Building from source
@ -39,26 +51,31 @@ go build
## Examples
### Resolving a Mbin thread
```bash
./fediresolve https://kbin.melroy.org/m/til/t/875629/Context7-Up-to-date-documentation-for-LLMs-and-AI-code-editors
```
### Resolving a Mastodon post
```bash
./fediresolve https://mastodon.social/@Gargron/12345
./fediresolve https://mastodon.melroy.org/@melroy/114297155915355913
```
### Resolving a user profile
```bash
./fediresolve @Gargron@mastodon.social
./fediresolve @melroy@melroy.org
```
## How it works
FediResolve uses the following process to resolve Fediverse content:
1. For handles (@username@domain.tld), it uses the WebFinger protocol to discover the ActivityPub actor URL
2. For URLs, it attempts to fetch the ActivityPub representation directly
3. It checks if the content is shared/forwarded and resolves to the original source if needed
4. It parses the ActivityPub JSON and displays both the raw data and a formatted summary
1. For handles (`@username@domain.tld`), it uses the WebFinger protocol to discover the ActivityPub actor URL
2. For URLs, it attempts to fetch the ActivityPub representation directly. Or if the content is needs to be resolved from another Fediverse instance.
3. Content is parsed and displays both the raw JSON object and a nice looking summary.
## License

BIN
demo-fediresolve.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB