I have been spending the past few days refining my blog and adjusting its code with the help of AI. These small Typecho plugins are the result of that process. They are not large or complicated tools, but they may be useful to other Typecho users with similar needs.
An R2-compatible revision of the S3 Upload plugin
Images and other static assets are often better stored on an object-storage service rather than directly on the blog server. This can improve loading performance and reduce the amount of static content handled by the site itself.
I used Qiniu Cloud for several years, but its SSL certificate had to be applied for and renewed manually every few months. I later moved to Bincool, which solved the certificate-renewal problem, but it occasionally became inaccessible. Even its founder recommended using products from larger cloud providers.
With help from Dongfeng, I eventually enabled Cloudflare R2. The service provides 10 GB of storage, along with one million free uploads and ten million free reads per month. That is more than enough for a personal blog.
The next issue was uploading files. Sun's S3 Upload plugin supports the S3 protocol, but files uploaded to R2 through the original version were treated as private objects and could not be accessed publicly. I therefore used AI to adapt the plugin for Cloudflare R2. Once enabled, files uploaded through the Typecho editor are automatically synchronized to R2.
This modified version is intended specifically for Cloudflare R2. If you are using another S3-compatible service, use the original plugin instead. For R2, set the region to auto.
Download: Lanzou Cloud, password: bmmf

A revised plugin for displaying image EXIF data
This is a modification of a free plugin developed by Lopwon. Because I was also using a lightbox plugin, EXIF information did not appear when an article was loaded for the first time. I adjusted the plugin to work with the lightbox and added several options.
The revised version allows the display position to be customized and can read and show more EXIF fields. The result is shown in the accompanying screenshot. For photographers who publish images on their blogs, this is a particularly practical addition.
Download: Lanzou Cloud, password: 7nra

Displaying Memos through a Typecho plugin
I chose not to rely on the “sayings” feature built into a theme. I often change themes, and theme compatibility can quickly become a problem. A separate plugin keeps the Memos display independent of the current theme.
The plugin processes data in the Typecho backend and renders it on the frontend. It uses file caching, so the page loads quickly. The setup described here uses Memos version 0.27.1; some older versions may not support the required API.
Previously, Memos was rendered entirely on the frontend, which made both its appearance and loading performance less satisfactory. I later converted it into a plugin-based display system with AI assistance.
Download and extract the plugin into the Typecho plugin directory as MemosRenderer. After activating it, create a file named page-memos.php in the directory of the active theme and add the following code:
Download: Lanzou Cloud, password: 8eko
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php
/**
* memos展示墙
*
* @package custom
*/
$this->need('header.php');
?>
<div class="post-header">
<div class="post-nav">
<div class="post-info">
<?php clarity_render_author_capsule($this); ?>
<span>
<span class="icon-[ph--calendar-dots-bold]"></span>
<time><?php $this->date('Y-m-d'); ?></time>
</span>
</div>
</div>
<h1 class="post-title text-creative"><?php $this->title(); ?></h1>
</div>
<link rel="stylesheet" href="<?php $this->options->pluginUrl('MemosRenderer'); ?>/assets/memos.css">
<script src="https://unpkg.com/[email protected]/lib/marked.umd.js"></script>
<div class="page-memos">
<?php if (class_exists('MemosRenderer_Plugin')): ?>
<?php echo MemosRenderer_Plugin::renderMemos(30); ?>
<?php else: ?>
<div class="alert alert-warning">
请先安装并激活 Memos 渲染器插件
</div>
<?php endif; ?>
</div>
<?php $this->need('footer.php'); ?>
Finally, create a new page in the Typecho administration panel and select memos as its template. The page will then display the cached Memos content through the active theme.