mHub
Açık platform · Addon Protocol v2 · Browser API

Her fikir. Her ekran.

Bir öğleden sonralık iş: bir radyo uygulaması.

mHub, basit dosyalardan oluşan klasörleri ve sıradan web sitelerini telefon, TV ve masaüstü için uygulamalara dönüştüren açık bir platformdur. Programcı olman gerekmez: ne istediğini anlatabiliyorsan bir yapay zekâ onu yapabilir, mHub da ona çalışacak bir yer verir.

Vypn'de ve her mHub tarayıcısında çalışır Açık kaynak, MIT Derleme adımı yok, hesap yok Telefon, TV ve masaüstünde çalışır
TV'de Vuma: belgesel ve ekonomi videosu sıralarının üstünde öne çıkan bir DW programı, en üstte eklentinin katalogları.
Bir mHub uygulaması olan Vuma, TV'de. Bu ekrandaki her şey tek bir eklentiden geliyor: DW.
Konsept

Tek platform, üç parça.

mHub tek bir uygulama değil. Birbirine uyan üç parçadan oluşur ve hepsi açıktır. İkisi temeldir: bir içerik biçimi ve bir tarayıcı API'si. Üçüncüsü uygulamalardır ve her biri bu temellerden birine ya da ikisine birden dayanır.

01

Uygulamalar

Asıl kullandığın şey. Vuma eklentileri gezilebilir tek bir ekrana dönüştürür, diğer uygulamalar da birer fikri evdeki her ekrana taşır. Hepsi web uygulamasıdır: kurulacak bir şey yok. Uygulamaları gör

02

İçerik: eklentiler

Eklenti bir içerik kaynağıdır: filmler, radyo istasyonları, podcast'ler, kurslar. Perde arkasında, herhangi bir web sunucusunda duran ve Addon Protocol v2 ile tanımlanan küçük metin dosyalarından oluşan bir klasördür. Bir yapay zekâ senin için bir tane yazabilir. Protokolü gör

03

Güçler: window.mhub

Sıradan bir web sitesini bir mHub uygulamasında aç, tarayıcının asla izin vermediği şeyleri yapabilsin: her yerden veri okumak, ölen bir alan adından sağ çıkmak, TV'nde yaşamak. Tek bir ad alanı, tek bir script etiketi: mHub Browser API. API'yi gör

Birinci bölüm · Uygulamalar

Favorilerimiz. Hepsi yayında.

Vuma iki temele birden dayanır; yanındaki uygulamalar tek bir temelin ne kadar ileri götürdüğünü gösterir. Beş uygulama, beş farklı fikir ve her biri yola çıkmak için bir başlangıç noktası.

Vuma

Vuma'ya eklentileri ver, o da onları gezilebilir tek bir ekrana dönüştürsün: eklentilerinin sunduğu her katalog, hepsinde birden arama, bir kitaplık ve kaldığın yerden devam eden bir oynatıcı. Telefonda, TV'de ve masaüstünde aynı şekilde çalışan tek bir web uygulamasıdır; dokunmayı, uzaktan kumandayı ve fareyi kendisi yönetir.

İki temele birden dayanır: içeriği eklentiler getirir, bir mHub tarayıcısının içinde de Browser API sıradan bir sayfanın hiç sahip olmadığı güçleri ekler. Hatta onu kendi sayfana, kendi eklentilerin ve kendi adınla yerleştirebilirsin: tek bir HTML dosyası.

Telefonda Vuma: bir sıra canlı TV kanalının üstünde, ayrıntılar ve listem düğmeleriyle öne çıkan bir DW programı.
Telefonda Vuma içindeki DW eklentisi: öne çıkan bir haber videosu ve kaydırılabilir bir klip listesi.

Waves

