fedi_start

Onboarding průvodce pro Mamutovo.cz pomáhá nováčkům začít na Fediverse.


Obsah projektu

Soubor Popis
index.html Hlavní stránka
start.html Krok za krokem onboarding pro nováčky
basics.html Základy Mastodonu
accounts.html Interaktivní seznam CZ/SK účtů s filtry
apps.html Doporučené aplikace (Android / iOS / Web / Desktop)
accounts.json Data účtů (generováno skriptem, nahrává se na Surfer)
accounts.csv Totéž v CSV (nahrává se na Surfer)
manual_accounts.csv Ručně přidané účty (GTS instance a výjimky)
starter-general.csv Starter pack obecný pro import do Mastodonu
starter-tech.csv Starter pack tech pro import do Mastodonu
mastodon_cz_accounts.py Hlavní skript scraping CZ/SK účtů
upload_surfer.sh Upload accounts.json a accounts.csv na Cloudron Surfer

Lokální vývoj

# Spustí lokální HTTP server
python3 -m http.server 8080
# Otevři v prohlížeči: http://localhost:8080/

Skript mastodon_cz_accounts.py

Sbírá CZ/SK účty z Mastodonu a GoToSocial instancí, filtruje je a ukládá do accounts.json a accounts.csv.

Jak funguje sběr dat

  1. Pro každou instanci v QUERY_INSTANCES volá /api/v1/directory (veřejné Mastodon API).
  2. Načte manual_accounts.csv a dohledá každý účet přes /api/v1/accounts/lookup.
  3. Sloučí obojí, odstraní duplicity, seřadí a ořízne na TOP_N (výchozí 250) automatických účtů + všechny manuální.

Kritéria pro zařazení (automatické účty)

Podmínka Hodnota
discoverable = true Uživatel chce být nalezen
Aktivní za posledních 90 dní
Min. počet příspěvků 10
Min. počet sledujících 10

Manuálně přidané účty (manual_accounts.csv) jsou vždy zahrnuty bez ohledu na tato kritéria.

Sledované instance

CZ/SK instance jsou v konstantě QUERY_INSTANCES v hlavičce skriptu:

mastodonczech.cz, cztwitter.cz, witter.cz, mastodon.pirati.cz,
f.cz, lgbtcz.social, boskovice.social, mamutovo.cz,
gts.arch-linux.cz, kompost.cz, spondr.cz, skorpil.cz,
ajtaci.club, toot.whatever.cz

Spuštění

# Základní spuštění (výstup do aktuálního adresáře)
python3 mastodon_cz_accounts.py

# Výstup do konkrétního adresáře
python3 mastodon_cz_accounts.py --output /var/www/start/

# Omezení počtu účtů
python3 mastodon_cz_accounts.py --top 100

# Ladění
python3 mastodon_cz_accounts.py --debug

Konfigurace .env

Vytvoř soubor .env v kořeni projektu (je v .gitignore, nikdy ho necommituj):

# Volitelný Mastodon token (pro vyšší rate limity)
MASTODON_TOKEN=tvuj_mastodon_token

# GoToSocial tokeny per-instance (viz sekce níže)
GTS_TOKEN_GTS_ARCH_LINUX_CZ=tvuj_token_zde
GTS_TOKEN_DALSI_INSTANCE_CZ=dalsi_token

# Surfer token pro upload na web
SURFER_TOKEN=tvuj_surfer_token

# Volitelně: jiný Surfer server (výchozí je fedi.mamutovo.cz)
# SURFER_SERVER=cloud.oscloud.cz

Proměnné prostředí

Proměnná Povinná Popis
MASTODON_TOKEN ne Token pro Mastodon API (vyšší rate limity)
GTS_TOKEN_<DOMAIN> pro GTS instance Read token per GoToSocial instance
SURFER_TOKEN pro upload Token z Cloudron Surfer
SURFER_SERVER ne Server Surferu, pokud není výchozí

Název proměnné pro GTS token se tvoří z domény tečky a pomlčky se nahradí podtržítkem a vše se převede na VELKÁ PÍSMENA:

gts.arch-linux.cz  →  GTS_TOKEN_GTS_ARCH_LINUX_CZ
shimon.gts.example →  GTS_TOKEN_SHIMON_GTS_EXAMPLE

GoToSocial instance jak získat read token

GoToSocial nepodporuje veřejné /api/v1/directory, takže každá GTS instance potřebuje vlastní read token. Postup:

1. Přihlášení a vytvoření aplikace

Přihlas se na dané GTS instanci a jdi do Settings → Applications → New application.

