本記事は、メモ系ツールの話
雑にまとめました、自分用メモよりですが、導入したい人にとっては、ノーヒントよりは本気になっているはずです。導入難度が高めなので、真似する人はよっほどの物好きかなと思います。
どんなの?
Obsidianとは、Markdown用のエディタ
そんで、プラグインが豊富なので自分に合ったMarkdownエディタとして使える
参考: https://aki-m.hatenadiary.com/entry/2022/06/02/230757
公開は、QuartzというマークダウンをHTMLに変換してくれるもの
→Reactベースのアプリっぽい、React使いだと抵抗少ないかも
参考: https://quartz.jzhao.xyz/(記事少ないので公式で)
参考: https://note.com/devlive/n/n3250edc2ee8f
雨後くあ個人として使えるの?
NotionAPIと連携している雨後くあの情報発信局サイトがあるし、必要に感じてないです。(ごめんなさい)
佐藤かえでさん触り始めてて、エンジニアたるもの勉強しないのも違うかなと思い、試しに導入した
また、ここ最近思っている複数サービスの同時投稿の研究としてもよさそうかもなという気持ちである(今年のどこかでやりたい話)
って記事書き終えて自分のサイト見たらアクセスできなかったところで思い出しました。こやつ、非対応ブロックがあったり、NotionAPIの文字数制限あったりするとページ自体開いてくれないと不便な点があった。
NotionAPI使ったWebページはスマホからNotionAI生成で必要なので、小分類メモに使うことにする。
問題点
https://x.com/Kuarisu/status/1875438860995588104
https://x.com/Kuarisu/status/1875444656018018632
準備
構成図

- ローカル(Obsidian)のプラグイン「Remotely Save」でS3にアップさせる
- 最新のS3上の資材(マークダウンファイルなど)を毎日0時に取得してGitHubの自分のリポジトリーにコミットする
- S3とGitHubリポジトリーの同期課題
- コミットされたらAWS Amplify上でデプロイが走る
- buildコマンド後に静的サイト生成されるpublicが無事デプロイできるかの課題
1.ObsidianとS3同期
ローカル(Obsidian)のプラグイン「Remotely Save」でS3にアップさせる
まずObsidianインストールしておく
以下、アクセスし、手順を確認する(リンクからいい感じにインストールできた記憶)
https://github.com/remotely-save/remotely-save
導入できたか確認する

S3アクセス可能なIAM情報を入力しておく
設定後、S3バケット「obsidian-quartz-kua」覗くと反映されている
2.S3からGithub同期
Quartz をコードスペースで作業する
https://github.com/jackyzha0/quartz.git にアクセスする
右上の「Use this template」から「Create a new repository」を選択し、自身で作業するリポジトリーをクローンする
Code>Create codespace on v4実行

事前知識
S3同期のトラブルシューティング
S3との同期が失敗する一般的な原因として、以下が考えられます:
- AWS認証情報の問題: AWSのアクセスキーとシークレットキーが正しく設定されているか確認
- 権限の不足: IAMユーザーがS3バケットに対して適切な権限(読み取り/書き込み)を持っているか確認
- バケット名の誤り: S3バケット名が正確に指定されているか確認
- リージョンの設定: AWS CLIの設定でリージョンが正しく指定されているか確認
確認方法:
# AWS認証情報の確認
aws configure list
# 同期確認
aws s3 sync s3://obsidian-quartz-kua/これらのコマンドを実行して、エラーメッセージを確認することで具体的な問題を特定できます。
「aws s3 sync」コマンドについて説明します
- S3バケット「obsidian-quartz-kua」から、ローカルの「./content」ディレクトリに同期を行います
- 「—delete」オプションは、S3に存在しないファイルをローカルから削除することを意味します
つまり、このコマンドは:
- ObsidianのノートをS3に保存しておき
- Quartzでビルドする際にS3から最新のコンテンツを取得し
- ローカルの古いファイルを自動的に削除する
という一連の同期処理を実現しています。これにより、Obsidianで作成したノートを自動的にQuartzの静的サイトに反映できます。
AWS認証情報の設定方法
AWS CLIで認証情報を設定するには、以下のコマンドを使用します:
aws configure
AWS Access Key ID [None]: YOUR_ACCESS_KEY
AWS Secret Access Key [None]: YOUR_SECRET_KEY
Default region name [None]: ap-northeast-1
Default output format [None]: jsonまたは、環境変数として設定することもできます:
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
export AWS_DEFAULT_REGION=ap-northeast-1認証情報が正しく設定されているか確認するには:あ
aws configure list
aws sts get-caller-identityGithub Actions設定
github actions の設定また、settings/Actions/General のWorkflow permissions が Read and write permissionsになっていることを確認してください。(github actionがリポジトリのcommit&pushを行うのに必要です)
ホスティングした際のgithubリポジトリに、環境変数AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEYをセットします。settings/Secrets and variables/Actions から設定可能です。

Actions>Generalから読み取りと書き込みの設定をしておく
Workflow pemissionsのラジオボタンをRead and Write…にする

.github/workflows/sync_s3.yamlファイルを新たに作成し、以下のyamlを記載します。
name: Sync and Commit S3 Data
on:
# github actionsをトリガーするスケジュール。 ... (1)
schedule:
- cron: '0 0 * * *'
workflow_dispatch: # 手動トリガー
jobs:
fetch_and_commit:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
# AWS S3 との同期 ... (2)
- name: Fetch data from S3
run: aws s3 sync s3://xxx-your-own-s3-bucket-name-xxx ./content --delete
# gitの差分がないときにコミットしないようにチェック ... (3)
- name: check for changes
run: |
git add -A
git diff --staged --quiet || echo "git_changed=true" >> $GITHUB_ENV
- name: Commit changes
if: env.git_changed == 'true'
run: |
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@github.com'
git add -A
git commit -m 'Sync data with S3'
git push origin v4
(1)cronはUTCで設定されているので、同期したいお好みの時刻を個人で適宜設定するようにしてください。
(2)上記に run: aws s3 sync s3://xxx-your-own-s3-bucket-name-xxx ./content --delete
というコマンドがあると思いますが、ここには自分で設定したs3バケットの名前を入れるようにしてください。
試す際は、適当にファイル変えてコミットするとGitHubAction動くのでおためしください
成功有無はGitHubのActions参照

S3構成参考: https://zenn.dev/miroscular/articles/3799028b4487c7
3.Quartzのデプロイ方法(Amplify)
コミットされたらAWS Amplify上でデプロイが走る
※amplifyのデプロイ手順は割愛
設定注意箇所
Nodeのバージョンを設定しておくこと
Quartzをビルドすると、静的サイトのファイルが「public」ディレクトリに生成されます。Amplifyでデプロイする際の主なステップは:
- ビルドコマンドの設定: 「npm run build」を指定して、Quartzのビルドを実
- 出力ディレクトリ: 「public」を指定(ここに静的サイトのファイルが生成される)
- ベースディレクトリ: プロジェクトのルートディレクトリを指定
Amplifyの設定例(amplify.yml):
version: 1
frontend:
phases:
preBuild:
commands:
- 'npm ci --cache .npm --prefer-offline'
build:
commands:
- 'npm install'
- 'npm run quartz build'
artifacts:
baseDirectory: public
files:
- '**/*'
cache:
paths:
- '.npm/**/*'設定できたら、失敗していると思うので再デプロイ