Radyo istasyonları, podcast'ler ve ücretsiz sesli kitaplar tek bir uygulamada. Waves, aynı Vuma derlemesinin üzerinde tek bir HTML dosyasıdır: beş ses eklentisi, camgöbeği bir vurgu rengi ve addonManager: "fixed"; böylece kaynaklar sabittir ve kullanıcı yalnızca onları açıp kapatır. Kaynağını görüntüle: sayfanın kendisi eğitimin tamamı.

Waves: SomaFM radyo istasyonu sıralarının üstünde bir podcast vitrini, kenar çubuğunda camgöbeği bir dalga logosu.
Waves: SomaFM, Radio Browser, podcast'ler ve sesli kitaplar, koyu zemin üstünde camgöbeği. Vuma üzerinde tek bir HTML dosyası.

Junior

Çocuklar için TV. Tek eklenti, canlı renkler, ilk ekrandan itibaren Almanca (locale: "de") ve addonManager: "hidden": kanepeden yanlış ayarlanacak bir şey yok. Bu da Vuma derlemesinin üzerinde tek bir HTML dosyası.

Junior: çocuk programı sıralarının üstünde bir KiKA animasyonu vitrini, Almanca, kenar çubuğunda sarı bir yıldız logosu.
Junior: KiKA eklentisi ve başka hiçbir şey, kapısında da bir yıldız.

Mediathek

Eklenti veridir; birinin onun üzerine kurduğu şey ise uygulama. Mediathek, doğrudan ard-mediathek eklentisinin üzerinde duran tek bir HTML dosyasıdır, altında Vuma yok: sıralar, arama, bölümleriyle diziler, altyazılar ve kaldığın yeri hatırlayan bir oynatıcı. Veriyi eklenti getirir, görünüşü sayfa halleder.

Mediathek: başlıkları, tarihleri ve süreleriyle ARD video ve dizi sıraları ve bir arama alanı.
Mediathek, tek bir eklentinin üzerinde tek bir HTML dosyası, barındıracak kendine ait hiçbir şeyi yok.

Glance

Diğer temel tek başına: Glance hiç eklenti kullanmaz. Browser API üzerinde tek bir HTML dosyasıdır; canlı hava durumunu, manşetleri, piyasa fiyatlarını ve kendi sunucularının durumunu sakin tek bir ekrana toplar. Sıradan bir tarayıcıda zarifçe geri çekilir; bir mHub uygulamasının içinde ise her kutucuk canlanır.

Glance: tek ekranda sakin kutucuklar halinde saat, hava durumu, piyasa fiyatları ve haber manşetleri.
Glance, tek bir HTML dosyası; canlı hava durumunu, manşetleri ve fiyatları çeker.
Neler yapabilirsin

Bir fikir, bir klasör, her ekran.

Listesi olan her şey bir eklenti olabilir; tarayıcının yapmayı reddettiği her şey de mHub içinde bir site olabilir. Bunlar yapıldığını görmek istediğimiz fikirler ve her biri bir prompt uzaklıkta: birini seç, aşağıdaki yapay zekâ prompt'una eklensin.

Eklenti: JSON dosyalarından oluşan bir klasör, herhangi bir yerde ya da mhub.mx'te barındırılır Site: Browser API üzerinde tek bir web sayfası Uygulama: senin eklentilerin ve senin adınla Vuma

İzle

Eklenti

Bölgesel TV kanalın

Kanalın internete koyduğu her yayın, programa göre sıralar halinde, akşam haberleri en başta.

Eklenti

Bir film festivali

Fragmanları ve özetleriyle program; güne, mekâna ve bölüme göre gezilebilir.

Eklenti

Sessiz sinema

Internet Archive'dan kamu malı filmler, on yıla ve yönetmene göre sıralı.

Eklenti

Spor kulübün

Maç özetleri, maçların tamamı ve sezon fikstürü, canlı bir katalog olarak.

Eklenti

Şehir canlı kameraları

Bir şehrin herkese açık web kameraları, liman, meydan, dağ, canlı kanallar olarak.

Eklenti

Belediye meclisi toplantıları

Belediye meclisinin kayıtları ve canlı yayınları, oturuma ve gündem maddesine göre.

