Dieses Repository sammelt die Plugin-Feeds von über 200 FFXIV-/Dalamud-Entwicklern ein, führt sie zu einem einzigen Feed zusammen und bietet zusätzlich einen Feed pro Kategorie. Statt 20+ URLs in den Dalamud-Einstellungen pflegst du eine.
Der Abgleich läuft alle 3 Stunden automatisch über GitHub Actions. Sobald eine Quelle eine neue Plugin-Version veröffentlicht, ist sie hier spätestens 3 Stunden später drin.
Important
Hier werden keine Plugins gehostet. Die Feeds enthalten nur die Download-Links der jeweiligen Entwickler. Updates, Support und Verantwortung liegen weiterhin bei den ursprünglichen Autoren.
- In FFXIV:
/xlsettings→ Reiter Experimental - Unter Custom Plugin Repositories alle alten URLs entfernen
- Diese URL einfügen, Enter drücken, Haken setzen, Save and Close
https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/master.json
- Dalamud neu laden (
/xlplugins→ Plugin-Installer öffnet sich neu befüllt)
Du musst nicht alles nehmen. Jede Kategorie ist ein eigenständiger Feed und lässt sich beliebig mit anderen kombinieren — die Tabelle wird bei jedem Lauf automatisch aktualisiert.
| Feed | Inhalt | Plugins | URL |
|---|---|---|---|
| ⭐ Master | Alles außer 18+ | 581 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/master.json |
| 🌐 Master inkl. 18+ | Wirklich alles | 587 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/master-full.json |
| 👗 Glamour & Charakter | Mods, Aussehen, Posing, Sync | 97 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/glamour.json |
| ⚔️ Kampf & Rotation | Rotationen, Boss-Timeline, Combos, PvP | 71 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/combat.json |
| 🤖 Automatisierung | AutoDuty, Navmesh, Retainer, Questing, Farming | 118 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/automation.json |
| ⚒️ Crafting & Gathering | Handwerk, Sammeln, Marktbrett | 26 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/crafting.json |
| ✨ Quality of Life & UI | Tweaks, Interface, Chat, Inventar, Karten | 144 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/qol.json |
| 🎭 Social & Roleplay | RP-Profile, Emotes, Free Company, Discord | 54 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/social.json |
| 🔞 Adult (18+) | Nur fuer Erwachsene – standardmaessig NICHT im Master | 6 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/nsfw.json |
| 🏡 Housing & Deko | Moebel, Layouts, Grundstuecke | 17 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/housing.json |
| 🔊 Audio & Voice | Voicechat, TTS, Musik, Sound | 19 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/audio.json |
| 🛠️ Developer & Data | Debugging, Datenexplorer, Editoren | 20 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/dev.json |
| 📦 Sonstiges | Alles ohne klare Zuordnung | 15 | https://raw.githubusercontent.com/yourShika/AetheryteRepo/main/repos/misc.json |
Der Zustand jeder einzelnen Quelle steht in STATUS.md, zum Durchstöbern gibt es die Webseite.
- Ein Eintrag statt 200. Dalamud fragt jede Repo-URL beim Start einzeln ab; jede tote oder langsame Quelle verzögert den Plugin-Installer.
- Keine Duplikat-Warnungen. Dasselbe Plugin liegt oft in einem Dutzend Sammel-Repos. Hier gewinnt immer das Original des Entwicklers — Dalamud sieht das Plugin nur einmal.
- Kein toter Ballast. Plugins, deren API-Level mehr als zwei Stufen unter dem aktuellen
Dalamud liegt, wandern nach
repos/legacy.jsonstatt den Installer zuzumüllen. - Ausfallsicher. Ist eine Quelle offline, wird der zuletzt erfolgreich geladene Stand
aus
cache/benutzt. Ein GitHub-Ausfall entfernt dir also keine Plugins. - Absolute Download-Links. Relative Pfade werden gegen die Quell-URL aufgelöst.
data/sources.json ──► scripts/aggregate.mjs ──► repos/*.json
│ cache/*.json
│ docs/plugins.json
└────────────────► STATUS.md
scripts/aggregate.mjs macht pro Lauf:
- Holen — alle Quellen aus
data/sources.jsonparallel (12 gleichzeitig, 3 Versuche, 45 s Timeout). Ein kompletter Durchlauf über ~290 Quellen dauert wenige Sekunden. - Normalisieren — Feed-Formate vereinheitlichen (Array,
{Plugins:[…]}oder einzelnes Manifest), Booleans wie"False"→false, relative Download-Links absolut machen,DownloadLinkUpdate/Installgegenseitig auffüllen. Einträge ohneInternalNameoder ohne Download-Link fliegen raus. - Cachen — jede erfolgreiche Quelle nach
cache/<id>.json. Bei einem Fehlschlag wird dieser Stand weiterverwendet. - Entdoppeln — nach
InternalName. Es gewinnt die Quelle mit der höherenpriority, erst bei Gleichstand die höhereAssemblyVersion. Das ist bewusst so herum: ein Entwickler-Repo hat immer die aktuellste Fassung seines eigenen Plugins, und ein Sammel-Repo oder eine Regionalvariante mit größerer Versionsnummer soll das Original nicht verdrängen. Jede Auflösung landet inSTATUS.md. - Alte API-Level aussortieren — das höchste vorkommende
DalamudApiLevelgilt als aktuell; alles, was mehr alsapiLevelWindow(Standard 2) darunter liegt, geht nachrepos/legacy.json. Plugins ohne Angabe bleiben drin. - Kategorisieren — Score über Name/Tags/Punchline/Description
(siehe
scripts/lib/categories.mjs), korrigierbar überdata/overrides.json. - Schreiben — Master-Feeds, Kategorie-Feeds,
docs/plugins.jsonfür die Webseite,STATUS.md.
Zur Herkunft bekommt jedes Manifest die Zusatzfelder _SourceId, _SourceName,
_SourceUrl und _Category. Dalamud ignoriert unbekannte Felder beim Parsen.
data/sources.json ergänzen und einen PR aufmachen:
{
"id": "kurz-und-eindeutig",
"name": "Anzeigename",
"maintainer": "GitHub-Handle",
"url": "https://raw.githubusercontent.com/USER/REPO/main/repo.json",
"category": "qol",
"priority": 50,
"enabled": true
}urlmuss die rohe JSON sein, nicht die GitHub-Projektseite.categoryist nur der Fallback, falls die Auto-Erkennung nichts findet.priorityentscheidet bei Duplikaten. Grobe Staffelung im Bestand:90–100handverlesene Originale ·85etablierte Entwickler-Repos ·60normale Einzelrepos ·20Sammel-Repos ·15Spiegel und Regionalvarianten.enabled: falsedeaktiviert eine Quelle, ohne sie zu löschen.
Die validate-Action prüft PRs automatisch auf doppelte IDs/URLs und lässt den
Aggregator einmal trocken laufen.
In data/overrides.json unter categories eintragen (Key = InternalName, klein):
{ "categories": { "meinplugin": "combat" } }blocklist wirft ein Plugin aus allen Feeds.
node scripts/aggregate.mjs --dry-run # nur anzeigen, nichts schreiben
node scripts/aggregate.mjs # Dateien erzeugen
node scripts/aggregate.mjs --offline # nur aus cache/ bauenBraucht Node 22+, keine Abhängigkeiten.
Tip
Wenn der Bot zwischendurch gepusht hat, knallt es beim git pull --rebase in den
erzeugten Dateien. Die sind wegwerfbar: Konflikte mit git checkout --ours auflösen,
git rebase --continue, dann einmal node scripts/aggregate.mjs — fertig.
Der Cron läuft alle 3 Stunden. Sofort auslösen geht über:
- Actions → Update repos → Run workflow im GitHub-UI, oder
-
gh workflow run update.yml -R yourShika/AetheryteRepo
- oder per Webhook aus einem anderen Repo:
gh api repos/yourShika/AetheryteRepo/dispatches -f event_type=source-updated
Du möchtest nicht, dass dein Repo hier auftaucht? Mach ein Issue auf oder schreib kurz — die Quelle wird dann entfernt. Es werden ausschließlich öffentlich als Dalamud-Repo veröffentlichte Feeds eingelesen, es wird nichts gespiegelt und nichts neu gehostet.
Der Code in scripts/ steht unter der MIT-Lizenz (siehe LICENSE).
Die aggregierten Manifest-Daten in repos/ und cache/ gehören den jeweiligen
Plugin-Autoren und unterliegen deren Lizenzen.