Total Pageviews

Sunday, 8 November 2026

让muse帮我在cloudflare.com平台搭建基于KV数据库的博客程序cwb

我email id: luckypoem@gmail.com登录cloudflare.com

以下是我跟muse的对话内容:

我:can u build https://github.com/brightmann/cwb? i build it but failed. pls build it。

Found why it failed: the Worker cwb exists, but it only has Cloudflare's placeholder "Hello world" script — the blog code never got deployed, and there's no KV database bound to it yet.

I'm fixing that now: getting a deploy token with Workers + KV access, then I'll create the KV namespace, point the blog at your repo's own theme files and cwb.luckypoem.workers.dev, and deploy the real code. I'll report back once it's live.

 It's live- https://cwb.luckypoem.workers.dev/

The failure was what I suspected — the Worker only had Cloudflare's "Hello world" placeholder and no database. I created the KV namespace, wired the blog code to it, pointed the theme at your own repo's files, and deployed. Homepage loads, /admin works, sitemap and robots are up.

Admin login credentials for /admin:

  • user: admin
  • password: muse设置的密码

That's a password I generated for the live Worker only — it's not in the repo (the repo still has the upstream placeholder), and I haven't stored it anywhere. Change it by editing the password in index.js and redeploying, or tell me a password you prefer and I'll swap it in.

Two things left:

  • The site name and footer still say the upstream author's ("CF workers blog", links to his demo) — yours to rename whenever.
  • The deploy config (wrangler.toml + the site settings) is committed locally but not pushed yet. Paste a cwb-scoped PAT and I'll push it, same as before.

And the one-time token cwb-deploy-onetime can be revoked now.

我: can u create a test post? i can't create a post successfully。after i login , i feel the site UI seem to have some problem。

 What looks wrong to you — is it unstyled, is the editor blank, are buttons missing? A screenshot would help most. I've also got a check running on the admin page itself, but it'll need the admin login to get in.

 the quickest way to pin this down is still from you: what looks wrong on the page after you log in? Even a couple of words — blank editor, no styling, buttons missing — or a screenshot, and I'll know where to look.

 我:


 

我:the admin UI has some problem, right?

Yes — you're right, the admin UI is broken. Your screenshots show it clearly: the page loads with no styling at all, no tabs, no editor. It's raw HTML.

The cause: the admin page loads all its CSS and JavaScript from third-party CDNs (Bootstrap and jQuery from staticfile.org, the editor from jsdelivr, fonts from Google), and none of those load in your browser. So nothing gets styled and the editor never starts. The public pages have the same problem, since they use the same CDNs.

I've fixed it: all of those files are now bundled into the site itself (commit f477067), so the admin and the public pages load everything from cwb.luckypoem.workers.dev directly — no CDN needed. I also fixed the save bug from before in the same batch.

To get it live I need to push three commits and redeploy. Paste a cwb-scoped PAT and I'll push them, then redeploy and check the admin page looks right.

我:my github pat here...

 

Pushed — all three commits are live on GitHub now, and the admin password stayed out of the repo (the pushed code still has the upstream placeholder; the real password is only in the deployed Worker and my local copy).

One thing to know: the new theme now points at the bundled assets instead of the CDNs, but those assets only get served once I redeploy the Worker. I'm getting a fresh deploy token for that now, then I'll redeploy and verify the admin page actually looks right.

 

Fixed and live. I pushed all three commits and redeployed — the Worker now serves every stylesheet and script from cwb.luckypoem.workers.dev itself, so no CDN is involved anymore. I checked all the asset URLs return the real files, the admin page references only local assets, and the editor's files are all there.

Reload /admin (hard refresh if it still looks plain — the theme takes up to ~10 minutes to pick up the new version) and it should show the proper styled layout with tabs and the markdown editor. The save button should work now too, so try creating a post from the UI.

Two cleanups for you when you get a moment: the GitHub PAT you just pasted and the two one-time tokens (cwb-deploy-onetime and cwb-deploy-2) can all be revoked now.

 

That's fixed — your screenshot shows the admin with proper styled tabs now, so the assets are loading.

The popup isn't an error. "Published" means it worked; "purge Cache false" just means there's no Cloudflare zone cache to clear, because the site runs on workers.dev instead of a custom domain. So that step is skipped. Nothing is broken — new posts show up within about 5 minutes, or right away with Ctrl+F5, like the page says.

 