Dinle

Eklenti

Radyo istasyonların

Gerçekten dinlediğin on istasyon, logolarıyla, istediğin sırada.

Eklenti

Bir podcast ağı

Bir ağın RSS akışlarından her programı, en yeni bölümler en başta.

Eklenti

Yazara göre sesli kitaplar

Bir yazarın LibriVox kayıtları, bölümler epizot olarak, kaldığın yerden devam edilebilir.

Eklenti

Uyku öncesi masallar

Çocuklar için kısa sesli masallar, her masala sakin bir kapak, reklamsız.

Eklenti

Bir cemaat

Kilisenin, caminin ya da topluluğunun ibadetleri ve konuşmaları, canlı ve kayıtlı.

Uygulama

Bir istasyonun kendi uygulaması

Tek bir istasyonun yayınları, podcast'leri ve kendi renkleriyle Waves. Tek bir HTML dosyası.

Öğren

Eklenti

Bir üniversitenin dersleri

Herkese açık ders kayıtları, fakülteye ve döneme göre, dizüstü yerine TV'de.

Eklenti

Bir dil kursu

Dersler sırayla bölüm olarak, ses alıştırmaları videoların yanında.

Eklenti

Müze turları

Bir müzenin video ve sesli rehberleri, salon salon.

Eklenti

Yemek okulu

Yemek türüne ve mutfağa göre tarif videoları, malzemeler açıklamada.

Site

Bir arşiv tarayıcısı

Archive.org ya da Project Gutenberg için dostça bir yüz: bir uygulama gibi gez, ara ve oku.

Eklenti

Bir konferansın konuşmaları

Bir konferans serisinin kaydedilmiş her konuşması, yıla ve oturum dizisine göre.

Ev ve aile

Site

Bir aile ekranı

Hava durumu, manşetler ve önemsediğin şeylerin fiyatları, sakin tek bir ekranda. Bunu biz yaptık: adı Glance.

Site

Ev kontrol paneli

Işıklar, NAS, yazıcı, modem. Tarayıcılar bu tür yerel istekleri reddeder; mHub uygulaması onları senin yerine yapar.

Site

Kamera duvarı

Kendi kameraların, yerel ağdan, TV'de bir ızgara olarak.

Eklenti

Aile fotoğraf çerçevesi

Kendi sunucundaki fotoğraflar bir görsel kataloğu olarak: TV çerçeveye dönüşür.

Uygulama

Çocuklar için TV

Tek eklenti, canlı renkler, kanepeden yanlış ayarlanacak bir şey yok. İşte Junior.

Eklenti

Tek kanalın çizgi filmleri

Bir çocuk kanalının ücretsiz bölümleri, programa göre, gönül rahatlığıyla verebileceğin.

Araçlar

Site

Bir haber okuyucu

Herhangi bir akışı doğrudan kaynağından çek. Sıradan tarayıcılar bunu engeller; mHub içinde düpedüz çalışır ve kanepeden rahat okunur.

Site

Bir fiyat takipçisi

Mağazalarda fiyatları ve stok durumunu kontrol et, bir izleme listesi tut, cevabı her ekranda gör.

Site

Sunucu durum panosu

Kendi makinelerin, diskleri ve servisleri, kimse aramadan önce kırmızıya dönen kutucuklar olarak.

Eklenti

Çözümlenmiş bir YouTube kanalı

Bir çözümleyici eklenti: bir kanal yapıştır, videolarını oynatılabilen bir katalog olarak al.

Eklenti

Bir dil için altyazılar

Tek bir dil için, imdb kimliklerine yanıt veren, açık bir altyazı kaynağını kullanan bir altyazı eklentisi.

Eklenti

Bir yapım nerede yayında

Bir film yaz, ülkende nerede oynadığını gör. Açık bir veritabanının üzerinde bir item eklentisi.

Bunlardan birini mi yaptın? mhub.mx'te yayımla: inceleriz, senin adınla barındırırız ve topluluk deposunda listeleriz.

