mHub
Åben platform · Addon Protocol v2 · Browser API

Enhver idé. Alle skærme.

Byg en radioapp på en eftermiddag.

mHub er en åben platform, der gør mapper med simple filer og almindelige websites til apps til telefoner, tv og computere. Du behøver ikke være programmør: kan du beskrive, hvad du vil have, kan en AI bygge det, og mHub giver det et sted at køre.

Kører i Vypn og alle mHub-browsere Open source, MIT Intet build-trin, ingen konto Kører på telefoner, tv og computere
Vuma på et tv: et fremhævet DW-program over rækker af dokumentarer og erhvervsvideoer, med tilføjelsens kataloger langs toppen.
Vuma, en mHub-app, på et tv. Alt på denne skærm kommer fra én tilføjelse: DW.
Konceptet

Én platform, tre dele.

mHub er ikke én app. Det er tre dele, der passer sammen, og de er alle åbne. To af dem er fundamenter: et indholdsformat og et browser-API. Den tredje er appsene, og hver af dem står på det ene fundament eller på begge.

01

Appsene

Det, du faktisk bruger. Vuma samler tilføjelser på én skærm, du kan gennemse, og andre apps tager hver én idé ud på alle skærme i hjemmet. De er alle webapps: intet at installere. Se appsene

02

Indholdet: tilføjelser

En tilføjelse er en kilde til indhold: film, radiostationer, podcasts, kurser. Under motorhjelmen er det en mappe med små tekstfiler på en vilkårlig webhost, beskrevet af Addon Protocol v2. En AI kan skrive en til dig. Se protokollen

03

Evnerne: window.mhub

Åbn et almindeligt website i en mHub-app, og det kan ting, som en browser aldrig tillader: læse data hvor som helst fra, overleve et dødt domæne, bo på dit tv. Ét navnerum, ét script-tag: mHub Browser API. Se API'et

Del 1 · Appsene

Vores favoritter. Alle er live.

Vuma står på begge fundamenter; appsene ved siden af viser, hvor langt ét fundament alene rækker. Fem apps, fem forskellige idéer, og hver af dem er et sted at starte fra.

Vuma

Giv Vuma tilføjelser, og den samler dem på én skærm, du kan gennemse: alle de kataloger, dine tilføjelser stiller til rådighed, søgning på tværs af dem alle, et bibliotek og en afspiller, der fortsætter, hvor du slap. Det er én webapp, der kører på telefoner, tv og computere, og som selv håndterer touch, fjernbetjening og mus.

Den står på begge fundamenter: tilføjelser leverer indholdet, og i en mHub-browser tilføjer Browser API de evner, en almindelig side aldrig har. Du kan endda montere den på din egen side, med dine tilføjelser og dit navn på: én HTML-fil.

Vuma på en telefon: et fremhævet DW-program med detaljer og knapper til min liste over en række live-tv-kanaler.
DW-tilføjelsen i Vuma på en telefon: en fremhævet nyhedsvideo og en rulbar liste med klip.

Waves

Radiostationer, podcasts og gratis lydbøger som én app. Waves er én HTML-fil oven på det samme Vuma-build: fem lydtilføjelser, en turkis accentfarve og addonManager: "fixed", så kilderne er fastlagt, og brugeren kun slår dem til og fra. Se kildekoden: siden er hele vejledningen.

Waves: en podcast øverst over rækker af SomaFM-radiostationer, med et turkis bølgelogo i sidebjælken.
Waves: SomaFM, Radio Browser, podcasts og lydbøger, turkis på mørkt. Én HTML-fil på Vuma.

Junior

Børne-tv. Én tilføjelse, klare farver, tysk fra første skærm (locale: "de") og addonManager: "hidden": intet at stille forkert ind fra sofaen. Også én HTML-fil oven på Vuma-buildet.

Junior: en KiKA-tegnefilm øverst over rækker af børneprogrammer, på tysk, med et gult stjernelogo i sidebjælken.
Junior: KiKA-tilføjelsen og intet andet, med en stjerne på døren.

Mediathek

Tilføjelsen er dataene; det, nogen bygger oven på den, er appen. Mediathek er én HTML-fil direkte på ard-mediathek-tilføjelsen, uden Vuma nedenunder: rækker, søgning, serier med deres afsnit, undertekster og en afspiller, der husker, hvor du stoppede. Tilføjelsen henter, siden står for udseendet.

