{"id":320798,"date":"2026-06-25T21:54:22","date_gmt":"2026-06-25T21:54:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/skipseek-radio\/"},"modified":"2026-06-25T21:53:44","modified_gmt":"2026-06-25T21:53:44","slug":"skipseek-radio","status":"publish","type":"plugin","link":"https:\/\/mfe.wordpress.org\/plugins\/skipseek-radio\/","author":23509366,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"SkipSeek Radio","header_author":"SkipSeek","header_description":"Modern, mobile-first radio player for Icecast, AzuraCast, and Shoutcast streams. Includes AzuraCast station auto-discovery, shortcode, and Gutenberg block.","assets_banners_color":"092f23","last_updated":"2026-06-25 21:53:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/skipseek.live\/wp-plugin","header_author_uri":"https:\/\/skipseek.live\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"skipseek","date":"2026-06-25 21:53:44"}},"upgrade_notice":{"2.0.0":"<p>Major update for WordPress.org compliance \u2014 removes the in-plugin Pro tier. If you were using Pro features (R2\/S3 bucket, multi-station rotation, social row, custom credit), install the separate SkipSeek Radio Pro plugin from https:\/\/skipseek.live\/wp-plugin to keep them. Free features (single Icecast\/Shoutcast\/AzuraCast stream + auto-discovery) are unchanged.<\/p>","1.0.20":"<p>Code-quality release: clears 24 Plugin Check lint warnings. No user-facing changes; safe drop-in.<\/p>","1.0.19":"<p>Adds a buffering spinner so slow-network users get visual feedback between tapping play and audio actually starting.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3586595,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3586595,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3586595,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3586595,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"skipseek\/radio":{"name":"skipseek\/radio","title":"SkipSeek Radio"}},"tagged_versions":["2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3586595,"resolution":"1","location":"assets","locale":"","width":818,"height":1248},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3586595,"resolution":"2","location":"assets","locale":"","width":694,"height":1156},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3586595,"resolution":"3","location":"assets","locale":"","width":1984,"height":4586},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3586595,"resolution":"4","location":"assets","locale":"","width":1900,"height":1748},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3586595,"resolution":"5","location":"assets","locale":"","width":1984,"height":1438}},"screenshots":{"1":"Player on desktop.","2":"Player on mobile.","3":"Settings page."}},"plugin_section":[],"plugin_tags":[4702,173303,35593,704,30402],"plugin_category":[50],"plugin_contributors":[268912],"plugin_business_model":[],"class_list":["post-320798","plugin","type-plugin","status-publish","hentry","plugin_tags-audio-player","plugin_tags-azuracast","plugin_tags-icecast","plugin_tags-radio","plugin_tags-shoutcast","plugin_category-media","plugin_contributors-skipseek","plugin_committers-skipseek"],"banners":{"banner":"https:\/\/ps.w.org\/skipseek-radio\/assets\/banner-772x250.png?rev=3586595","banner_2x":"https:\/\/ps.w.org\/skipseek-radio\/assets\/banner-1544x500.png?rev=3586595","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/skipseek-radio\/assets\/icon-128x128.png?rev=3586595","icon_2x":"https:\/\/ps.w.org\/skipseek-radio\/assets\/icon-256x256.png?rev=3586595","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/skipseek-radio\/assets\/screenshot-1.png?rev=3586595","caption":"Player on desktop."},{"src":"https:\/\/ps.w.org\/skipseek-radio\/assets\/screenshot-2.png?rev=3586595","caption":"Player on mobile."},{"src":"https:\/\/ps.w.org\/skipseek-radio\/assets\/screenshot-3.png?rev=3586595","caption":"Settings page."},{"src":"https:\/\/ps.w.org\/skipseek-radio\/assets\/screenshot-4.png?rev=3586595","caption":""},{"src":"https:\/\/ps.w.org\/skipseek-radio\/assets\/screenshot-5.png?rev=3586595","caption":""}],"raw_content":"<!--section=description-->\n<p>SkipSeek Radio is a clean, mobile-first audio player for WordPress sites that stream internet radio.<\/p>\n\n<ul>\n<li>Drop-in shortcode <code>[skipseek_radio stream=\"https:\/\/...\"]<\/code> or a Gutenberg block.<\/li>\n<li>Album-art tap-to-play, no fiddly play button.<\/li>\n<li>Flat-dark and flat-light layouts, responsive from desktop to phone.<\/li>\n<li>Live now-playing metadata polling for AzuraCast (and any other server that exposes a now-playing JSON endpoint).<\/li>\n<li><strong>AzuraCast auto-discovery<\/strong> \u2014 paste any AzuraCast public-page URL and the plugin fetches the list of every public station on that server, so listeners can switch between channels in-place without a page reload.<\/li>\n<li>No third-party tracking, no analytics, no outbound network calls beyond what's strictly required to render the player.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin makes <strong>one<\/strong> outbound HTTP request, and only when an AzuraCast URL has been entered as the Stream URL:<\/p>\n\n<h4>AzuraCast station discovery<\/h4>\n\n<ul>\n<li><strong>What it is:<\/strong> Public list of stations on the same AzuraCast server, used to populate the player's rotation pool so listeners can switch channels.<\/li>\n<li><strong>What is sent:<\/strong> A GET request to <code>https:\/\/your-azuracast-host\/api\/stations<\/code> \u2014 only the AzuraCast host you yourself entered. No personal data, no analytics.<\/li>\n<li><strong>When it is sent:<\/strong> Once per cache window (1 hour) when a post containing the player loads. Result is stored in a WP transient between requests.<\/li>\n<li><strong>Endpoint:<\/strong> The AzuraCast server you configured in Stream URL. This plugin does NOT call any SkipSeek server.<\/li>\n<li><strong>Provider:<\/strong> Your AzuraCast host. AzuraCast is open-source software. <a href=\"https:\/\/www.azuracast.com\">AzuraCast website<\/a>.<\/li>\n<\/ul>\n\n<p>If you use a plain Icecast\/Shoutcast stream URL (no AzuraCast), the plugin makes no outbound HTTP requests at all.<\/p>\n\n<h4>Optional: Now Playing API<\/h4>\n\n<p>If you configure a Now Playing API URL (separate from the Stream URL), the player polls it every 15 seconds for live track metadata. This request is made by the visitor's browser, not by WordPress. The Now Playing API is whatever URL you configured \u2014 typically your own AzuraCast or compatible server.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>skipseek-radio<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install from the WordPress admin.<\/li>\n<li>Activate the plugin through the Plugins menu.<\/li>\n<li>Go to <strong>Settings \u2192 SkipSeek Radio<\/strong> and set your stream URL.<\/li>\n<li>Embed the player with shortcode <code>[skipseek_radio]<\/code> or insert the SkipSeek Radio block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20azuracast%3F\"><h3>Does this work with AzuraCast?<\/h3><\/dt>\n<dd><p>Yes \u2014 and it's the recommended setup. Paste any AzuraCast public-page URL (e.g. <code>https:\/\/your-host\/public\/your-station<\/code>) into the Stream URL field. The plugin auto-detects AzuraCast, fills in the station name + cover art from the API, and surfaces every other public station on the same server as a rotation entry.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20non-azuracast%20icecast%20%2F%20shoutcast%20streams%3F\"><h3>Does this work with non-AzuraCast Icecast \/ Shoutcast streams?<\/h3><\/dt>\n<dd><p>Yes. Paste your direct stream URL (typically ending in <code>.mp3<\/code> or <code>.aac<\/code>) and add a fallback station name + tagline in the settings. The player will use those since plain Icecast\/Shoutcast doesn't expose track metadata to browsers.<\/p><\/dd>\n<dt id=\"what%20audio%20formats%20are%20supported%3F\"><h3>What audio formats are supported?<\/h3><\/dt>\n<dd><p>MP3, AAC, OGG. Anything the browser's native <code>&lt;audio&gt;<\/code> element supports.<\/p><\/dd>\n<dt id=\"can%20i%20run%20multiple%20players%20on%20one%20page%3F\"><h3>Can I run multiple players on one page?<\/h3><\/dt>\n<dd><p>Yes. Each <code>[skipseek_radio]<\/code> shortcode is independent.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>Breaking:<\/strong> removed Pro tier from this plugin. Per WordPress.org Plugin Directory Guidelines (Guideline 5, Trialware), plugins on the directory cannot lock built-in features behind a license key. The free plugin now includes single-station playback + AzuraCast auto-discovery as core features; previously-Pro features (R2\/S3 bucket source, multi-station rotation slots, Google Fonts, social row, custom credit, flat-light layout) have moved to a separate <strong>SkipSeek Radio Pro<\/strong> plugin distributed on https:\/\/skipseek.live\/wp-plugin.<\/li>\n<li>Removed: License activation tab, Pro Features tab, license-validation Worker calls, license cron.<\/li>\n<li>Settings page simplified to a single screen.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Code-quality: cleared 24 Plugin Check warnings (nonce verification + variable-prefix lint) with justified phpcs annotations.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Player: buffering spinner shows while audio loads after the user taps play.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>Brand refresh: Gutenberg block icon updated to canonical SkipSeek chevron mark.<\/li>\n<li>WP.org repo assets (banners + icons) refreshed.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Modern, mobile-first WordPress radio player for Icecast, AzuraCast, and Shoutcast \u2014 with built-in AzuraCast station auto-discovery.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320798"}],"author":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/skipseek"}],"wp:attachment":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320798"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320798"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320798"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320798"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320798"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}