Vyplň:

  • Název aplikace: např. fedi_start scraper
  • Scopes: zaškrtni pouze read
  • Ostatní pole nech prázdná nebo vyplň libovolně

Uložíš aplikaci a GTS ti vygeneruje client_id a client_secret. Poznamenej si obojí.

2. Získání authorization code

Otevři v prohlížeči tuto URL (nahraď INSTANCI.CZ a CLIENT_ID):

https://INSTANCI.CZ/oauth/authorize?client_id=CLIENT_ID&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&scope=read

Přihlášený prohlížeč zobrazí stránku s kódem zkopíruj ho (jednorázový, platí jen chvíli).

3. Výměna code za access token

curl -X POST "https://INSTANCI.CZ/oauth/token" \
  -d "client_id=CLIENT_ID" \
  -d "client_secret=CLIENT_SECRET" \
  -d "redirect_uri=urn:ietf:wg:oauth:2.0:oob" \
  -d "grant_type=authorization_code" \
  -d "code=AUTHORIZATION_CODE" \
  -d "scope=read"

V odpovědi dostaneš JSON s access_token.

4. Přidání tokenu do .env

GTS_TOKEN_GTS_ARCH_LINUX_CZ=ziskany_access_token

5. Ověření

curl -H "Authorization: Bearer TVUJ_TOKEN" "https://INSTANCI.CZ/api/v1/accounts/verify_credentials"

Pokud vrátí JSON s tvým účtem, token funguje.


Přidání nového účtu

Mastodon instance

Uživatel se zobrazí automaticky, pokud má v nastavení zapnuté:

Settings → Privacy → Appearance in search engines (nebo česky „Zobrazovat profil ve vyhledávacích algoritmech")

A splňuje kritéria výše (aktivita, min. počet příspěvků atd.).

Pokud chceš účet přidat ručně bez ohledu na kritéria, přidej ho do manual_accounts.csv:

handle@instance.cz,true,false,

GoToSocial instance

GTS nemá veřejný adresář, proto:

  1. Získej read token (viz postup výše).
  2. Přidej GTS_TOKEN_<DOMAIN>=token do .env.
  3. Přidej konkrétní účty do manual_accounts.csv (GTS adresář je přístupný s tokenem, ale pro jistotu je lepší přidat je ručně).
  4. Přidej instanci do QUERY_INSTANCES v mastodon_cz_accounts.py.

Nasazení na VPS

Projekt běží na VPS Hetzner v /opt/fedi_start/.

Závislosti

# Python (stdlib only, žádné externí balíčky)
python3 --version  # 3.10+

# Node.js  Cloudron Surfer CLI
npm install -g cloudron-surfer

Nastavení na serveru

git clone https://git.arch-linux.cz/Mamutovo/fedi_start /opt/fedi_start
cd /opt/fedi_start
cp .env.example .env  # nebo vytvoř .env ručně
# Vyplň tokeny v .env

Cron

Automatická aktualizace 4× denně:

0 6,12,18,0 * * * cd /opt/fedi_start && python3 mastodon_cz_accounts.py --output . && bash upload_surfer.sh >> /var/log/fedi_start.log 2>&1

Upload na Surfer

Cloudron Surfer je jednoduchý statický file hosting.

Ruční spuštění uploadu

bash upload_surfer.sh

Skript načte SURFER_TOKEN z .env a nahraje accounts.json + accounts.csv do kořene Surfer serveru.

Manuální Surfer příkazy

# Nahrát konkrétní soubory
surfer put -t $SURFER_TOKEN accounts.json accounts.csv /

# Zobrazit obsah na serveru
surfer get

# Smazat soubor
surfer del /accounts.json

Struktura dat accounts.json

Každý záznam v poli accounts obsahuje:

{
  "handle":         "uzivatel@instance.cz",
  "display_name":   "Zobrazované jméno",
  "note":           "Bio uživatele",
  "followers":      123,
  "following":      45,
  "statuses":       678,
  "last_active":    "2024-03-15",
  "avatar":         "https://...",
  "url":            "https://instance.cz/@uzivatel",
  "fields":         [...],
  "tags":           ["linux", "opensource"]
}

Přispívání

Pull requesty vítány. Repo: https://git.arch-linux.cz/Mamutovo/fedi_start

S
Description
Onboarding systém pro nové uživatele Mastodonu – starter pack, seznam CZ účtů a automatický sběr dat
https://fedi.mamutovo.cz/
Readme 726 KiB
2026-05-15 08:09:45 +00:00
Languages
HTML 79.3%
Python 19.1%
Shell 1.6%