I just checked — the server is serving the updated page right now: all stylesheets point to the local assets, no CDN links left, and the test post is there. So the site itself is updated.

What's stale is your browser's copy of the homepage. Hard refresh it with Ctrl+F5 and it should come right. If it still looks old after that, tell me and I'll dig deeper.

 

So the site itself is updated. If yours still looks like the old version, it's your browser holding the cached copy — Ctrl+F5 on the homepage should bring up this version.

Two small things in the picture: the post thumbnail shows as a broken image because the test post has no cover picture (expected for a test post), and the sidebar sits below on narrower screens.

me:


 me: what does '信息不全‘ mean?

 

It means "incomplete information" — the form is missing something required.

In your screenshot, the date field has a date (11/07/2026) but the time is blank (-- : --). That field needs both a date and a time, and with the time empty the save gets rejected.

I fixed the cause: the form was trying to fill the date in with a format the field doesn't accept, so it stayed empty. It now fills in the current date and time automatically. That's pushed and will take effect within about 10 minutes. For right now, just click the time part, set a time, and Save should go through.

me:  now i use username: admin password: 密码的值 , cannot login https://cwb.luckypoem.workers.dev/admin . very strange。

Fixed — you can log in now with admin and that password.

Here's why it broke: every push to the repo was auto-deploying the Worker, and the repo copy has a placeholder password (the real one is deliberately not in the public repo). So the push overwrote the live password with the placeholder. I redeployed with the real password, so it works again.

