diff --git a/crates/pile-value/src/extract/item/epub/epub_cover.rs b/crates/pile-value/src/extract/item/epub/epub_cover.rs
new file mode 100644
index 0000000..2623309
--- /dev/null
+++ b/crates/pile-value/src/extract/item/epub/epub_cover.rs
@@ -0,0 +1,76 @@
+use epub::doc::EpubDoc;
+use mime::Mime;
+use pile_io::SyncReadBridge;
+use std::sync::{Arc, OnceLock};
+use tracing::trace;
+
+use crate::{
+ extract::traits::ExtractState,
+ value::{Item, PileValue},
+};
+
+pub struct EpubCoverExtractor {
+ item: Item,
+ output: OnceLock