应用未签名、未公证,首次打开会被 macOS 拦截,需在隐私与安全里点「仍要打开」或执行 xattr -dr com.apple.quarantine /Applications/Kaset.app;需登录 Google 账号才能获得个性化内容;Apple Intelligence 相关功能要求 macOS 26.0 以上。
kaset
sozercanMIT活跃维护一个用 SwiftUI 写的 macOS 原生 YouTube 与 YouTube Music 客户端,补上官方缺失的桌面播放体验,支持音乐播放和媒体库管理。
📼 The missing YouTube and YouTube Music macOS app
brew install sozercan/repo/kasetREADME 未说明硬件要求,仅要求 macOS 15.4 或更高版本,Apple Intelligence 功能需 macOS 26.0 或更高版本。
用 Swift 和 SwiftUI 写的原生 macOS 客户端,让你在桌面端听 YouTube Music 和看 YouTube
一个用 SwiftUI 写的 macOS 原生 YouTube 与 YouTube Music 客户端,补上官方缺失的桌面播放体验,支持音乐播放和媒体库管理。
核心能力
- 用 SwiftUI 复刻 Apple Music 风格界面,可在 Music 与 YouTube 之间切换
- 通过 Premium 订阅播放受 DRM 保护的 YouTube Music 内容
- 内置 6 段参数均衡器,作用于 WebKit 播放输出
- 支持同步歌词逐行高亮,并可在 macOS 26+ 上做 AI 歌词解释
- 可加载 uBlock Origin Lite、SponsorBlock 等 WebKit 扩展
容易踩的坑
- v0.14.2最新正式版2026-10-11 · 2026-10-11 22:22 UTC
What's New
⭐️ If you're enjoying this app, please share and star it! ❤️
📺 Player Controls on YouTube Videos
YouTube videos can now show their controls on top of the video, like most video players. Turn on Show Controls on Video in Settings → YouTube. The controls hide when you're not using the mouse. It's off by default and doesn't change YouTube Music.
▶️ Works With YouTube Music's New Player
YouTube Music is rolling out a new player, and playback broke for people who got it. The play button and progress bar stopped responding, and songs could restart or jump to a song outside your queue. Kaset now works with both the old and new player (thanks @draded!).
🌗 Light and Dark Mode
Kaset can now stay in Light or Dark mode no matter what macOS uses. Choose it from View → Appearance or Settings → General, or pick System Default to follow macOS (thanks @dubmono!).
🖱️ Consistent Right-Click Menus
Right-clicking a song, album, playlist, artist, podcast, or episode now shows the same menu wherever you are in Kaset, including pages that had no menu before, like Explore and Charts. You can play an album or playlist straight from its menu, and Share now has Copy Link (thanks @AnthonyLenglet!).
⚡ Smoother Scrolling
Long playlists and Liked Music scroll smoothly now, even with thousands of songs. Home, Explore, Charts, New Releases, and Moods scroll more smoothly too (thanks @friedtori!). Kaset also uses much less CPU while music is playing.
📜 Control the Queue With AppleScript
Scripts and automation tools can now play a list of songs, add songs to the queue or play them next, and remove songs from the queue (thanks @friedtori!).
🐛 Fixes and improvements
- Like buttons on playlist and album songs work again. In v0.14.1, clicking one played the song instead (thanks @friedtori!).
- Liked Music no longer empties itself while you scroll shortly after launch (thanks @friedtori!).
- When you start a radio or play a song from Search, Up Next shows which songs you've liked right away (thanks @WGlegola!).
- The Play and Subscribe buttons no longer disappear when Kaset isn't the active window (thanks @anandghegde!).
- Artist and album names in the player bar can be clicked again when playing from a sidebar playlist (thanks @tsibog!).
- The sign-in window now has a close button and no longer shows a confusing passkey message.
- Kaset has a website: https://sozercan.github.io/kaset/
New Contributors
- @rohanrony made their first contribution in https://github.com/sozercan/kaset/pull/521
- @draded made their first contribution in https://github.com/sozercan/kaset/pull/537
- @dubmono made their first contribution in https://github.com/sozercan/kaset/pull/500
- @anandghegde made their first contribution in https://github.com/sozercan/kaset/pull/492
Full Changelog: https://github.com/sozercan/kaset/compare/v0.14.1...v0.14.2
- v0.14.12026-09-24 · 2026-09-24 06:26 UTC
查看更新说明
What's New
⭐️ If you're enjoying this app, please share and star it! ❤️
🎶 Gapless Playback
Songs now play back to back without the usual pause between tracks, and switching tracks no longer reloads the player (thanks @tui2019!).
⚡ Faster Startup and Smoother Scrolling
Signed-in launches now show content much faster. Scrolling through Home, Explore, Charts, New Releases, and Moods stutters much less than it did before too (thanks @friedtori!).
📡 Steadier AirPlay
AirPlay no longer disconnects when you skip tracks, and Kaset no longer shows one song while your AirPlay device plays another. The device picker now opens right below the AirPlay button in the Music and YouTube players.
📺 Ad and Live Stream Indicators
When an ad plays in YouTube or YouTube Music, the player bar shows a yellow Ad badge instead of a timeline stuck at 0:00. Seeking is disabled until your song or video comes back. Live YouTube streams show a red LIVE indicator in place of the scrubber and countdown, and hide the 30-second skip buttons.
🌍 Kaset in 18 Languages
Kaset is now available in Japanese (thanks @skytog!).
🐛 Fixes and improvements
- Closing the main window no longer stops YouTube audio. Reopening it brings back the same player.
- The Music mini player can be dragged again from anywhere outside its controls.
- Kaset no longer signs you out when it can't read its saved sign-in data. It keeps you signed in and offers Retry instead (thanks @Ferymad!).
- Artist names in playlist track rows are now clickable (thanks @tsibog!).
- Fixed the time zone offset sent to YouTube Music, which had the wrong sign for everyone outside UTC (thanks @YuriNachos!).
- AppleScript's
get play queuenow includes anaudioVideoIdfor album tracks that YouTube Music lists as music videos, pointing to the audio recording (thanks @friedtori!). - Fixed sidebar item alignment and gave the selected row a rounded highl
- Removed a leftover developer menu from the YouTube watch page toolbar.
- Installing with Homebrew no longer prints a
postflightdeprecation warning (thanks @F3adlz!).
New Contributors
- @tui2019 made their first contribution in https://github.com/sozercan/kaset/pull/248
- @Ferymad made their first contribution in https://github.com/sozercan/kaset/pull/476
- @friedtori made their first contribution in https://github.com/sozercan/kaset/pull/485
- @F3adlz made their first contribution in https://github.com/sozercan/kaset/pull/486
- @skytog made their first contribution in https://github.com/sozercan/kaset/pull/503
Full Changelog: https://github.com/sozercan/kaset/compare/v0.14.0...v0.14.1
- v0.14.02026-08-28 · 2026-08-28 18:28 UTC
查看更新说明
What's New
⭐️ If you're enjoying this app, please share and star it! ❤️
💬 Ask Gemini About Videos
On eligible YouTube videos, signed-in personal accounts can now ask Gemini about what they're watching. Start with YouTube's suggestions or write your own prompt, continue with follow-up questions, read formatted answers, and begin a new chat at any time. Availability depends on the video, account, and region.
📌 Keep YouTube Videos on Top
The YouTube pop-out window can now stay above standard windows. Toggle Float on Top from YouTube Settings, the View menu, or the pin in the detached player bar. The setting persists across launches.
🔄 Refresh Home Suggestions
Pull down on YouTube Music or YouTube Home to fetch fresh suggestions, or press
⇧⌘Rwhile Home is open. Refresh bypasses the cached feed and saves the new results (thanks @hussainarslan!).🌍 Kaset in 17 Languages
Kaset now supports Simplified and Traditional Chinese, with separate translations for each writing system (thanks @senshinya!).
🔐 Better Sign-In and Account Controls
Google sign-in no longer gets stuck in a passkey flow that cannot complete inside Kaset. Google now offers a password or another supported sign-in method instead (thanks @NestDream!). Sign Out is also available directly from the account switcher (thanks @mozyonee!).
🐛 Fixes and improvements
- Reduced WebKit memory growth during long playback sessions, including sessions using Safari extensions.
- Restored reliable click and drag interaction for the Music and YouTube volume controls.
- Fixed track changes sometimes storing the YouTube Music page as artwork, which could leave artwork views stuck loading (thanks @tsibog!).
- Prevented a crash when romanizing Bengali lyrics containing mixed scripts (thanks @YuriNachos!).
- Interrupted sign-ins now restore the prior session, and signing out cannot restore an older session later.
New Contributors
- @senshinya made their first contribution in https://github.com/sozercan/kaset/pull/419
- @YuriNachos made their first contribution in https://github.com/sozercan/kaset/pull/426
- @hussainarslan made their first contribution in https://github.com/sozercan/kaset/pull/425
- @NestDream made their first contribution in https://github.com/sozercan/kaset/pull/453
Full Changelog: https://github.com/sozercan/kaset/compare/v0.13.1...v0.14.0
- v0.13.12026-07-27 · 2026-07-27 03:35 UTC
查看更新说明
What's New
⭐️ If you're enjoying this app, please share and star it! ❤️
🎛️ Redesigned Player & Smart Shuffle
The Music and YouTube player bars have a cleaner, more compact layout with an always-visible timeline, marquee scrolling for long titles, a new volume control, and clickable artwork plus artist/channel metadata (thanks @prewue!). Smart Shuffle can now weave recommended tracks into your queue, clearly mark suggestions, and let you tune how often they appear (thanks @WGlegola!).
⏱️ Chapters, Mixes & Better Seeking
YouTube playback now includes 30-second back/forward controls, chapter navigation, and segmented chapter timelines with previews and snap-to-chapter seeking. Long DJ sets and continuous mixes gain per-track timeline segments, tooltips, keyboard and VoiceOver seeking, and individual Last.fm scrobbles for each track instead of one scrobble for the entire mix (thanks @tsibog!).
📚 Better Search, Library & Playlists
Search now preserves YouTube Music's ranked results, recognizes more result types, adds Videos, Profiles, and Episodes filters, and keeps pagination stable. Saved albums are now first-class Library items with their own filter and reliable add/remove behavior. You can also create playlists directly from the sidebar and remove songs from playlists you own, with immediate UI updates while changes sync (thanks @tsibog!). Artist names on album pages are now clickable too (thanks @AnthonyLenglet!).
👤 Guest Playback
Browse and play public YouTube and YouTube Music content without signing in. Signed-in users can switch to Guest Mode without losing their account session, while account-only features show clear sign-in prompts.
🌍 Kaset in 15 Languages
Kaset now supports 15 interface languages, adding German, Spanish, Italian, Dutch, Polish, Portuguese, Russian, Swedish, and Ukrainian while filling localization gaps throughout the sidebar, queue, settings, context menus, and YouTube experience (thanks @mozyonee and @Yoddikko!).
🧩 Better Extension Compatibility
Web Extensions can now access Kaset's actual YouTube and YouTube Music playback views, improving compatibility with extensions such as uBlock Origin Lite and SponsorBlock. See the extension setup guide for instructions on adding Safari/WebKit extensions or copying them from a browser profile.
⚡ Faster and More Energy Efficient
Initial pages appear sooner, large collections load on demand, and repeated API, artwork, parser, and background work is coalesced or avoided. The result is less network traffic, fewer idle wakeups, and smoother navigation throughout the app.
⌨️ Better macOS Controls & Automation
New AppleScript commands expose the current play queue and let scripts play any queue item by index (thanks @anuragdeshpande!). The Dock menu now includes Like/Unlike, and media keys keep controlling Kaset after playback is paused (thanks @WGlegola!).
🐛 Fixes and improvements
- Hardened playback and queue reliability during rapid skips, seeks, duplicate tracks, cancelled loads, and account changes.
- Fixed YouTube Music loading failures behind the EU consent wall.
- Expired sessions now return to sign-in instead of getting stuck on a blank account state (thanks @Rahulsharma0810!).
- Favorites are now kept separate per account, and rapid like/library updates no longer overwrite newer state.
- Fixed
kaset://deep links, playback shortcuts firing while typing, and sidebar re-selection behavior (thanks @mozyonee!). - Fixed artist metadata briefly showing view counts or losing clickability after track changes (thanks @potatomt!).
- Restored AI discovery commands for moods, genres, activities, and eras.
New Contributors
- @prewue made their first contribution in https://github.com/sozercan/kaset/pull/327
- @WGlegola made their first contribution in https://github.co
- v0.13.02026-07-24 · 2026-07-24 02:27 UTC
查看更新说明
What's New
⭐️ If you're enjoying this app, please share and star it! ❤️
🎛️ Redesigned Player & Smart Shuffle
The Music and YouTube player bars have a cleaner, more compact layout with an always-visible timeline, marquee scrolling for long titles, a new volume control, and clickable artwork plus artist/channel metadata (thanks @prewue!). Smart Shuffle can now weave recommended tracks into your queue, clearly mark suggestions, and let you tune how often they appear (thanks @WGlegola!).
⏱️ Chapters, Mixes & Better Seeking
YouTube playback now includes 30-second back/forward controls, chapter navigation, and segmented chapter timelines with previews and snap-to-chapter seeking. Long DJ sets and continuous mixes gain per-track timeline segments, tooltips, keyboard and VoiceOver seeking, and individual Last.fm scrobbles for each track instead of one scrobble for the entire mix (thanks @tsibog!).
📚 Better Search, Library & Playlists
Search now preserves YouTube Music's ranked results, recognizes more result types, adds Videos, Profiles, and Episodes filters, and keeps pagination stable. Saved albums are now first-class Library items with their own filter and reliable add/remove behavior. You can also create playlists directly from the sidebar and remove songs from playlists you own, with immediate UI updates while changes sync (thanks @tsibog!). Artist names on album pages are now clickable too (thanks @AnthonyLenglet!).
👤 Guest Playback
Browse and play public YouTube and YouTube Music content without signing in. Signed-in users can switch to Guest Mode without losing their account session, while account-only features show clear sign-in prompts.
🌍 Kaset in 15 Languages
Kaset now supports 15 interface languages, adding German, Spanish, Italian, Dutch, Polish, Portuguese, Russian, Swedish, and Ukrainian while filling localization gaps throughout the sidebar, queue, settings, context menus, and YouTube experience (thanks @mozyonee and @Yoddikko!).
🧩 Better Extension Compatibility
Web Extensions can now access Kaset's actual YouTube and YouTube Music playback views, improving compatibility with extensions such as uBlock Origin Lite and SponsorBlock. See the extension setup guide for instructions on adding Safari/WebKit extensions or copying them from a browser profile.
⚡ Faster and More Energy Efficient
Initial pages appear sooner, large collections load on demand, and repeated API, artwork, parser, and background work is coalesced or avoided. The result is less network traffic, fewer idle wakeups, and smoother navigation throughout the app.
⌨️ Better macOS Controls & Automation
New AppleScript commands expose the current play queue and let scripts play any queue item by index (thanks @anuragdeshpande!). The Dock menu now includes Like/Unlike, and media keys keep controlling Kaset after playback is paused (thanks @WGlegola!).
🐛 Fixes and improvements
- Hardened playback and queue reliability during rapid skips, seeks, duplicate tracks, cancelled loads, and account changes.
- Fixed YouTube Music loading failures behind the EU consent wall.
- Expired sessions now return to sign-in instead of getting stuck on a blank account state (thanks @Rahulsharma0810!).
- Favorites are now kept separate per account, and rapid like/library updates no longer overwrite newer state.
- Fixed
kaset://deep links, playback shortcuts firing while typing, and sidebar re-selection behavior (thanks @mozyonee!). - Fixed artist metadata briefly showing view counts or losing clickability after track changes (thanks @potatomt!).
- Restored AI discovery commands for moods, genres, activities, and eras.
New Contributors
- @prewue made their first contribution in https://github.com/sozercan/kaset/pull/327
- @WGlegola made their first contribution in https://github.com
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Features
Music & Video
- 🎵 Native macOS Experience — Apple Music-style UI with Liquid Glass player bars, clean sidebar navigation, and a source toggle for Music ↔ YouTube
- 🎧 YouTube Music Support — Full playback of DRM-protected YouTube Music content via your existing Premium subscription
- ▶️ YouTube Support — Browse regular YouTube recommendations, search, subscriptions, Shorts, Watch Later, history, comments, and video playback with native controls, captions, quality selection, and picture in picture
Playback
- 🎚️ Equalizer — System-wide 6-band parametric EQ with Spotify-style presets, applied to WebKit playback output
- 📜 Lyrics — View plain and synced lyrics with line-by-line highlighting when timing data is available, plus AI-powered explanations and mood analysis on macOS 26+
- 📃 Queue Management — View, reorder, shuffle, and clear your playback queue
- 🔀 Smart Shuffle — Beyond plain shuffle: blends suggested tracks into the queue based on what you're playing, with cadence and how many are queued ahead configurable in Settings
- 🔊 Background Audio — Music continues playing when the window is closed; stops on quit
- 🎶 Track Notifications — Get notified when a new track starts playing
Library & Discovery
- 📚 Library Access — Browse playlists, liked songs, and subscribed podcasts; create playlists, add songs to playlists, and delete your own playlists
- 🧭 Explore — Discover new releases, charts, and moods & genres
- 🎙️ Podcasts — Browse and listen to podcasts with episode progress tracking
- 🔍 Search — Find songs, albums, artists, playlists, and podcasts
- 🕓 History — Revisit recently played tracks
macOS Integration
- 🎛️ System Integration — Now Playing in Control Center, media key support, Dock menu controls
- ✨ Apple Intelligence — On-device AI for natural language commands, lyrics explanations, and playlist refinement on macOS 26+
- ⌨️ Keyboard Shortcuts — Full keyboard control for playback, navigation, and more
- 📳 Haptic Feedback — Tactile feedback on Force Touch trackpads for player controls and navigation
- 📣 Share — Share songs, playlists, albums, and artists via the native macOS share sheet
- 🌍 Localized — UI available in 18 languages (Arabic, Chinese (Simplified), Chinese (Traditional), Dutch, English, French, German, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swedish, Turkish, Ukrainian); change under Settings → General → Language
Automation & Extensibility
- 🧩 Extensions — Load WebKit Web Extensions, including uBlock Origin Lite and SponsorBlock
- 🔗 URL Scheme — Open songs directly with
kaset://play?v=VIDEO_ID; app-targeted YouTube watch andyoutu.belinks play in YouTube mode - ⚡️ Shortcuts, Siri & Spotlight — Native actions to play music, playlists, and albums, control playback, and rate songs; Siri phrases; Library playlists and albums in Spotlight
- 🤖 AppleScript Support — Automate playback with scripts, Raycast, Alfred, and Shortcuts
Requirements
- macOS 15.4 or later
- Apple Intelligence features require macOS 26.0 or later
- Google account for YouTube Music and YouTube personalization
Installation
Download
- Go to the latest release page.
- Under Assets, click the file whose name ends in
.dmgto download it. - Open the downloaded
.dmgfile from your Downloads folder. - In the window that appears, drag the Kaset icon onto the Applications folder.
- Open Kaset from your Applications folder.
Opening Kaset for the First Time
Kaset isn't signed or notarized by Apple, so the first time you open it, macOS shows a warning that the app can't be verified. This is expected. Use one of the options below to allow it. You only need to do this once.
Option 1: System Settings (no Terminal needed)
- Try to open Kaset once, then close the warning by clicking Done.
- Open System Settings and go to Privacy & Security.
- Scroll down to the Security section and click Open Anyway next to Kaset.
- Click Open Anyway again in the pop-up, then enter your password or use Touch ID.
Option 2: Terminal
-
Open Terminal: press
⌘ Space, typeTerminal, and press Return. -
Copy the command below, paste it into the Terminal window, and press Return:
xattr -dr com.apple.quarantine /Applications/Kaset.app -
Open Kaset from your Applications folder as usual.
Homebrew
If you already use Homebrew, you can install Kaset with:
brew install sozercan/repo/kaset
Homebrew handles the security warning for you, so you can skip the steps above.
Contributing
See CONTRIBUTING.md for development setup, architecture, and coding guidelines.
We welcome AI-assisted contributions! You can submit traditional PRs or prompt requests — share the AI prompt that generates your changes, and maintainers can review the intent before running the code. See the AI-Assisted Contributions section for details.
Disclaimer
Kaset is an unofficial application and not affiliated with YouTube or Google Inc. in any way. "YouTube", "YouTube Music" and the "YouTube Logo" are registered trademarks of Google Inc.