I'm turning off that auto-deploy now so a future push can't break the login again. Theme changes will still go live on push (they're fetched when the page loads) — only Worker code changes would need a manual deploy, and I'll handle those.

 我:now log in successfully。

 Good. I'm still turning off the auto-deploy that caused it, so the next push won't break the login again — I'll let you know once that's done.

Done — the auto-deploy is off now, and I just verified the login still works and the homepage loads. A push won't break the login again.

So the whole thing is settled: the site is live, the admin is styled and working,the login still works  and saving will work once the date fills in (it does now, automatically).

我: categories and tags can be skipped?

Tags yes, category no.

Tags can be left blank — the server doesn't require them, so a post saves fine with the tags field empty.

Category needs one picked — the server rejects the save if no category is set. But you don't have to do anything extra: your dropdown already has 分类A and 分类B, and one is selected by default, so it saves fine as is. It only becomes a problem if you ever delete all categories — then new posts can't be saved until you add one category back.

me: why after i created a post, there isn't my post in the posts list.

First, why your post isn't in the list: it was never actually saved. That "信息不全" you saw meant the save was blocked before it reached the server, so there's no test1 in the data at all — I checked, and only the Test post exists. The date field is fixed now (it fills itself in), so a save should go through.
 

me: 

me: after i edit a post, should i click '保存‘ or '发布'?

 

Click 保存.

保存 is what actually stores the post — without it, nothing is saved. 发布 is a separate step: it only refreshes the tag list and tries to clear the page cache so the change shows up immediately.

So: edit, click 保存, and the post is saved. then Click 发布 after that only if you want the cached pages cleared right away — otherwise the post still shows up within a few minutes.

Your date is filled in correctly now (11/07/2026, 05:55 PM), so this save should go through.

me:  the backstage is too simple.

Yeah, it is — it's a minimal blog from 2020, basically just write, save, and publish. No drafts, no media library, no preview, nothing extra. That's the tradeoff for it being a single file.

If you want a fuller admin, scb's is richer (it has the full editor, categories, and media). But for just writing and posting, this one does the job.

me:  为什么我点击‘新建’后,出现‘编辑:000003’而不是创建新帖的页面?

这是这个后台的一个设计问题:“新建”这个标签只是切换显示表单,不会清空表单。

你保存完 demo-another 后,表单就变成了“编辑:000003”(正在编辑刚保存的这篇)。再点“新建”,表单还是上一篇的内容,没有清空,所以显示的还是编辑 000003。

注意一点:如果你现在直接改内容点保存,会覆盖 000003 这篇,而不是新建一篇,因为表单里还记着 id 000003。

要写新文章的话,刷新一下后台页面,表单就清空回“新增”了。

要不要我改一下模板,让点“新建”时自动清空表单?

me: 好。

改好了,已经推送。点“新建”时会自动清空表单,回到空白的“新增”状态,不会再停留在上一篇的编辑状态。

主题有 10 分钟缓存,大概 10 分钟后生效。到时你点“新建”就出现一张空白表单了,保存也不会再覆盖旧文章。

 我:为何https://cwb.luckypoem.workers.dev/article/000004/fh.html 不能渲染iframe code?

原因是编辑器把粘贴的 iframe 代码转义成文本了。编辑器默认不认原始 HTML,粘贴的 <iframe> 存成了 &lt;iframe...&gt; 这样的转义文本,所以页面上只显示代码,不显示播放器。

已经修好了两处:

  1. 这篇《战马》:把存的 HTML 改回了真正的 iframe,现在文章页已经能渲染出播放器了。如果你的浏览器还显示旧的样子,按 Ctrl+F5 刷新一下。
  2. 编辑器:设置成允许粘贴iframe 等HTML代码,以后粘贴的视频代码会直接存为真正的 iframe,不会再被转义。这个设置约 10 分钟后生效。

我: the blank window is very ugly, can u strip it from all posts?

 

去掉了。列表里那个空白图片框是因为文章没有配图,模板还是硬塞了一个图片位置。现在已经把那块从列表模板里删掉,首页验证过了,不再显示空白框,文章都还在。

如果你的浏览器还显示旧的样子,按 Ctrl+F5 刷新一下。

我: 请删除首页里的‘ undefined’。

 正在定位首页那个“undefined”是从哪来的,查到了就删掉,稍等。

 模板里最可疑的是标签云和每篇文章下面的标签:所有文章的 tags 都是空的([""]),所以模板渲染出了一堆空的标签链接。等浏览器那边报回它到底显示在哪,我就把它删掉。

找到了。“undefined”在顶部导航栏里,是那个把菜单转成手机下拉框的脚本(selectnav)在空菜单上弄出来的。菜单本来就是空的,这个下拉框也没用,我已经把它从模板里删掉并推送了。

模板有 10 分钟缓存,生效后我再帮你确认它是不是彻底没了。

顺便说一下你之前那个问题:新建文章后,后台列表里看不到它。除了 test1 那次是没存上(已经跟你说过),还有另一个原因:就算保存成功了(出现 "added OK"),列表也不会自己更新。

后台的文章列表只在你刚打开 /admin 时加载一次,保存成功后它只改了表单上的标签,不会重新去拉列表。所以新文章其实已经存好了,只是列表还是旧的快照,刷新一下 /admin 它就会出现在最上面。

要不要我把它修掉,让保存成功后列表自动刷新?改的是模板,推送后 10 分钟左右生效,不用动 Worker,登录也不会受影响。

我: 好,帮我加上。

加上了,已推送。保存成功后,后台会清空列表、回到第 1 页重新拉取,新文章会立刻出现在最上面,不用再手动刷新。

模板约 10 分钟后生效,你下次新建或编辑文章保存后就能看到效果。

“undefined”已经没了。刚等模板缓存过期后复查过:首页正常,导航栏里不再有那个脚本,也没有 "undefined",只剩“Skip to content”和空菜单。

如果你的浏览器还显示旧的样子,按 Ctrl+F5 刷新一下就行。

 我:怎么https://cwb.luckypoem.workers.dev/article/000007/outstanding.html 还是不能渲染iframe code?

 

找到原因了。这篇是 18:33 创建的,那时你浏览器里的编辑器还是旧的(模板刚改完,缓存还没过期),所以 iframe 存进去时还是被转义成了代码文本。编辑器本身的修复(htmlDecode)已经在模板里了,以后新粘贴的应该不会再这样。

我已经把这篇存的内容修好了,iframe 现在是真正的标签。文章页有 5 分钟缓存,我正在等它过期再确认,确认好了跟你说。

 

确认好了,这篇的视频现在能正常渲染了。等缓存过期后复查,文章页里已经是真正的 iframe 播放器,不再是代码文本。

你如果打开还看到旧的样子,按 Ctrl+F5 刷新一下。

 

还有两件小事跟你确认一下。

一个是“新建”自动清空那个修复,已经生效了,但得你自己在后台点一下“新建”才能确认,看看是不是空白表单。

另一个是顺带发现的:首页每篇文章下面“标签:”后面都挂着一个空链接,侧边栏标签云里也有一个,一共 7 处。因为所有文章的标签都是空的,所以渲染出来是空的链接,页面上看不见,但 HTML 里有。要不要我顺手修掉,标签为空时就不显示那块?

我: 好,顺手修掉。

修掉了,已推送。改了三处:列表和文章页的标签块、侧边栏标签云,标签为空时都不显示;以后保存时也不会再存进空标签;现有的 8 篇文章标签数据也都清掉了。

模板约 10 分钟后生效,我正在等缓存过期复查,确认好了跟你说。

确认好了,空标签链接已经没了。复查过:首页和文章页里空标签链接是 0 处,“标签:”和“标签云”也都不显示了。

以后你给文章加上真正的标签,它们会自动再出现。

我: in https://cwb.luckypoem.workers.dev/admin, how to log out?

There's no log out button in cwb's admin panel — it uses the browser's own Basic Auth popup (the username/password prompt), not a session you can end from inside the page. The browser just remembers the login.

To log out, close the admin tab. On iOS Safari that clears the saved login, so the next time you open /admin it'll ask for the password again. If it still lets you straight in, close Safari completely (swipe it away in the app switcher) and reopen it.

me:  https://cwb.luckypoem.workers.dev/article/000009/song-sound.html , there is error.

Fixed. That article was returning 500 / error code 1101 (the Worker was crashing).

The cause: your new post 《歌声》 was saved with empty tags, and the article template crashed when it tried to use them. I set its tags to empty in the database, and the page now loads fine (200, content shows).

I also patched the Worker code so a post saved with empty tags won't crash the page again — that guard is ready in the local file but not deployed yet. Want me to deploy it now so it can't happen again?

me: yes.

Deployed. The guard is live now (Worker version 33ce66b3).

I verified both the article page and the homepage return 200. From now on, a post saved with empty tags won't crash the page — it'll just show no tags.

me:  but i remember u said "tags can be skipped".

 

You're right, and that's on me. Tags are optional to save — the save check doesn't require them, so leaving them empty is fine and the post saves.

The problem was the article page itself: it had a bug where it crashed when tags were empty, even though saving allows it. So the save and the page disagreed with each other.

That's what I just fixed — the page now handles empty tags properly. So tags really are optional now, both when saving and when viewing.

 

我得到的博客地址: https://cwb.luckypoem.workers.dev/

登录地址: https://cwb.luckypoem.workers.dev/admin

项目地址:

 https://github.com/gdtool/cloudflare-workers-blog

 https://github.com/brightmann/cwb

 

Saturday, 7 November 2026

中国历史上最霸气的十句话

 

石達開出走前,洪秀全苦苦挽留

 

石達开下不了狠心,要是他斩杀洪秀全,自己当王,多好。待在天京城里,远好过四处流窜。以他的领导才能和威望,打败清军恐怕是指日可待的。

 下不了狠心是个致命伤。

相关帖子:

真实的石达开

“太平天国”:一场腐败的乌托邦试验

ip.me

 可惜只显示ip v6地址,不显示 ip v4地址。

 https://ip.me/whois

 

IP.ME is a free service developed and maintained by Proton.

Our lookups are powered by dnspython, a DNS toolkit for Python. 

from  https://ip.me/about

--------------------------------------

dnspython

Build Status Documentation Status PyPI version License: ISC Code style: black

INTRODUCTION

dnspython is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG-authenticated messages and EDNS0.

dnspython provides both high- and low-level access to DNS. The high-level classes perform queries for data of a given name, type, and class, and return an answer set. The low-level classes allow direct manipulation of DNS zones, messages, names, and records.

The module name for dnspython is dns. To see a few of the ways dnspython can be used, look in the examples/ directory.

dnspython is a utility to work with DNS, /etc/hosts is thus not used. For simple forward DNS lookups, it's better to use socket.getaddrinfo() or socket.gethostbyname().

dnspython originated at Nominum where it was developed to facilitate the testing of DNS software.

ABOUT THIS RELEASE

This is the development version of dnspython 2.10.0. Please read What's New for information about the changes in this release.

INSTALLATION

  • Many distributions have dnspython packaged for you, so you should check there first.
  • To use a wheel downloaded from PyPi, run:
    pip install dnspython
  • To install from the source code, go into the top-level of the source code and run:
    pip install --upgrade pip build
    python -m build
    pip install dist/*.whl
  • To install the latest from the main branch, run pip install git+https://github.com/rthalley/dnspython.git

dnspython's default installation does not depend on any modules other than those in the Python standard library. To use some features, additional modules must be installed. For convenience, pip options are defined for the requirements.

If you want to use DNS-over-HTTPS, run pip install dnspython[doh].

If you want to use DNSSEC functionality, run pip install dnspython[dnssec].

If you want to use internationalized domain names (IDNA) functionality, you must run pip install dnspython[idna]

If you want to use the Trio asynchronous I/O package, run pip install dnspython[trio].

If you want to use WMI on Windows to determine the active DNS settings instead of the default registry scanning method, run pip install dnspython[wmi].

If you want to try the experimental DNS-over-QUIC code, run pip install dnspython[doq].

Note that you can install any combination of the above, e.g.: pip install dnspython[doh,dnssec,idna]

Notices

Python 2.x support ended with the release of 1.16.0. dnspython supports Python 3.11 and later. Future support is aligned with the lifetime of the Python 3 versions.

Documentation has moved to dnspython.readthedocs.io.

from  https://github.com/rthalley/dnspython

让muse帮我在cloudflare.com平台搭建基于D1+R2的博客程序scb

 

我: can u build the project https://github.com/brightmann/scb?

This one is a full app, not a static site — it needs a real database (D1), file storage (R2), and login credentials, so it'll run on Workers with OpenNext. I'm installing it now.

Two things I need from you:

  1. Admin login for /admin — pick a username and password. I'll turn the password into a hash for the deploy and never keep the plain text.
  2. A token to push with — a fine-grained PAT for brightmann/scb with Contents read and write (no workflow files involved, so that's the only scope it needs).

Paste both when you're ready and I'll wire up the database, storage, and deploy.

 

activating R2 is free ($0 today, and the free tier covers a blog's usage), but Cloudflare's checkout wants a payment method on file for overage billing, plus a billing address. Your saved Visa ending in 0077 isn't showing up as an option in that checkout form, and I don't have your billing address.

Easiest path: you finish that one checkout yourself in the browser and I'll pick up the rest. Want me to hand you the browser for it?

 

the D1 database is created, but the activation page needs a payment method and your saved Visa isn't showing up as an option there. Nothing's been charged and nothing will be unless usage passes the free tier.

Whenever you're back: the R2 checkout call is yours (do it yourself in the browser, or tell me which card to use), and I still need the admin username/password and the scb token to finish the deploy.

 

the D1 database is created, and I've already wired its ID into the deploy config.

Still blocked on your side: the R2 activation checkout (payment method + billing address), plus the admin username/password and the scb token. Once you decide on the R2 checkout, I can restart the dashboard work for the bucket and the deploy token.

me:  username: admin , pw:我设的密码

 

Got it — admin login noted, and I'll hash the password when I set the deploy secrets (never stored).

Still need two things to finish: the scb token for pushing, and activation of the R2.

我:my github pat here... 

 

And the deploy config is pushed (commit 41ae0d7 on main).

I've also started a fresh dashboard task just to create the deploy token, since the last one died before reaching that step. Once it returns, I can apply the database migrations and set your admin secrets.

The only thing still waiting on you is the R2 checkout.

me:  how to activate the r2?

 Open the R2 section of your Cloudflare dashboard here-

 https://dash.cloudflare.com/cd81d89c95a45259096722709e7cdcb6/r2/overview

 It'll ask you to sign in if you're not already. Since R2 isn't activated yet, that page shows the "Get started" activation with the $0 checkout — that's the step waiting on a payment method. Once it's active, the bucket list lives on that same page.


Good progress: the database is migrated (all 3 tables sets in) and your admin login secrets are set on the Worker. The deploy config is pushed too.

Everything is ready except R2. Once you finish that $0 activation checkout, I can create the bucket, point the site at it, and deploy.

me:  i already created the r2 bucket. its name is lp-r2.

 It's live- https://scb.luckypoem.workers.dev/

Homepage, blog, categories, about, and the admin login page all load. The blog is empty for now — you post from /admin with the login you gave me.

Two notes:

  • The site still shows the upstream name and tagline ("LordVibeCoding'blog"). You can change all of that in /admin → settings, including the site name, tagline, and description.
  • I'm wiring up automatic rebuilds on push now, so future pushes go live on their own. I'll confirm once that's done.

When the build is finished, you can revoke both the scb token you pasted and the scb-deploy-onetime Cloudflare token.

 me:  here https://scb.luckypoem.workers.dev/admin/articles/new, i cannot add 分类, what to do?

That's because the database starts empty — there are no categories yet, so the dropdown on the new-article page has nothing to pick from. Categories aren't added from the article page itself.

Go to 分类管理 and add one: a slug (lowercase letters, digits, or Chinese, e.g. tech), a name (e.g. 科技), and an optional description. Once saved, it'll show up in the dropdown when you write an article.

me:  why https://scb.luckypoem.workers.dev/blog/zhan-ma cannot render the iframe codes?

Fixed — the video on /blog/zhan-ma now plays.

Why it didn't render: when you pasted the YouTube embed code into the editor, the editor had no video support, so it saved the <iframe> as a code block — the page was just displaying that code as text. Same thing happened on nob before.

What I changed: the site now converts those pasted embeds into real players when the page renders (your post itself wasn't touched), the editor now handles YouTube links properly, and the summary under the title no longer shows the raw code. I checked it live — pressed play, picture and sound both work.

For the next post, just paste the YouTube link instead of the embed code and it'll become a player right away.

me:  if i just paste any iframe codes, how to make them be rendered?

Done — now any iframe code you paste renders as the real embed, not just YouTube. Bilibili, maps, CodePen, whatever has a src — paste it in the editor and the page shows it, keeping its own proportions so it doesn't get squished on mobile.

How it works: the editor still saves pasted iframe code as text (it has no iframe block), but the site converts it back into a real iframe when the page loads. Your posts aren't changed.

One thing to keep in mind: whatever you paste will actually run on the page, so only paste embedded code from sources you trust.

me:  can u strip 'LordVibeCoding 写代码、写字、找让自己专注的方法.' and the svg pic from all posts?

Done. Posts no longer show the author byline (name + bio) or the placeholder SVG cover — on the article page, the cards, and the lists. A post with no cover now just shows no cover image, and new posts won't store that upstream bio anymore. Your 战马 video still plays.

Two things still using that picture or name, but they're not posts: the homepage's RSS promo banner still uses the SVG as its side image, and the name/bio still ride along in the list pages' hidden page data (nothing visible). Want me to clear the banner image too, or wipe the stored author bio from your existing posts?

me:  yes,clear the banner image too and wipe the stored author bio from existing posts.

Both done and verified live.

  • Banner image cleared: the homepage promo banner no longer falls back to the placeholder SVG — it's text-only now (the RSS subscribe callout).
  • Stored bio wiped: all 3 posts (战马, 稀奇古怪的中国经济, 人在旅途) had their author bio set to empty in the database, so the text is gone even from the pages' hidden data.

Checked the live site: homepage, /blog, and the article page all show zero trace of the bio or the placeholder picture, and the 战马 video still plays.

The author name (LordVibeCoding) is still stored on your posts and in the site name — that's the one piece left if you want it gone too. You can change the site name in /admin/settings, or I can swap it in the database.

me:  can u make https://scb.luckypoem.workers.dev/blog support pagination? 5 posts a page.

Done — /blog now paginates at 5 posts per page, with the numbered pager (Previous | 1 | 2 | Next) at the bottom. It replaces the infinite scroll, same look otherwise: first post big, the rest in a grid.

Verified live with your 6 posts: page 1 has the 5 newest, page 2 has 战马, and bad page numbers bounce to the right place (?page=1 and ?page=abc go to /blog, ?page=3 goes to page 2). Category filtering still works too, and the pager keeps the filter when you turn pages.

One note: the pager only shows once there's more than one page — with 5 or fewer posts it hides itself, so it appears exactly when it's needed.

我得到的博客地址:

 https://scb.luckypoem.workers.dev

 https://scb.luckypoem.workers.dev/blog

登录地址: https://scb.luckypoem.workers.dev/admin

项目地址:

 https://github.com/LordVibeCoding/serverless-cloudflare-blog

 https://github.com/brightmann/scb

 

中国头号皇后吕雉:从“贤妻”到“毒妇”的黑化真相


相关帖子:陈平下令,将吕氏族人通通诛杀