Mediathek: rækker af ARD-videoer og -serier med titler, datoer og spilletider samt et søgefelt.
Mediathek, én HTML-fil oven på én tilføjelse, uden noget eget at hoste.

Glance

Det andet fundament alene: Glance bruger slet ingen tilføjelser. Én HTML-fil på Browser API, der henter live-vejr, overskrifter, markedspriser og status for dine egne servere ind på én rolig skærm. I en almindelig browser klarer den sig pænt med mindre; i en mHub-app vågner hver flise.

Glance: ur, vejr, markedspriser og nyhedsoverskrifter som rolige fliser på én skærm.
Glance, én HTML-fil, der henter live-vejr, overskrifter og priser.
Det kan du bygge

Én idé, én mappe, alle skærme.

Alt med en liste kan blive en tilføjelse, og alt, hvad en browser nægter at gøre, kan blive et site i mHub. Det her er idéer, vi gerne vil se lavet, og hver af dem er kun en prompt væk: vælg én, så havner den i AI-prompten længere nede.

Tilføjelse: en mappe med JSON-filer, hostet hvor som helst eller på mhub.mx Site: én webside på Browser API App: Vuma med dine tilføjelser og dit navn

Se

Tilføjelse

Din regionale tv-station

Alle udsendelser, stationen lægger online, som rækker efter program, med aftennyhederne først.

Tilføjelse

En filmfestival

Programmet med trailere og resuméer, til at gennemse efter dag, spillested og sektion.

Tilføjelse

Stumfilm

Ophavsretsfri film fra Internet Archive, sorteret efter årti og instruktør.

Tilføjelse

Din sportsklub

Højdepunkter, hele kampe og sæsonens kampprogram som et live-katalog.

Tilføjelse

Byens live-kameraer

De offentlige webcams i én by, havnen, torvet, bjerget, som live-kanaler.

Tilføjelse

Byrådsmøder

Optagelser og livestreams fra dit byråd, efter møde og dagsordenspunkt.

Lyt

Tilføjelse

Dine radiostationer

De ti stationer, du faktisk lytter til, med logoer, i den rækkefølge, du kan lide.

Tilføjelse

Ét podcastnetværk

Alle programmer fra ét netværk fra dets RSS-feeds, nyeste afsnit først.

Tilføjelse

Lydbøger efter forfatter

LibriVox-indspilninger af én forfatter, kapitler som afsnit, kan genoptages.

Tilføjelse

Godnathistorier

Korte lydhistorier til børn, med et roligt omslag pr. historie og ingen reklamer.

Tilføjelse

En menighed

Gudstjenester og foredrag fra din kirke, moské eller dit trossamfund, live og optaget.

App

En stations egen app

Waves med én stations streams og podcasts og dens egne farver. Én HTML-fil.

Lær

Tilføjelse

Forelæsninger fra ét universitet

De offentlige forelæsningsoptagelser, efter fakultet og semester, på tv'et i stedet for på en bærbar.

Tilføjelse

Et sprogkursus

Lektioner som afsnit, i rækkefølge, med lydøvelserne ved siden af videoerne.

Tilføjelse

Museumsrundvisninger

Et museums video- og lydguider, rum for rum.

Tilføjelse

Madskole

Opskriftsvideoer efter type ret og køkken, med ingredienserne i beskrivelsen.

Site

En arkivbrowser

Et venligt ansigt på Archive.org eller Project Gutenberg: gennemse, søg og læs som i en app.

Tilføjelse

Foredrag fra én konference

Alle optagede foredrag fra en konferenceserie, efter år og spor.

Hjem og familie

Site

En familieskærm

Vejr, overskrifter og prisen på det, du holder øje med, som én rolig skærm. Den har vi bygget: det er Glance.

Site

Kontrolpanel til hjemmet

Lys, NAS, printer, router. Browsere afviser den slags lokale anmodninger; mHub-appen sender dem for dig.

Site

Kameravæg

Dine egne kameraer fra det lokale netværk som et gitter på tv'et.

Tilføjelse

Familiens fotoramme

Fotos fra din egen server som et billedkatalog: tv'et bliver rammen.

App

Børne-tv

Én tilføjelse, klare farver, intet at stille forkert ind fra sofaen. Det er Junior.

Tilføjelse

Tegnefilm fra én kanal

De gratis afsnit fra én børnekanal, efter program, trygge at give videre til børnene.

Værktøjer