Birinci bölüm · Vuma'yı kendine uyarla

Kendi uygulaman tek bir HTML dosyası.

Waves ve Junior tam olarak bu: Vuma derlemesini yükle, ona bir HTML elementi ver, mount çağır. Herhangi bir statik sunucudaki bu dosya, senin eklentilerin, adın ve renklerinle bitmiş bir uygulamadır ve Vuma sürümlerini kendiliğinden takip eder. Derleme adımı yok, sunucu kodu yok, hesap yok.

<!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>

Bir eklenti, manifest URL'sinden ibarettir. Burada barındırılanlar eklenti dizininde listelenir ve bir yapay zekâ sana yenisini yapabilir.

Her mount seçeneği ve dosyaların nereden geldiği uygulamanın kendisinde belgelenmiştir: Kendi uygulamanı nasıl yaparsın. Bu belge derlemeyle birlikte gelir, yani bu sayfanın yazıldığı sürümü değil, yüklemek üzere olduğun sürümü anlatır.

İkinci bölüm · Addon Protocol v2

Eklenti, JSON dosyalarından oluşan bir klasördür.

Eklenti bir içerik kaynağıdır: filmler, radyo istasyonları, podcast'ler, tarifler, kurslar. Klasörü web'de herhangi bir yere koy, adresini bir uygulamaya ekle; içindeki her şey orada gezilebilir halde görünür. Protokolün 2. sürümü sunucu gerektirmez: her uç nokta, herhangi bir CDN'deki statik bir dosya olabilir. Mevcut her v1 eklentisi çalışmaya devam eder; uygulamalar ikisi arasında çeviri yapar ve v1 desteklenmeye devam eder.

Önce statik

Tüm uç noktalar GET'tir, hepsi önbelleğe alınabilir, hepsi düz dosya olarak barındırılabilir. Görev sistemi için isteğe bağlı tek bir POST.

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

Birleştirilebilir

Kataloglar, öge ayrıntıları, kaynaklar, çözümleyiciler ve altyazılar ayrı kaynaklardır. Bir eklenti hepsini ya da yalnızca birini sunabilir.

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

Client-fetch görevleri

Bir uç nokta veri yerine bir görevle yanıt verebilir. Uygulama isteği kullanıcının kendi IP adresiyle yapar, böylece statik bir eklenti coğrafi olarak engellenen API'lerle de çalışır.

// eklenti statik kalır,
// yolu istemci gider

mhub-addon.json

En küçük eklenti bir manifest ve bir katalog dosyasıdır. İkisini herhangi bir statik sunucuya yükle, çalışır. Spesifikasyon OpenAPI 3.1 biçimindedir; üretilmiş TypeScript tipleri ve bağımlılıksız bir istemci kütüphanesiyle gelir, MIT lisanslıdır ve GitHub'da.

