コンテンツにスキップ

新しい私の書く場所

GitHubでPublicリポジトリならホスティング費用なしで記事を配信できる。
そんなことも知らなかった。

とりあえず実験でやってみます。

解離性障害と診断された。

傷病名:解離性障害
仮想空間における出来事を客観的に捉えることが難しくなり、現実の生活が困難になっていると思われます。このため、SNSやネットでの集まりから離れ、自身の心身が健康な状態になることを最優先に過ごしてください。十分な睡眠と生活リズムを整え、軽い運動ができるような状態になることをまずは目指しましょう。以下余白。
【2026年3月13日(金曜日)】

SNSやコミュニティ運営はもうしない

「汝、足るを知れ」とばかりの身の程知らずの診断書。
なので、今後は、SNS活動はせずに、小説かいたり、こうして一人の静かな日記を書いて過ごそう。

GitHubではPublicリポジトリなら無料でMkDocsでサイトを作れる。
知らなかった。

四苦八苦して作ったので誰でも使えるようシェアします。

Deploy_MkDocs.yml

{リポジトリ}/.github/workflows/Deploy_MkDocs.yml
name: Deploy MkDocs Blog to GitHub Pages

on:
  push:
    branches:
      - main
  workflow_dispatch:

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.x'

      - name: Install dependencies
        run: |
          pip install mkdocs-material
          pip install "mkdocs-material[blog]"
          pip install mkdocs-rss-plugin
          pip install mkdocs-glightbox

      # 1. 物理ディレクトリの存在保証とCSS・JS生成
      - name: Ensure src directory and generate CSS/JS
        run: |
          mkdir -p src/stylesheets
          mkdir -p src/javascripts
          mkdir -p src/img
          mkdir -p src/assets

          if [ ! -f "src/index.md" ]; then
            echo "# ホーム" > src/index.md
          fi

          rm -f src/404.md

          cat <<'EOF' > src/stylesheets/extra.css
          /* 1. リンクとタイトルの太字化 */
          .md-typeset a, 
          .md-nav__link, 
          .md-post__title a,
          .md-typeset h1,
          .md-typeset h2,
          .md-typeset h3,
          .md-typeset h4,
          .md-typeset h5 {
              font-weight: bold !important;
          }

          /* 2. ダークモード (slate) の配色強制 */
          body[data-md-color-scheme="slate"] {
              --md-typeset-a-color: #e0e0e0 !important;
              --md-accent-fg-color: #e0e0e0 !important;
          }
          body[data-md-color-scheme="slate"] .md-typeset h1,
          body[data-md-color-scheme="slate"] .md-typeset h2,
          body[data-md-color-scheme="slate"] .md-typeset h3,
          body[data-md-color-scheme="slate"] .md-typeset h4,
          body[data-md-color-scheme="slate"] .md-typeset h5 {
              color: #e0e0e0 !important;
          }

          /* 3. ライトモード (default) の配色強制 */
          body[data-md-color-scheme="default"] {
              --md-default-bg-color: #f5f5f5 !important;
              --md-default-bg-color--light: #f5f5f5 !important;
              --md-typeset-a-color: #212121 !important;
              --md-accent-fg-color: #212121 !important;
          }
          body[data-md-color-scheme="default"] .md-typeset h1,
          body[data-md-color-scheme="default"] .md-typeset h2,
          body[data-md-color-scheme="default"] .md-typeset h3,
          body[data-md-color-scheme="default"] .md-typeset h4,
          body[data-md-color-scheme="default"] .md-typeset h5 {
              color: #212121 !important;
          }

          /* 4. 詳細ページ内のリンク色を再適用 */
          .md-content__inner .md-typeset a {
              color: var(--md-typeset-a-color) !important;
          }

          /* 画像の最大高さを制限してサムネイルらしくする */
          .md-typeset img {
              max-height: 400px;
              width: auto;
              border-radius: 4px;
          }
          EOF

          # ★ JSによるGLightboxの強制適用(Materialの遷移対応)
          cat <<'EOF' > src/javascripts/zoom.js
          document$.subscribe(function() {
            document.querySelectorAll('.md-typeset img').forEach(function(img) {
              if (img.parentElement.tagName === 'A') return;
              var a = document.createElement('a');
              a.className = 'glightbox';
              a.href = img.src;
              a.dataset.type = 'image';
              img.parentNode.insertBefore(a, img);
              a.appendChild(img);
            });
            if (typeof lightbox !== "undefined" && lightbox.reload) {
              lightbox.reload();
            }
          });
          EOF

      # 2. カスタムテンプレートを生成
      - name: Create overrides
        run: |
          mkdir -p overrides

          cat <<'EOF' > overrides/main.html
          {% extends "base.html" %}
          {% block extrahead %}
            {{ super() }}
            <meta property="og:type" content="website" />
            <meta property="og:title" content="{% if page and page.title %}{{ page.title }} - {% endif %}{{ config.site_name }}" />
            <meta property="og:description" content="{{ config.site_description }}" />
            <meta property="og:url" content="{{ config.site_url }}" />
            <meta property="og:image" content="{{ config.site_url }}assets/og-image.png" />
            <meta property="og:image:width" content="1200" />
            <meta property="og:image:height" content="630" />
            <meta name="twitter:card" content="summary_large_image" />
            <meta name="twitter:title" content="{% if page and page.title %}{{ page.title }} - {% endif %}{{ config.site_name }}" />
            <meta name="twitter:image" content="{{ config.site_url }}assets/og-image.png" />
          {% endblock %}
          EOF

          cat <<'EOF' > overrides/404.html
          {% extends "base.html" %}

          {% block extrahead %}
            {{ super() }}
            <base href="/ama/">
          {% endblock %}

          {% block content %}
            <div align="center" style="margin-top: 4em;">
              <p>
                <img src="/ama/assets/logo.png" alt="Logo">
              </p>
              <h1 id="404-not-found">404 Not Found</h1>
              <hr style="border: none; border-top: 1px solid #e0e0e0; margin: 2em 0;">
              <p>
                お探しのページは見つかりませんでした。<br>
                URLが変更されたか、削除された可能性があります。
              </p>
              <hr style="border: none; border-top: 1px solid #e0e0e0; margin: 2em 0;">
              <div style="margin-top: 2em;">
                <a href="/ama/">ホームへ戻る</a>
              </div>
            </div>
          {% endblock %}
          EOF

      # 3. mkdocs.yml を生成
      - name: Create mkdocs.yml
        run: |
          TS=$(date +'%Y%m%d%H%M%S')

          cat <<'EOF' > mkdocs.yml
          site_name: 灰月琥珀 - Ash Moon Amber
          site_url: https://ash-moon-amber.github.io/ama/
          site_description: 琥珀の技術と日常の記録
          repo_name: GitHub
          repo_url: https://github.com/ash-moon-amber/ama

          use_directory_urls: false

          theme:
            name: material
            custom_dir: overrides
            not_found_template: 404.html
            language: ja
            logo: assets/logo.png
            favicon: assets/logo.png
            palette:
              - media: "(prefers-color-scheme: dark)"
                scheme: slate
                primary: black
                accent: indigo
                toggle:
                  icon: material/brightness-4
                  name: ダークモード
              - media: "(prefers-color-scheme: light)"
                scheme: default
                primary: black
                accent: indigo
                toggle:
                  icon: material/brightness-5
                  name: ライトモード
            features:
              - navigation.tabs
              - navigation.indexes
              - navigation.sections
              - toc.integrate
              - content.code.copy

          markdown_extensions:
            - nl2br
            - pymdownx.highlight:
                anchor_linenums: true
                line_spans: __span
                pygments_lang_class: true
            - pymdownx.inlinehilite
            - pymdownx.snippets
            - pymdownx.superfences:
                custom_fences:
                  - name: mermaid
                    class: mermaid
                    format: !!python/name:pymdownx.superfences.fence_code_format

          nav:
            - Blog:
                - index.md
                - Tags: tags.md
            - Profile: profile.md

          extra_css:
            - stylesheets/extra.css?v=TIMESTAMP_PLACEHOLDER

          extra_javascript:
            - javascripts/zoom.js?v=TIMESTAMP_PLACEHOLDER

          plugins:
            - blog:
                blog_dir: .
                post_dir: posts
                draft_if_future: false
                post_url_format: "{date}/{file}"
                archive_url_date_format: yyyy/MM
                archive_date_format: yyyy年MM月
            - search
            - glightbox:
                touchNavigation: true
                loop: false
                effect: zoom
                slide_effect: slide
            - tags:
                tags_file: tags.md
            - rss:
                match_path: posts/.*

          docs_dir: src
          site_dir: site
          EOF

          sed -i "s/TIMESTAMP_PLACEHOLDER/$TS/g" mkdocs.yml

      # 4. ビルド実行
      - name: Build MkDocs
        run: mkdocs build

      # 5. 公開ディレクトリ(public)の整理
      - name: Prepare Public Directory
        run: |
          rm -rf public
          mkdir -p public

          if [ -d "site" ]; then
            cp -r site/* public/
          fi

          if [ -d "src/stylesheets" ]; then
            mkdir -p public/stylesheets
            cp -r src/stylesheets/* public/stylesheets/
          fi

          if [ -d "src/javascripts" ]; then
            mkdir -p public/javascripts
            cp -r src/javascripts/* public/javascripts/
          fi

          if [ -d "src/img" ]; then
            mkdir -p public/img
            cp -r src/img/* public/img/
          fi

          if [ -d "src/assets" ]; then
            mkdir -p public/assets
            cp -r src/assets/* public/assets/
          fi

          if [ -f "site/404.html" ]; then
            cp site/404.html public/404.html
          fi

      - name: Setup Pages
        uses: actions/configure-pages@v5

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: './public'

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

ポイントは extra.css をランナー上で物理的に生成 の箇所です。
これをしないとMkDocsはテーマカラーをいくら指定してもAタグがIndigoになる。
それ以外は…仕様に従う、という普通の方式で作りました。

GitHub Actionsに登録されるので、Commitしたら自動で日記が更新されます。

SNS疲れたな…という人の参考になるといいなと思います。

Web版VSCodeのMarkdown執筆を静かにできるようにする

設定から「Markdownの検証」を無効化する

  1. VSCodeの左下にある 歯車アイコン > 設定

  2. markdown.validate で検索

  3. 以下の項目のチェックをすべて外す

  4. Markdown > Validate: Enabled

  5. Markdown > Validate: Unused Definitions(未使用の参照リンク警告)
  6. Markdown > Validate: Duplicate Link Definitions(重複リンク警告)

Markdown Lint 拡張機能を切る

{リポジトリ}/.markdownlint.json
1
2
3
{
    "default": false
}