Site

En nyhedslæser

Hent ethvert feed direkte fra kilden. Almindelige browsere blokerer det; i mHub virker det bare, og det er let at læse fra sofaen.

Site

En prisovervåger

Tjek butikker for priser og lagerstatus, hold en overvågningsliste, og se svaret på enhver skærm.

Site

Statustavle for servere

Dine egne maskiner, deres diske og tjenester, som fliser, der bliver røde, før nogen ringer.

Tilføjelse

En YouTube-kanal, klar til afspilning

En resolver-tilføjelse: indsæt en kanal, og få dens videoer som et katalog, der kan afspilles.

Tilføjelse

Undertekster på ét sprog

En undertekst-tilføjelse til ét sprog, der svarer på imdb-id'er, fra en åben kilde til undertekster.

Tilføjelse

Hvor en titel kan streames

Skriv en film, og se, hvor den kan ses i dit land. En item-tilføjelse oven på en åben database.

Har du lavet en af dem? Udgiv den på mhub.mx: vi gennemgår den, hoster den under dit navn og viser den i fællesskabets repository.

Del 1 · Gør Vuma til din

Din egen app er én HTML-fil.

Waves og Junior er præcis dette: indlæs Vuma-buildet, giv det et element, kald mount. Denne fil er, på en vilkårlig statisk host, en færdig app med dine tilføjelser, dit navn og dine farver, og den følger selv med i Vumas udgivelser. Intet build-trin, ingen serverkode, ingen konto.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport"
  content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no">
<title>My App</title>
<link rel="stylesheet" href="https://vuma.mx/latest/style.css">
</head>
<body>
<div id="app"></div>
<script type="module">
  import { mount } from "https://vuma.mx/latest/app.js";
  mount({
    addons: [
      "https://www.mhub.mx/radio-and-podcasts",
      "https://www.mhub.mx/public-domain",
    ],
    brand: { name: "My App", colors: { accent: "#00AAFF" } },
  });
</script>
</body>
</html>

En tilføjelse er dens manifest-URL. Dem, der hostes her, står i tilføjelsesoversigten, og en AI kan bygge en ny til dig.

Alle mount-indstillinger, og hvor filerne kommer fra, er dokumenteret i selve appen: Sådan laver du din egen app. Vejledningen følger med buildet, så den beskriver den version, du er ved at indlæse, og ikke den, denne side blev skrevet til.

Del 2 · Addon Protocol v2

En tilføjelse er en mappe med JSON-filer.

En tilføjelse er en kilde til indhold: film, radiostationer, podcasts, opskrifter, kurser. Læg mappen hvor som helst på nettet, tilføj dens adresse i en app, og alt i den dukker op der, klar til at gennemse. Version 2 af protokollen kræver ingen server: hvert endpoint kan være en statisk fil på et vilkårligt CDN. Alle eksisterende v1-tilføjelser virker fortsat; appsene oversætter mellem de to, og v1 understøttes stadig.

Statisk først

Alle endpoints er GET, alle kan caches, og alle kan hostes som almindelige filer. Én valgfri POST til opgavesystemet.

/mhub-addon.json
/catalog/{type}/{catalogId}.json
/item/{type}/{id}.json
/source/{type}/{id}.json

Kan kombineres

Kataloger, elementdetaljer, kilder, resolvere og undertekster er separate ressourcer. Én tilføjelse kan levere dem alle eller kun én.

"resources": ["catalog",
  "item", "source",
  "resolve", "subtitle"]

Client-fetch-opgaver

Et endpoint kan svare med en opgave i stedet for data. Appen henter med brugerens egen IP, så en statisk tilføjelse virker med geoblokerede API'er.

// tilføjelsen forbliver statisk,
// klienten tager turen

mhub-addon.json

En minimal tilføjelse er ét manifest og én katalogfil. Upload begge til en vilkårlig statisk host, og den virker. Specifikationen er OpenAPI 3.1 med genererede TypeScript-typer og et klientbibliotek uden afhængigheder, MIT-licenseret, på GitHub.