{ "id": "my-movies", "name": "My Movies", "specVersion": 2,
  "resources": ["catalog"], "types": ["video"],
  "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
İkinci bölüm · Yapay zekâ ile yap

Anlat. Bir yapay zekâ yapsın.

Eklenti biçiminin tamamı tek bir prompt'a sığar ve onu hiç okuman gerekmez. Prompt'u kopyala, fikrini ekle, yapay zekâ bir klasör dolusu dosyayla yanıt versin. Onları herhangi bir yere yükle, eklentin yayında.

01

Prompt'u kopyala

Yapay zekâyı spesifikasyona yönlendirir. ChatGPT ya da Claude gibi bağlantı okuyabilen her asistanla çalışır.

02

Fikrini ekle

"Favori radyo istasyonlarım." "Bir yönetmenin bütün filmleri." "Üniversitemin herkese açık dersleri." Listesi olan her şey.

03

Dosyaları yükle

Her statik sunucu olur, GitHub Pages ücretsiz. Adresi bir mHub uygulamasına ekle ve kendi eklentinde gezin.

mHub Addon Protocol v2 spesifikasyonunu şu adresten oku:
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
ve benim için bir eklenti yap. Eklenti, herhangi bir web sunucusuna
yüklenmeye hazır statik JSON dosyalarından oluşan bir klasördür. Her dosyayla
yanıt ver: önce tam yolu, sonra eksiksiz içeriği.

Eklentim: [fikrini buraya yaz]

Asistanın bağlantıları açamıyorsa spesifikasyon dosyasını sohbete yapıştır. Spesifikasyon ve eksiksiz örnek eklentiler GitHub'da.

Üçüncü bölüm · mHub Browser API

Siten mHub içinde neler yapabilir

Her şey tek bir ad alanında: window.mhub ve her ana uygulama çekirdeğin tamamını sunar. Ad alanının varlığını bir kez kontrol et, sonra doğrudan çağır. SDK yok, derleme adımı yok, hesap yok: tek bir script etiketi kurulumun tamamı ve onu kendin barındırman da sorun değil.

<script src="https://mhub.mx/mhub.js"></script>
Bu tarayıcı kontrol ediliyor…
Ana uygulama
…
Cihaz
…
Yetenekler
…

API uygulamalarda yayında ve sürümleriyle birlikte yaygınlaşıyor. Bugünden ona göre yaz, sayfan her iki durumda da çalışmaya devam eder: ana uygulama olmayan yerde window.mhub basitçe yoktur ve siten sıradan bir web sitesi olarak kalır. Bunu destekleyen bir tarayıcı edin.

mhub.fetch

Her şeyi çek. CORS yok, üstelik tarayıcının normalde kendine ayırdığı istek başlıkları da serbest.

// farklı kaynaktan, okunabilir
const r = await mhub.fetch(url);

mhub.openStream

Bazı medyaların oynatılması için kendi istek başlıkları gerekir. Tek bir çağrı, ana uygulama her platformda doğru yolu seçer.

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

mhub.storage

Sitenin çalıştığı alan adına değil, sitenin kendisine bağlı anahtar/değer depolama. İzin sorusu yok, kurulum yok.

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

mhub-site.json

Bir alan adı çöktü, siten yine de açılır. Her alan adında küçük bir dosya sun; tarayıcı onu bulur, yansılarını doğrular ve gerekirse kendiliğinden geçiş yapar. Kod yok.

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

mhub.setLinks

Tarayıcının ana ekranında bir kutucuk. Ziyaretler arasında da kalan, sitene dönüş yolu.

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

mhub.setSearch

Adres çubuğu sitenin arama kutusuna dönüşür. Sorgular ve öneriler doğrudan sayfana gider.

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

mhub.device + capabilities

İlk çizimden önce nerede çalıştığını ve ana uygulamanın neler yapabildiğini bil, telefondan TV'ye.

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

…ve uygulama bildirimleri

Uygulama olarak çalışan bir sayfa, neleri kendisinin hallettiğini ana uygulamaya söyler: kendi geri gezinmesini (setBackHandler), tam ekran oynatıcıyı (setImmersive) ve çıkış kapısını (exit); HTML'deki bir meta etiketi de kumanda için yapılmış bir uygulama olduğunu belirtir. İzin modeli ve yansı sistemiyle birlikte her üye API başvuru belgesinde.

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

Senin gibi insanların yayımladıkları.

Şimdiye kadar 31 geliştirici 56 topluluk eklentisi yayımladı. E-posta adresinle giriş yap, bir klasörü zip olarak yükle ya da kendi barındırdığın bir klasörün bağlantısını ver; incelemeden geçtiğinde mhub.mx/@you/addon adresinde, topluluk listesinde ve topluluk deposunda yer alır.

Bir şey yap. Büyük ya da küçük.

API başvuru belgesi her üyeyi, izin modelini ve yansı sistemini kapsar. Protokol spesifikasyonu, kopyalayabileceğin eksiksiz örnek eklentilerle birlikte gelir.