diff --git a/MediaBrowser.Providers/Plugins/ComicVine/ComicVineExternalId.cs b/MediaBrowser.Providers/Books/ComicVine/ComicVineExternalId.cs
similarity index 91%
rename from MediaBrowser.Providers/Plugins/ComicVine/ComicVineExternalId.cs
rename to MediaBrowser.Providers/Books/ComicVine/ComicVineExternalId.cs
index 8cbd1f89a7..e2e785eaca 100644
--- a/MediaBrowser.Providers/Plugins/ComicVine/ComicVineExternalId.cs
+++ b/MediaBrowser.Providers/Books/ComicVine/ComicVineExternalId.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
-namespace MediaBrowser.Providers.Plugins.ComicVine
+namespace MediaBrowser.Providers.Books.ComicVine
{
///
public class ComicVineExternalId : IExternalId
diff --git a/MediaBrowser.Providers/Plugins/ComicVine/ComicVineExternalUrlProvider.cs b/MediaBrowser.Providers/Books/ComicVine/ComicVineExternalUrlProvider.cs
similarity index 93%
rename from MediaBrowser.Providers/Plugins/ComicVine/ComicVineExternalUrlProvider.cs
rename to MediaBrowser.Providers/Books/ComicVine/ComicVineExternalUrlProvider.cs
index 9122399179..a8450ec599 100644
--- a/MediaBrowser.Providers/Plugins/ComicVine/ComicVineExternalUrlProvider.cs
+++ b/MediaBrowser.Providers/Books/ComicVine/ComicVineExternalUrlProvider.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
-namespace MediaBrowser.Providers.Plugins.ComicVine;
+namespace MediaBrowser.Providers.Books.ComicVine;
///
public class ComicVineExternalUrlProvider : IExternalUrlProvider
diff --git a/MediaBrowser.Providers/Plugins/ComicVine/ComicVinePersonExternalId.cs b/MediaBrowser.Providers/Books/ComicVine/ComicVinePersonExternalId.cs
similarity index 92%
rename from MediaBrowser.Providers/Plugins/ComicVine/ComicVinePersonExternalId.cs
rename to MediaBrowser.Providers/Books/ComicVine/ComicVinePersonExternalId.cs
index 26b8e11380..f625fb9649 100644
--- a/MediaBrowser.Providers/Plugins/ComicVine/ComicVinePersonExternalId.cs
+++ b/MediaBrowser.Providers/Books/ComicVine/ComicVinePersonExternalId.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
-namespace MediaBrowser.Providers.Plugins.ComicVine
+namespace MediaBrowser.Providers.Books.ComicVine
{
///
public class ComicVinePersonExternalId : IExternalId
diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/GoogleBooksExternalId.cs b/MediaBrowser.Providers/Books/GoogleBooks/GoogleBooksExternalId.cs
similarity index 91%
rename from MediaBrowser.Providers/Plugins/GoogleBooks/GoogleBooksExternalId.cs
rename to MediaBrowser.Providers/Books/GoogleBooks/GoogleBooksExternalId.cs
index 02d3b36974..aac8cdff65 100644
--- a/MediaBrowser.Providers/Plugins/GoogleBooks/GoogleBooksExternalId.cs
+++ b/MediaBrowser.Providers/Books/GoogleBooks/GoogleBooksExternalId.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
-namespace MediaBrowser.Providers.Plugins.GoogleBooks
+namespace MediaBrowser.Providers.Books.GoogleBooks
{
///
public class GoogleBooksExternalId : IExternalId
diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/GoogleBooksExternalUrlProvider.cs b/MediaBrowser.Providers/Books/GoogleBooks/GoogleBooksExternalUrlProvider.cs
similarity index 92%
rename from MediaBrowser.Providers/Plugins/GoogleBooks/GoogleBooksExternalUrlProvider.cs
rename to MediaBrowser.Providers/Books/GoogleBooks/GoogleBooksExternalUrlProvider.cs
index 95047ee83e..0559db2e2b 100644
--- a/MediaBrowser.Providers/Plugins/GoogleBooks/GoogleBooksExternalUrlProvider.cs
+++ b/MediaBrowser.Providers/Books/GoogleBooks/GoogleBooksExternalUrlProvider.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
-namespace MediaBrowser.Providers.Plugins.GoogleBooks;
+namespace MediaBrowser.Providers.Books.GoogleBooks;
///
public class GoogleBooksExternalUrlProvider : IExternalUrlProvider
diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
index 181cda3288..1032582900 100644
--- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj
+++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
@@ -55,18 +55,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs
deleted file mode 100644
index d35639d7e8..0000000000
--- a/MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using MediaBrowser.Model.Plugins;
-
-namespace MediaBrowser.Providers.Plugins.ComicVine;
-
-///
-/// Plugin configuration for the Comic Vine provider.
-///
-public class PluginConfiguration : BasePluginConfiguration
-{
-}
diff --git a/MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs b/MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs
deleted file mode 100644
index 101fa103b0..0000000000
--- a/MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Plugins;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Model.Serialization;
-
-namespace MediaBrowser.Providers.Plugins.ComicVine;
-
-///
-/// ComicVine plugin instance.
-///
-public class Plugin : BasePlugin, IHasEmbeddedImage
-{
- ///
- /// Initializes a new instance of the class.
- ///
- /// Instance of the interface.
- /// Instance of the interface.
- public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
- : base(applicationPaths, xmlSerializer)
- {
- Instance = this;
- }
-
- ///
- /// Gets the current plugin instance.
- ///
- public static Plugin? Instance { get; private set; }
-
- ///
- public override Guid Id => new("3ade6fd1-c76c-4560-b2df-f6bca4c2332f");
-
- ///
- public override string Name => "Comic Vine";
-
- ///
- public override string Description => "Get external links for comic books from Comic Vine.";
-
- ///
- // TODO remove when plugin removed from server.
- public override string ConfigurationFileName => "Jellyfin.Plugin.ComicVine.xml";
-
- ///
- public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-comicvine.svg";
-}
diff --git a/MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg b/MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg
deleted file mode 100644
index 81bde53a51..0000000000
--- a/MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs
deleted file mode 100644
index c32f764810..0000000000
--- a/MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using MediaBrowser.Model.Plugins;
-
-namespace MediaBrowser.Providers.Plugins.GoogleBooks;
-
-///
-/// Plugin configuration for the Google Books provider.
-///
-public class PluginConfiguration : BasePluginConfiguration
-{
-}
diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs b/MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs
deleted file mode 100644
index 645e27f5f9..0000000000
--- a/MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Plugins;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Model.Serialization;
-
-namespace MediaBrowser.Providers.Plugins.GoogleBooks;
-
-///
-/// Google Books plugin instance.
-///
-public class Plugin : BasePlugin, IHasEmbeddedImage
-{
- ///
- /// Initializes a new instance of the class.
- ///
- /// Instance of the interface.
- /// Instance of the interface.
- public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
- : base(applicationPaths, xmlSerializer)
- {
- Instance = this;
- }
-
- ///
- /// Gets the current plugin instance.
- ///
- public static Plugin? Instance { get; private set; }
-
- ///
- public override Guid Id => new("9f97232d-e7f4-432d-92d3-c709ce47e30b");
-
- ///
- public override string Name => "Google Books";
-
- ///
- public override string Description => "Get external links for books from Google Books.";
-
- ///
- // TODO remove when plugin removed from server.
- public override string ConfigurationFileName => "Jellyfin.Plugin.GoogleBooks.xml";
-
- ///
- public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-googlebooks.svg";
-}
diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg b/MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg
deleted file mode 100644
index f93ca4a18e..0000000000
--- a/MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
diff --git a/tests/Jellyfin.Providers.Tests/ExternalId/ComicVineExternalUrlProviderTests.cs b/tests/Jellyfin.Providers.Tests/ExternalId/ComicVineExternalUrlProviderTests.cs
index 99604e0933..aaa500b762 100644
--- a/tests/Jellyfin.Providers.Tests/ExternalId/ComicVineExternalUrlProviderTests.cs
+++ b/tests/Jellyfin.Providers.Tests/ExternalId/ComicVineExternalUrlProviderTests.cs
@@ -1,7 +1,7 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Providers.Plugins.ComicVine;
+using MediaBrowser.Providers.Books.ComicVine;
using Xunit;
namespace Jellyfin.Providers.Tests.ExternalId
diff --git a/tests/Jellyfin.Providers.Tests/ExternalId/GoogleBooksExternalUrlProviderTests.cs b/tests/Jellyfin.Providers.Tests/ExternalId/GoogleBooksExternalUrlProviderTests.cs
index eec64ac53f..b9ce895dbc 100644
--- a/tests/Jellyfin.Providers.Tests/ExternalId/GoogleBooksExternalUrlProviderTests.cs
+++ b/tests/Jellyfin.Providers.Tests/ExternalId/GoogleBooksExternalUrlProviderTests.cs
@@ -1,7 +1,7 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Providers.Plugins.GoogleBooks;
+using MediaBrowser.Providers.Books.GoogleBooks;
using Xunit;
namespace Jellyfin.Providers.Tests.ExternalId