{ "id": "my-movies", "name": "My Movies", "specVersion": 2,
  "resources": ["catalog"], "types": ["video"],
  "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Del 2 · Byg med AI

Beskriv det. En AI bygger det.

Hele tilføjelsesformatet kan være i én prompt, og du behøver aldrig læse det. Kopiér prompten, tilføj din idé, og AI'en svarer med en mappe med filer. Upload dem hvor som helst, og din tilføjelse er live.

01

Kopiér prompten

Den peger AI'en hen på specifikationen. Virker med enhver assistent, der kan læse links, som ChatGPT eller Claude.

02

Tilføj din idé

"Mine yndlingsradiostationer." "Alle film af én instruktør." "De offentlige forelæsninger på mit universitet." Alt med en liste.

03

Upload filerne

Enhver statisk host virker, GitHub Pages er gratis. Tilføj adressen i en mHub-app, og gennemse din egen tilføjelse.

Læs specifikationen for mHub Addon Protocol v2 på
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
og byg en tilføjelse (et addon) til mig. En tilføjelse er en mappe med statiske JSON-filer,
klar til at blive uploadet til en vilkårlig webhost. Svar med hver fil: dens fulde sti,
og derefter dens komplette indhold.

Min tilføjelse: [beskriv din idé her]

Hvis din assistent ikke kan åbne links, så indsæt specifikationsfilen i chatten i stedet. Specifikationen og komplette eksempeltilføjelser findes på GitHub.

Del 3 · mHub Browser API

Det kan dit site i mHub

Alt ligger under ét navnerum: window.mhub, og alle værter leverer hele kernen. Tjek én gang, om navnerummet findes, og kald det så bare. Intet SDK, intet build-trin, ingen konto: ét script-tag er hele opsætningen, og du må gerne selv hoste scriptet.

<script src="https://mhub.mx/mhub.js"></script>
Tjekker denne browser…
Vært
…
Enhed
…
Funktioner
…

API'et er live i appsene og rulles ud med deres udgivelser. Skriv op mod det i dag, så virker din side under alle omstændigheder: hvor der ikke er nogen vært, findes window.mhub simpelthen ikke, og dit site forbliver et almindeligt website. Få en browser, der har det.

mhub.fetch

Hent hvad som helst. Ingen CORS-begrænsninger, og du kan sætte request-headers, som browseren ellers forbeholder sig selv.

// på tværs af origins, læsbart
const r = await mhub.fetch(url);

mhub.openStream

Nogle medier skal have deres egne request-headers for at spille. Ét kald, og værten vælger den rigtige vej på hver platform.

const s = await mhub.openStream(
  { url, headers });
video.src = s.url;

mhub.storage

Nøgle/værdi-lager, der følger dit site, ikke det domæne, det tilfældigvis kører på. Ingen forespørgsel, ingen opsætning.

await mhub.storage.set(k, v);

mhub-site.json

Er et domæne nede, indlæses dit site stadig. Læg én lille fil på hvert domæne; browseren finder den, verificerer dine spejle og skifter selv over. Ingen kode.

{ "id": "mysite",
  "endpoints": [
    "https://a.example",
    "https://b.example" ] }

mhub.setLinks

En flise på browserens startskærm. Vejen tilbage til dit site, der overlever mellem besøgene.

mhub.setLinks([
  { id, name, icon, url }]);

mhub.setSearch

Adresselinjen bliver dit sites søgning. Søgninger og forslag går direkte til din side.

mhub.setSearch({ placeholder,
  onQuery, onSuggest });

mhub.device + capabilities

Find ud af, hvor du kører, og hvad værten kan, fra telefon til tv, før siden tegnes første gang.

if (mhub.device.isTV) tvUi();

…og app-erklæringerne

En side, der kører som app, fortæller værten, hvad den selv håndterer: sin egen tilbage-navigation (setBackHandler), en afspiller i fuld skærm (setImmersive) og døren ud (exit); et meta-tag i HTML'en siger, at det er en app bygget til fjernbetjeningen. Alle medlemmer, med tilladelsesmodellen og spejlsystemet, står i API-referencen.

mhub.setBackHandler(depth);
mhub.setImmersive(true);
<meta name="mhub" content="app dpad">
Fællesskab

Udgivet af folk som dig.

56 fællesskabstilføjelser fra 31 skabere indtil nu. Log ind med din e-mail, upload en mappe som zip eller link til en, du selv hoster, og når den er godkendt, ligger den på mhub.mx/@you/addon, i fællesskabslisten og i fællesskabets repository.

Byg noget. Stort eller småt.

API-referencen dækker alle medlemmer, tilladelsesmodellen og spejlsystemet. Protokolspecifikationen kommer med komplette eksempeltilføjelser, du kan kopiere.