diff --git a/.gitignore b/.gitignore
index 217e6a3..9825c0e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,6 @@ yarn-error.log*
blog/
tags/
+
+#rss
+public/rss
diff --git a/generateRSS.js b/generateRSS.js
new file mode 100644
index 0000000..5b8bc98
--- /dev/null
+++ b/generateRSS.js
@@ -0,0 +1,80 @@
+const { createClient } = require("contentful");
+const marked = require("marked");
+const fs = require("fs");
+const path = require("path");
+
+marked.setOptions({
+ renderer: new marked.Renderer(),
+ pedantic: false,
+ gfm: true,
+ breaks: false,
+ sanitize: false,
+ smartLists: true,
+ smartypants: false,
+ xhtml: true,
+});
+
+
+const client = createClient({
+ space: process.env.CONTENTFUL_SPACE_ID,
+ accessToken: process.env.CONTENTFUL_ACCESS_KEY,
+});
+
+const posts = async () => {
+ try {
+ let res = await client.getEntries({ content_type: "rehber" });
+ return res;
+ } catch (err) {
+ console.log(err);
+ }
+};
+
+const fetchPosts = async () => {
+ let res = await posts();
+ return res.items;
+};
+
+async function buildRssItems() {
+ const items = await fetchPosts();
+ return items
+ .map((item) => {
+ const text = `${marked(item.fields.rehber)}`;
+ const summary = item.fields.description;
+ const link = `https://teknolojirehberleri.xyz/rehber/${item.fields.slug}`;
+ const title = item.fields.title;
+
+ return `
+
+ ${title}
+
+ ${link}
+ ${item.sys.updatedAt}
+ ${summary}
+ ${text}
+
+ `;
+ })
+ .join("");
+}
+
+
+async function generateRSS() {
+ const rssFeed = `
+
+ Yusuf İpek
+
+ ${await buildRssItems()}
+ `;
+
+ const staticOutputPath = path.join(process.cwd(), "public");
+
+ fs.writeFile(`${staticOutputPath}/rss`, rssFeed, (err) => {
+ if (err) {
+ console.log(err);
+ } else {
+ console.log(`File written successfully.`);
+ }
+ });
+}
+
+generateRSS();
diff --git a/package.json b/package.json
index bd19c56..375f415 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"private": true,
"scripts": {
"dev": "next dev",
- "build": "next build",
+ "build": "next build && node generateRSS",
"start": "next start",
"lint": "next lint"
},
diff --git a/pages/rehber/[slug].js b/pages/rehber/[slug].js
index 298e80d..e78bec6 100644
--- a/pages/rehber/[slug].js
+++ b/pages/rehber/[slug].js
@@ -63,6 +63,6 @@ export async function getStaticProps({ params }) {
return {
props: { posts: items[0] },
- revalidate: 10,
+ revalidate: 300,
};
}