# Snob CLI

## who doesn't follow you back?

Snob knows. An Instagram client for the terminal: who left, who never followed back, stories and reels to keep, and output ready for AI agents.

```
$ snob profile someone
@someone  Someone Example  (verified)
  photographer, mostly coffee

Followers:    1234
Following:    56
Posts:        78

You do not follow them, they follow you
Highlights:   2
Stories up:   1
```

## Everything you check by hand, in one command.

On a terminal most commands open a full-screen view you move through with the arrow keys; snob --help lists everything.

### snob unfollowers

You follow them; they do not follow you back.

```
$ snob unfollowers
3 accounts you follow that do not follow you back - 3 of 87 - 9 requests
```

### snob profile

An account's page, the way Instagram shows it.

```
$ snob profile someone
Followers:    1234
Following:    56
```

### snob stories · highlights

See them and save them. A story is never marked as seen.

```
$ snob stories someone -d all
# every story it has up, saved
```

### snob post · reel

One post or reel by its link, every photo and video in it.

```
$ snob reel <link> -d all
# every photo and video in it, saved
```

### snob watch

Keeps watching on a schedule and reports what changed.

```
$ snob watch once
Changes for @me since Aug 14 at 09:12
  followers gained: 1
  followers lost: 1
```

### snob follow · unfollow

The only two writes. One account at a time, after asking.

```
$ snob unfollow someone
Unfollow @someone? [y/N] y
No longer following @someone.
```

## A light client, on purpose.

It signs in as you and sends its requests from a Chrome, Edge, Brave or Chromium already on your machine, at a human pace. Your password never goes through snob, and it never reads your own browser's cookies.

> There is no official API for most of this, so snob uses the same web API instagram.com uses, signed in as you. That is outside Instagram's Terms of Use, and the usual consequence is that Instagram asks the account to verify itself. snob keeps to modest volumes, sends only the web app's own requests, and stops at the first sign of push-back. Use it from the connection you normally browse from.

```
✓ 12 accounts a page, 1 to 3 seconds apart
✓ a rest of 5 to 15 minutes every 40 pages
✓ two writes, ever: follow and unfollow, after asking
✓ stories are never marked as seen
✓ the session is stored on your machine, in the system keyring when there is one
! the first push-back stops it, and it cools down
```

## Same answer, for people and programs.

Every command can print instead of opening a view, in a stable form a program can read. Down a pipe that is the default, and the default format is JSON.

On a terminal, the view (its frame left out):

```
> anna.example    Anna Example
  bob_builds      Bob
  camille.k       Camille     verified
```

Down a pipe:

```
$ snob unfollowers | jq '.[0]'
{
  "pk": 1234567890,
  "username": "anna.example",
  "full_name": "Anna Example",
  "is_private": false,
  "is_verified": false
}
```

### Flags for scripts

- `--format json|ndjson|csv|xlsx|md|table`: a list or a document, in the form you need
- `-o <file>`: write it to a file
- `--json`: a status object, for commands such as whoami
- `--no-interactive`: always print, never open a view
- `-y`: answer the one confirmation in advance
- `watch --webhook <url>`: post each report as JSON

### Exit codes

- `0`: it worked
- `1`: it failed
- `2`: the command line could not be parsed
- `3`: log in again
- `4`: the account needs verifying
- `5`: rate limited or cooling down
- `130`: stopped

## Install it.

Builds exist for Windows and Linux on x86_64 and ARM64, and macOS on Apple Silicon. Everything that talks to Instagram needs a Chromium-based browser installed; no window is ever shown.

### macOS · Linux

With Homebrew.

```
$ brew tap dennisgr7/snob https://github.com/dennisgr7/snob-cli
$ brew install snob
```

### Windows

With Scoop.

```
$ scoop bucket add snob https://github.com/dennisgr7/snob-cli
$ scoop install snob
```

### Debian · Ubuntu

The .deb for your architecture, downloaded from the releases page. [Releases](https://github.com/dennisgr7/snob-cli/releases/latest)

x86_64:

```
$ sudo apt install ./snob-v0.6.0-x86_64-unknown-linux-musl.deb
```

ARM64:

```
$ sudo apt install ./snob-v0.6.0-aarch64-unknown-linux-musl.deb
```

### Script

Without a package manager.

macOS · Linux:

```
$ curl -fsSL https://raw.githubusercontent.com/dennisgr7/snob-cli/main/packaging/install.sh | sh
```

Windows · PowerShell:

```
$ irm https://raw.githubusercontent.com/dennisgr7/snob-cli/main/packaging/install.ps1 | iex
```

### From source

With Rust and a C compiler.

```
$ cargo install --locked --git https://github.com/dennisgr7/snob-cli snob-cli
```

---

Source: https://github.com/dennisgr7/snob-cli · License: MIT · Not affiliated with Instagram or Meta.

HTML version: https://snob.dennisgr7.dev/
