diff --git a/rss/bot.py b/rss/bot.py
index 1a9de2b81a237d7fcd7ed7b4e7a623c9452c8b0e..0ac6b4649dc34cd6b26006b2c79de410f2dc1853 100644
--- a/rss/bot.py
+++ b/rss/bot.py
@@ -31,7 +31,7 @@ from mautrix.errors.request import MForbidden
 from maubot import Plugin, MessageEvent
 from maubot.handlers import command, event
 
-from .db import Database, Feed, Entry, Subscription
+from .db import Database, Feed, Entry, Thumbnail, Subscription
 
 
 class Config(BaseProxyConfig):
diff --git a/rss/db.py b/rss/db.py
index 892f477f6d57a74c8506965163e3d3d63ff35550..193149b922a8d59b80cb09cd2bf9ec01ed9e347f 100644
--- a/rss/db.py
+++ b/rss/db.py
@@ -30,8 +30,8 @@ Subscription = NamedTuple("Subscription", feed_id=int, room_id=RoomID, user_id=U
                           notification_template=Template, send_notice=bool)
 Feed = NamedTuple("Feed", id=int, url=str, title=str, subtitle=str, link=str,
                   subscriptions=List[Subscription])
-Entry = NamedTuple("Entry", feed_id=int, id=str, date=datetime, title=str, summary=str, content=str, link=str)
-
+Entry = NamedTuple("Entry", feed_id=int, id=str, date=datetime, title=str, summary=str, content=str, link=str, thumbnail_id=str)
+Thumbnail = NamedTuple("Thumbnail", id=str, url=str, mime_type=str, size=int)
 
 class Database:
     db: Engine
@@ -65,7 +65,13 @@ class Database:
                            Column("title", Text, nullable=False),
                            Column("summary", Text, nullable=False),
                            Column("content", Text, nullable=False),
-                           Column("link", Text, nullable=False))
+                           Column("link", Text, nullable=False),
+                           Column("thumbnail_id", Integer, ForeignKey("thumbnail.id"), nullable=True))
+        self.thumbnail = Table("thumbnail", metadata,
+                           Column("id", String(255), primary_key=True),
+                           Column("url", String(255), nullable=False),
+                           Column("mime_type", String(255), nullable=False),
+                           Column("size", Integer, nullable=False))
         self.version = Table("version", metadata,
                              Column("version", Integer, primary_key=True))
         self.upgrade()
@@ -109,6 +115,16 @@ class Database:
         if version == 1:
             self.db.execute("ALTER TABLE subscription ADD COLUMN send_notice BOOLEAN DEFAULT true")
             version = 2
+        if version == 2:
+            self.db.execute("ALTER TABLE entry ADD COLUMN thumbnail_id VARCHAR(255)")
+            self.db.execute("""CREATE TABLE IF NOT EXISTS thumbnail (
+                id VARCHAR(255) NOT NULL,
+                url VARCHAR(255) NOT NULL,
+                mime_type VARCHAR(255) NOT NULL,
+                size INTEGER NOT NULL,
+                PRIMARY KEY (id)
+            """)
+            version = 3
         self.db.execute(self.version.delete())
         self.db.execute(self.version.insert().values(version=version))