-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgen-mindthread-articles.cjs
More file actions
23 lines (22 loc) · 1.32 KB
/
gen-mindthread-articles.cjs
File metadata and controls
23 lines (22 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const admin = require('firebase-admin');
const fs = require('fs');
const sa = require('/home/user0/.openclaw/secrets/mindthread-service-account.json');
if (admin.apps.length === 0) admin.initializeApp({ credential: admin.credential.cert(sa) });
const db = admin.firestore();
const outPath = process.argv[2] || '/home/user0/.openclaw/workspace/MINDTHREAD-ARTICLES.md';
db.collection('blog_posts').orderBy('createdAt', 'desc').get().then(snap => {
let out = '# MindThread 文章庫\n\n每篇都是 mindthread.tw/blog 上的真實文章。分享時用自己的話改寫重點,不要照抄。\n\n';
let i = 0;
snap.forEach(doc => {
i++;
const d = doc.data();
const title = typeof d.title === 'object' ? (d.title.en || d.title.zh || '') : (d.title || '');
const excerpt = typeof d.excerpt === 'object' ? (d.excerpt.en || d.excerpt.zh || '') : (d.excerpt || '');
const tags = Array.isArray(d.tags) ? d.tags.join(', ') : '';
const slug = d.slug || doc.id;
out += `${i}. **${title}**\n 標籤:${tags}\n 摘要:${String(excerpt).substring(0, 150)}\n 連結:https://mindthread.tw/blog/${slug}\n\n`;
});
fs.writeFileSync(outPath, out);
console.log(`MINDTHREAD-ARTICLES.md: ${i} articles (${(out.length/1024).toFixed(1)}KB)`);
process.exit(0);
}).catch(e => { console.error(e.message); process.exit(1); });