fedi_start
Onboarding průvodce pro Mamutovo.cz – pomáhá nováčkům začít na Fediverse.
- Web: https://fedi.mamutovo.cz
- Repo: https://git.arch-linux.cz/Mamutovo/fedi_start
- Účet: @archlinuxcz@mamutovo.cz
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
- Pro každou instanci v
QUERY_INSTANCESvolá/api/v1/directory(veřejné Mastodon API). - Načte
manual_accounts.csva dohledá každý účet přes/api/v1/accounts/lookup. - 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:
- Získej read token (viz postup výše).
- Přidej
GTS_TOKEN_<DOMAIN>=tokendo.env. - 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ě). - Přidej instanci do
QUERY_INSTANCESvmastodon_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