<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hugo on 孤筝の温暖小家</title><link>https://www.guzhengsvt.cn/ja/tags/hugo/</link><description>Recent content from 孤筝の温暖小家</description><generator>Hugo</generator><language>ja</language><managingEditor>lvbowen040427@163.com (孤筝)</managingEditor><webMaster>lvbowen040427@163.com (孤筝)</webMaster><copyright>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</copyright><lastBuildDate>Sat, 19 Apr 2025 16:56:24 +0800</lastBuildDate><atom:link href="https://www.guzhengsvt.cn/ja/tags/hugo/index.xml" rel="self" type="application/rss+xml"/><item><title>TypechoコメントをWalineにインポート</title><link>https://www.guzhengsvt.cn/ja/post/othernotes/typecho%E8%AF%84%E8%AE%BA%E5%AF%BC%E5%85%A5waline/</link><pubDate>Sat, 19 Apr 2025 16:56:24 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/othernotes/typecho%E8%AF%84%E8%AE%BA%E5%AF%BC%E5%85%A5waline/</guid><description>
<![CDATA[<h1>TypechoコメントをWalineにインポート</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <p>数日前、ブログの記事をTypechoからHugoに移行しましたが、Front Matterのパラメータ設定や画像リンクの再設定だけでかなりの手間がかかりました。<br>
ブログの価値は、まず記事そのものにあり、次にコメントです。コメントはブログがインターネットと現実世界に与えた影響を証明し、人と人との交流を記録しています。私的な言い方をすれば、世界中からのコメントは大切な思い出であり、「私」を構成する一部です。<br>
したがって、元のサイトのコメントを新しいサイトの対応する記事の下にコピーすることは非常に重要です。</p>
<h2 id="walineの設定">
<a class="header-anchor" href="#waline%e3%81%ae%e8%a8%ad%e5%ae%9a"></a>
Walineの設定
</h2><p>WordpressやTypechoなどの動的ブログと比べて、静的ブログは外部のコメントシステムに依存するしかありません。選択肢は多く、それぞれに長所と短所があります。<a href="https://cloud.tencent.com/developer/article/2196035">この記事</a>を参考にし、各コメントシステムの公式サイトを調べた後、最終的に<a href="https://waline.js.org">Waline</a>を選びました。<br>
Walineの<a href="https://waline.js.org/guide/get-started/">中国語ドキュメント</a>は内容が充実しており、<a href="https://leancloud.app">LeanCloud</a>データベースと<a href="https://vercel.com/">Vercel</a>サーバーを設定すれば、コメント管理画面<code>https://&lt;あなたのサーバードメイン&gt;/ui/</code>にアクセスできます。初回登録で管理者になり、ここでコメントやユーザーを管理できます。</p>
<h2 id="typechoコメントのエクスポート">
<a class="header-anchor" href="#typecho%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88%e3%81%ae%e3%82%a8%e3%82%af%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88"></a>
Typechoコメントのエクスポート
</h2><p>Typechoは古く、ユーザーが少なく、HexoやWordpressのような活発なコミュニティがありません。インターネット上の資料も少ないです。<br>
筆者が見つけたのは、<a href="https://imnerd.org">怡红院落</a>氏が書いたTypechoコメントをValineにエクスポートするプラグイン<a href="https://github.com/lizheming/typecho-export-valine">Export2Valine</a>（Walineのドキュメントにも記載されています）だけでした。<br>
しかし、最後の更新は3年前で、テストしたところ最初のコメントしかインポートできませんでした。エクスポートされたjsonlファイルを見ると、コメントデータは完全にエクスポートされていることが明らかです。</p>
<p>まず、このプラグインをTypechoにインストールします（プラグインフォルダ名を&quot;Export2Valine&quot;に変更する必要があります！）。</p>
<p><a href="https://www.imwxz.com/posts/74f52ab0.html">この記事</a>を参考に、このプラグインは長年メンテナンスされていないため、いくつかの変更が必要です。<br>
プラグインフォルダ内の<code>Action.php</code>を開き、42行目から以下のコードに変更します（親コメントを追跡するため）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">$arr</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;objectId&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;coid&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;QQAvatar&#34;</span> <span class="o">=&gt;</span> <span class="s2">&#34;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;comment&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;text&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;insertedAt&#34;</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;__type&#34;</span> <span class="o">=&gt;</span> <span class="s2">&#34;Date&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;iso&#34;</span> <span class="o">=&gt;</span> <span class="nv">$time</span>
</span></span><span class="line"><span class="cl">  <span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;createdAt&#34;</span> <span class="o">=&gt;</span> <span class="nv">$time</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;updatedAt&#34;</span> <span class="o">=&gt;</span> <span class="nv">$time</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;ip&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;ip&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;link&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;url&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;mail&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;mail&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;nick&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;author&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;ua&#34;</span> <span class="o">=&gt;</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;agent&#34;</span><span class="p">],</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;url&#34;</span> <span class="o">=&gt;</span> <span class="s2">&#34;/</span><span class="si">{</span><span class="nv">$slug</span><span class="si">}</span><span class="s2">.html&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;parent&#34;</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nv">$arr</span><span class="p">[</span><span class="s2">&#34;pid&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;parent&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">  <span class="nv">$arr</span><span class="p">[</span><span class="s2">&#34;rid&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">getRootId</span><span class="p">(</span><span class="nv">$comment</span><span class="p">[</span><span class="s2">&#34;coid&#34;</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>他の部分は変更不要です。<br>
次に、Typechoの管理画面-コントロールパネル-コメントエクスポートで、ダウンロードしたjsonlファイルを開き、先頭の<code>#filetype:JSON-streaming {&quot;type&quot;:&quot;Class&quot;,&quot;class&quot;:&quot;Comment&quot;}\n\n</code>を削除します。<br>
保存してファイルを閉じ、ファイル拡張子を<code>.json</code>に変更します。</p>
<h2 id="json形式の修正">
<a class="header-anchor" href="#json%e5%bd%a2%e5%bc%8f%e3%81%ae%e4%bf%ae%e6%ad%a3"></a>
json形式の修正
</h2><p>エクスポートされた<code>jsonl</code>ファイル内の中国語はエスケープされ、1行で表示されるため、見づらい状態です。<br>
編集可能でインポートしやすい<code>json</code>形式に変換するため、まずエディタの<strong>検索と置換</strong>機能を使用し、<code>}\n{</code>を以下のように置換します：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="err">},</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span></code></pre></div><p>Xcodeの置換では、改行文字は左側の虫眼鏡アイコンをクリックして挿入できます。</p>
<p>これで、1行に1つのコメントオブジェクトが表示されます。</p>
<p>同様に、各コメントオブジェクト内のフィールド構造を分離するため、<code>&quot;,&quot;</code>を以下のように置換します：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;,
</span></span></span><span class="line"><span class="cl"><span class="s2">    &#34;</span>
</span></span></code></pre></div><p>これで、各コメントオブジェクト内に複数のデータが含まれていることがわかります。例えば：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span><span class="nt">&#34;objectId&#34;</span><span class="p">:</span><span class="s2">&#34;3&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;QQAvatar&#34;</span><span class="p">:</span><span class="s2">&#34;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;comment&#34;</span><span class="p">:</span><span class="s2">&#34;\u6d4b\u8bd5\u4e00\u4e0b&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;insertedAt&#34;</span><span class="p">:{</span><span class="nt">&#34;__type&#34;</span><span class="p">:</span><span class="s2">&#34;Date&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;iso&#34;</span><span class="p">:</span><span class="s2">&#34;2023-06-27T09:37:07.000Z&#34;</span><span class="p">},</span><span class="nt">&#34;createdAt&#34;</span><span class="p">:</span><span class="s2">&#34;2023-06-27T09:37:07.000Z&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;updatedAt&#34;</span><span class="p">:</span><span class="s2">&#34;2023-06-27T09:37:07.000Z&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;ip&#34;</span><span class="p">:</span><span class="s2">&#34;223.104.150.16&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;link&#34;</span><span class="p">:</span><span class="err">**</span><span class="kc">null</span><span class="err">**</span><span class="p">,</span><span class="nt">&#34;mail&#34;</span><span class="p">:</span><span class="s2">&#34;2868301418@qq.com&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;nick&#34;</span><span class="p">:</span><span class="s2">&#34;2868301418&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;ua&#34;</span><span class="p">:</span><span class="s2">&#34;Mozilla\/5.0 (Linux; Android 13; V2171A Build\/TP1A.220624.014; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/109.0.5414.86 MQQBrowser\/6.2 TBS\/046605 Mobile Safari\/537.36 V1_AND_SQ_8.9.63_4190_HDBM_T QQ\/8.9.63.11380 NetType\/4G WebP\/0.3.0 Ap&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;url&#34;</span><span class="p">:</span><span class="s2">&#34;\/\u4ea4\u53cb\u6807\u51c6-\u548c\u5e73\u5171\u5904\u4e94\u9879\u539f\u5219.html&#34;</span><span class="p">}</span><span class="err">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="p">{</span><span class="nt">&#34;objectId&#34;</span><span class="p">:</span><span class="s2">&#34;4&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;QQAvatar&#34;</span><span class="p">:</span><span class="s2">&#34;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;comment&#34;</span><span class="p">:</span><span class="s2">&#34;\u600e\u4e48ip\u4e0d\u5bf9&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;insertedAt&#34;</span><span class="p">:{</span><span class="nt">&#34;__type&#34;</span><span class="p">:</span><span class="s2">&#34;Date&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;iso&#34;</span><span class="p">:</span><span class="s2">&#34;2023-06-27T09:38:15.000Z&#34;</span><span class="p">},</span><span class="nt">&#34;createdAt&#34;</span><span class="p">:</span><span class="s2">&#34;2023-06-27T09:38:15.000Z&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;updatedAt&#34;</span><span class="p">:</span><span class="s2">&#34;2023-06-27T09:38:15.000Z&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;ip&#34;</span><span class="p">:</span><span class="s2">&#34;223.104.150.16&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;link&#34;</span><span class="p">:</span><span class="err">**</span><span class="kc">null</span><span class="err">**</span><span class="p">,</span><span class="nt">&#34;mail&#34;</span><span class="p">:</span><span class="s2">&#34;2868301418@qq.com&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;nick&#34;</span><span class="p">:</span><span class="s2">&#34;2868301418&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;ua&#34;</span><span class="p">:</span><span class="s2">&#34;Mozilla\/5.0 (Linux; Android 13; V2171A Build\/TP1A.220624.014; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/109.0.5414.86 MQQBrowser\/6.2 TBS\/046605 Mobile Safari\/537.36 V1_AND_SQ_8.9.63_4190_HDBM_T QQ\/8.9.63.11380 NetType\/4G WebP\/0.3.0 Ap&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;url&#34;</span><span class="p">:</span><span class="s2">&#34;\/\u4ea4\u53cb\u6807\u51c6-\u548c\u5e73\u5171\u5904\u4e94\u9879\u539f\u5219.html&#34;</span><span class="p">}</span><span class="err">,</span>
</span></span></code></pre></div><h3 id="共通フィールドの説明">
<a class="header-anchor" href="#%e5%85%b1%e9%80%9a%e3%83%95%e3%82%a3%e3%83%bc%e3%83%ab%e3%83%89%e3%81%ae%e8%aa%ac%e6%98%8e"></a>
共通フィールドの説明
</h3><ol>
<li><strong>objectId</strong>: コメントの一意の識別子（例: &ldquo;4&quot;や&quot;5&rdquo;）</li>
<li><strong>QQAvatar</strong>: QQアバターのリンク（現在は空文字列）</li>
<li><strong>comment</strong>: コメント内容（Unicodeエスケープ文字を含む、例: <code>\u600e\u4e48</code>は「どうやって」を意味）</li>
<li><strong>insertedAt/createdAt/updatedAt</strong>: タイムスタンプ（ISO 8601形式）</li>
<li><strong>ip</strong>: コメント者のIPアドレス</li>
<li><strong>link</strong>: コメント者が提供したリンク（nullの場合あり）</li>
<li><strong>mail</strong>: コメント者のメールアドレス</li>
<li><strong>nick</strong>: コメント者のニックネーム</li>
<li><strong>ua</strong>: ユーザーエージェント（ブラウザ/デバイス情報を表示）</li>
<li><strong>url</strong>: コメントされたページのパス</li>
</ol>
<h3 id="特殊フィールド">
<a class="header-anchor" href="#%e7%89%b9%e6%ae%8a%e3%83%95%e3%82%a3%e3%83%bc%e3%83%ab%e3%83%89"></a>
特殊フィールド
</h3><ol start="11">
<li><strong>pid</strong>: 親コメントID</li>
<li><strong>rid</strong>: ルートコメントID</li>
</ol>
<p><code>&quot;link&quot;</code>の値が<code>null</code>の場合、<code>&quot;link&quot;</code>と<code>&quot;mail&quot;</code>の間に改行がありません。jsonは改行に敏感ではないため、無視できます。<br>
この時点で、ファイルの先頭と末尾を<code>[ ]</code>で囲み、ファイルを保存します。</p>
<h2 id="コメント属性の修正">
<a class="header-anchor" href="#%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88%e5%b1%9e%e6%80%a7%e3%81%ae%e4%bf%ae%e6%ad%a3"></a>
コメント属性の修正
</h2><p>この時点でLeanCloudに直接インポートできますが、まだ修正可能な内容があります。</p>
<p><code>Export2Valine</code>はコメントに関連する記事のurlを<code>\/slug</code>に設定しています。例えば<code>&quot;url&quot;: &quot;\/Summary-of-the-First-Semester-of-Junior-Year.html&quot;</code>で、<code>\/</code>は<code>/</code>のエスケープです。</p>
<p>新しいブログの記事とコメントを関連付けるため、urlを新しいブログの記事リンクに手動で変更する必要があります。</p>
<p>筆者のブログを例にすると、Hugoが生成するウェブサイトのルートディレクトリには<code>zh-cn,zh-tw,en,ja</code>の4つのフォルダ（多言語対応を有効にしている）があり、中国語サイトの記事は<code>/zh-cn/post/記事カテゴリ/</code>にあります。<br>
筆者はローカルのブログソースファイルで記事をカテゴリごとに異なるフォルダに分類しています。例えば<code>/content/post/Thoughts/最近書いた詩.md</code>はウェブページの相対アドレス<code>zh-cn/post/thoughts/最近書いた詩</code>として生成されます。</p>
<p>新しいブログの記事がルートディレクトリにあり、名前が変更されていない場合は、urlを変更する必要はありません。<br>
すべての記事が<code>/post/</code>にある場合は、検索と置換を使用して</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;url&#34;</span><span class="err">:&#34;\/</span>
</span></span></code></pre></div><p>を</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;url&#34;</span><span class="err">:&#34;\/post\/</span>
</span></span></code></pre></div><p>に置換できます。</p>
<p>筆者は一時的に</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;url&#34;</span><span class="err">:&#34;\/zh-cn\/post\/</span>
</span></span></code></pre></div><p>に置換しました。</p>
<p>同様に、友達リンクやつぶやきなどの独立ページのコメントも、新しいブログの対応するページの相対アドレスに変更する必要があります。
例えば友達リンクページ</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;url&#34;</span><span class="err">:&#34;\/links.html</span>
</span></span></code></pre></div><p>を</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="s2">&#34;url&#34;</span><span class="err">:&#34;\/zh-cn\/friend\/</span>
</span></span></code></pre></div><p>に置換します。</p>
<p>postや独立ページで大規模に適用できる<em>検索と置換</em>を先に適用しないと、インポート後に一括置換が困難になります。</p>
<p>検索と置換を使用する際は、できるだけ多くの共通部分を含め、「最大公約数」を見つけて誤った変更を避けてください。<br>
<em><strong>エスケープ<code>\/</code>に注意!!!</strong></em></p>
<h2 id="leancloudへのインポート">
<a class="header-anchor" href="#leancloud%e3%81%b8%e3%81%ae%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88"></a>
LeanCloudへのインポート
</h2><p>LeanCloudのコントロールパネル-データストレージ-インポート/エクスポートで、修正したjsonファイルを選択し、<code>Class</code>に<code>Comment</code>と入力してインポートします。</p>
<p><em><strong>注意</strong></em>、もし以前にブログのWalineでテストコメントを投稿したことがある場合、または<code>Comment</code>のインポートを試みたことがある場合、Walineは最初に<code>Comment</code> <code>Class</code>を作成するため、再度インポートしてもデータが正常にインポートされません（LeanCloudは成功を報告しますが、新しいデータはインポートされません）。</p>
<p>コントロールパネル-構造化データで<code>Comment</code>を選択し、この<code>Class</code>を削除してから再度インポートを試みる必要があります。LeanCloudのページはすぐに更新されない場合があるため、<code>Ctrl+F5</code>でキャッシュをリフレッシュすると表示されます。</p>
<p>インポートが成功したら、各コメントのurlを個別に設定します。<br>
例えば筆者のpostは<code>&quot;url&quot;:&quot;\/zh-cn\/post\/記事カテゴリ\/</code>に分類する必要があり、この時点でLeanCloudの<strong>一括操作</strong>と<strong>条件付きフィルタリング</strong>機能を活用します。</p>
<h2 id="後書き">
<a class="header-anchor" href="#%e5%be%8c%e6%9b%b8%e3%81%8d"></a>
後書き
</h2><p>コメントの整理にはそれほど時間がかかりませんでした。120件のコメントのほとんどは筆者がつぶやきページで自分自身に語りかけたもので、urlを一括修正できました。他人からのコメントはわずか十数件で、数記事に分散していたため、<code>post</code>でフィルタリングして修正するのは簡単でした。これは良いことなのか悪いことなのか（笑）</p>
<p>独り言であれ、他人からのメッセージであれ、一つ一つが筆者にとって特別な意味を持ち、時間を置いて振り返ると新たな気付きがあります。<br>
最初に述べたように、これは筆者の成長の軌跡であり、この世に存在する証であり、「私」の一部です。</p>
<p>そして、親愛なる読者であるあなたは、私に価値を与えてくれる存在です。</p>
<p>時間があれば、ぜひコメントをください～筆者は本当に長く喜びます（善意のコメントであれば）。</p>
        
        <hr><p>この記事は2025-04-19に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2025-04-19です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>OtherNotes</category></item><item><title>Hugoブログよく使う資料</title><link>https://www.guzhengsvt.cn/ja/post/othernotes/hugo%E5%8D%9A%E5%AE%A2%E5%B8%B8%E7%94%A8%E8%B5%84%E6%96%99/</link><pubDate>Tue, 15 Apr 2025 16:42:35 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/othernotes/hugo%E5%8D%9A%E5%AE%A2%E5%B8%B8%E7%94%A8%E8%B5%84%E6%96%99/</guid><description>
<![CDATA[<h1>Hugoブログよく使う資料</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <h2 id="reimuテーマ-icon_font">
<a class="header-anchor" href="#reimu%e3%83%86%e3%83%bc%e3%83%9e-icon_font"></a>
reimuテーマ icon_font
</h2><table>
  <thead>
      <tr>
          <th>コマンド</th>
          <th>作用</th>
          <th>説明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>hugo version</code></td>
          <td>バージョン確認</td>
          <td>現在インストールされているHugoのバージョンを表示</td>
      </tr>
      <tr>
          <td><code>hugo new site &lt;プロジェクト名&gt;</code></td>
          <td>新規サイト作成</td>
          <td>Hugoのディレクトリ構造を生成</td>
      </tr>
      <tr>
          <td><code>hugo new post/&lt;ファイル名.md&gt;</code></td>
          <td>新規記事作成</td>
          <td><code>content/post/</code> 下に記事を生成しデフォルトのFront Matterを付与</td>
      </tr>
      <tr>
          <td><code>hugo server</code></td>
          <td>ローカルサーバー起動</td>
          <td>ローカルプレビューを開始、デフォルトアドレス <code>http://localhost:1313</code></td>
      </tr>
      <tr>
          <td><code>hugo server -D</code></td>
          <td>下書きを含めて起動</td>
          <td><code>-D</code> パラメータで <code>draft: true</code> の記事を表示</td>
      </tr>
      <tr>
          <td><code>hugo</code></td>
          <td>ウェブサイト構築</td>
          <td>Markdownコンテンツを <code>public/</code> ディレクトリに静的ファイルとして生成</td>
      </tr>
      <tr>
          <td><code>hugo -D &lt;出力ディレクトリ&gt;</code></td>
          <td>下書きを含めて構築</td>
          <td>公開前のフルサイト構築（下書き含む）</td>
      </tr>
      <tr>
          <td><code>hugo --minify</code></td>
          <td>ファイル圧縮</td>
          <td>HTML/CSS/JSを圧縮して構築、サイズ削減</td>
      </tr>
      <tr>
          <td><code>hugo config</code></td>
          <td>設定情報表示</td>
          <td>現在のサイト設定情報を表示</td>
      </tr>
      <tr>
          <td><code>hugo list drafts</code></td>
          <td>下書き一覧</td>
          <td><code>draft: true</code> 設定の全記事を表示</td>
      </tr>
      <tr>
          <td><code>hugo list future</code></td>
          <td>未来投稿一覧</td>
          <td><code>date</code> が現在時刻より未来の記事</td>
      </tr>
      <tr>
          <td><code>hugo list expired</code></td>
          <td>期限切れ記事一覧</td>
          <td><code>expiryDate</code> が過ぎた記事</td>
      </tr>
      <tr>
          <td><code>hugo --gc</code></td>
          <td>ガベージコレクション</td>
          <td>サムネイルキャッシュなどの古いリソースをクリーンアップ</td>
      </tr>
  </tbody>
</table>
<table>
  <thead>
      <tr>
          <th>アイコンクラス名</th>
          <th>16進数コード</th>
          <th>日本語意味</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>.tag-wrap</code> / <code>.article-tag-list-link</code></td>
          <td><code>\e622</code></td>
          <td>タグ</td>
      </tr>
      <tr>
          <td><code>.category-wrap</code> / <code>.article-category-link</code></td>
          <td><code>\e604</code></td>
          <td>カテゴリ</td>
      </tr>
      <tr>
          <td><code>.article-date-link</code></td>
          <td><code>\e606</code></td>
          <td>日付</td>
      </tr>
      <tr>
          <td><code>.article-comment-link</code></td>
          <td><code>\e608</code></td>
          <td>コメント</td>
      </tr>
      <tr>
          <td><code>.icon-copyright</code></td>
          <td><code>\e60a</code></td>
          <td>著作権</td>
      </tr>
      <tr>
          <td><code>.icon-brush</code></td>
          <td><code>\e618</code></td>
          <td>筆 / 美化</td>
      </tr>
      <tr>
          <td><code>.icon-coffee</code></td>
          <td><code>\e607</code></td>
          <td>コーヒー</td>
      </tr>
      <tr>
          <td><code>.icon-eye</code></td>
          <td><code>\e60f</code></td>
          <td>閲覧</td>
      </tr>
      <tr>
          <td><code>.icon-user</code></td>
          <td><code>\e628</code></td>
          <td>ユーザー</td>
      </tr>
      <tr>
          <td><code>#main-nav-toggle</code></td>
          <td><code>\e62f</code></td>
          <td>ナビゲーションメニュー切替</td>
      </tr>
      <tr>
          <td><code>#nav-rss-link</code></td>
          <td><code>\e61f</code></td>
          <td>RSS購読</td>
      </tr>
      <tr>
          <td><code>#nav-search-btn</code> / <code>.reimu-search-input-icon</code></td>
          <td><code>\e631</code></td>
          <td>検索ボタン</td>
      </tr>
      <tr>
          <td><code>#nav-sun-btn</code></td>
          <td><code>\e621</code></td>
          <td>太陽アイコン（ライトテーマ）</td>
      </tr>
      <tr>
          <td><code>#nav-moon-btn</code></td>
          <td><code>\e617</code></td>
          <td>月アイコン（ダークテーマ）</td>
      </tr>
      <tr>
          <td><code>#nav-circle-half-stroke-btn</code></td>
          <td><code>\e641</code></td>
          <td>半円（テーマ切替）</td>
      </tr>
      <tr>
          <td><code>.icon-copy</code></td>
          <td><code>\e60c</code></td>
          <td>コピー</td>
      </tr>
      <tr>
          <td><code>.icon-chevron-down</code></td>
          <td><code>\e609</code></td>
          <td>下矢印</td>
      </tr>
      <tr>
          <td><code>.icon-check</code></td>
          <td><code>\e636</code></td>
          <td>チェック / 確認</td>
      </tr>
      <tr>
          <td><code>.icon-times</code></td>
          <td><code>\e637</code></td>
          <td>クローズ</td>
      </tr>
      <tr>
          <td><code>.icon-calendar</code></td>
          <td><code>\e605</code></td>
          <td>カレンダー</td>
      </tr>
      <tr>
          <td><code>.icon-pencil</code></td>
          <td><code>\e61b</code></td>
          <td>鉛筆 / 編集</td>
      </tr>
      <tr>
          <td><code>.icon-clock</code></td>
          <td><code>\e613</code></td>
          <td>時計</td>
      </tr>
      <tr>
          <td><code>.post-sticky</code></td>
          <td><code>\e627</code></td>
          <td>固定表示</td>
      </tr>
      <tr>
          <td><code>.reimu-popup .popup-btn-close</code></td>
          <td><code>\e626</code></td>
          <td>ポップアップ閉じる</td>
      </tr>
      <tr>
          <td><code>.ais-pagination--item__previous</code></td>
          <td><code>\e601</code></td>
          <td>前ページ</td>
      </tr>
      <tr>
          <td><code>.ais-pagination--item__next</code></td>
          <td><code>\e630</code></td>
          <td>次ページ</td>
      </tr>
      <tr>
          <td><code>.icon-github</code></td>
          <td><code>\e619</code></td>
          <td>GitHubアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-google</code></td>
          <td><code>\e611</code></td>
          <td>Googleアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-facebook</code></td>
          <td><code>\e60e</code></td>
          <td>Facebookアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-twitter</code></td>
          <td><code>\e62a</code></td>
          <td>Twitterアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-instagram</code></td>
          <td><code>\e615</code></td>
          <td>Instagramアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-linkedin</code></td>
          <td><code>\e614</code></td>
          <td>LinkedInアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-pinterest</code></td>
          <td><code>\e61a</code></td>
          <td>Pinterestアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-youtube</code></td>
          <td><code>\e62d</code></td>
          <td>YouTubeアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-vimeo</code></td>
          <td><code>\e629</code></td>
          <td>Vimeoアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-flickr</code></td>
          <td><code>\e612</code></td>
          <td>Flickrアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-dribbble</code></td>
          <td><code>\e610</code></td>
          <td>Dribbbleアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-behance</code></td>
          <td><code>\e602</code></td>
          <td>Behanceアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-bilibili</code></td>
          <td><code>\e603</code></td>
          <td>ビリビリアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-weibo</code></td>
          <td><code>\e62c</code></td>
          <td>微博アイコン</td>
      </tr>
      <tr>
          <td><code>.icon-zhihu</code></td>
          <td><code>\e62e</code></td>
          <td>知乎アイコン</td>
      </tr>
      <tr>
          <td><code>.icon-reddit</code></td>
          <td><code>\e61c</code></td>
          <td>Redditアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-tumblr</code></td>
          <td><code>\e625</code></td>
          <td>Tumblrアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-medium</code></td>
          <td><code>\e616</code></td>
          <td>Mediumアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-deviantart</code></td>
          <td><code>\e60b</code></td>
          <td>DeviantArtアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-stackoverflow</code></td>
          <td><code>\e620</code></td>
          <td>StackOverflowアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-keybase</code></td>
          <td><code>\e61e</code></td>
          <td>Keybaseアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-telegram</code></td>
          <td><code>\e623</code></td>
          <td>Telegramアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-discord</code></td>
          <td><code>\e60d</code></td>
          <td>Discordアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-steam</code></td>
          <td><code>\e624</code></td>
          <td>Steamアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-email</code></td>
          <td><code>\e63c</code></td>
          <td>メール</td>
      </tr>
      <tr>
          <td><code>.sidebar-toc-btn</code></td>
          <td><code>\e633</code></td>
          <td>目次ボタン</td>
      </tr>
      <tr>
          <td><code>.sidebar-common-btn</code></td>
          <td><code>\e632</code></td>
          <td>サイドバー共通ボタン</td>
      </tr>
      <tr>
          <td><code>.sidebar-top .arrow-up</code></td>
          <td><code>\e634</code></td>
          <td>上矢印</td>
      </tr>
      <tr>
          <td><code>.icon-link</code></td>
          <td><code>\e639</code></td>
          <td>リンク</td>
      </tr>
      <tr>
          <td><code>.icon-globe</code></td>
          <td><code>\e638</code></td>
          <td>地球 / 多言語</td>
      </tr>
      <tr>
          <td><code>.icon-creative-commons</code></td>
          <td><code>\e63a</code></td>
          <td>CCライセンス</td>
      </tr>
      <tr>
          <td><code>.icon-taichi</code></td>
          <td><code>\e62b</code></td>
          <td>太極（ダークモード）</td>
      </tr>
      <tr>
          <td><code>.icon-weixin</code></td>
          <td><code>\e640</code></td>
          <td>WeChatアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-qq</code></td>
          <td><code>\e63e</code></td>
          <td>QQアイコン</td>
      </tr>
      <tr>
          <td><code>.icon-image</code></td>
          <td><code>\e63f</code></td>
          <td>画像アイコン</td>
      </tr>
  </tbody>
</table>

        
        <hr><p>この記事は2025-04-15に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2025-04-15です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>OtherNotes</category></item></channel></rss>