μλ
νμΈμ JK μ
λλ€.
Posting μ νλ €κ³ ν©λλ€. κ°κ²°ν workflow κ° μλλ©΄ μ§μ μ μΈ posting μ΄ μ΄λ ΅κ³ νμ§ λΆμ§ λ κ²μ΄κΈ° λλ¬Έμ μ΅λν κ°κ²°ν΄μΌ ν©λλ€.
λ©μΈ λ©λͺ¨ 보κ΄μκ° μκ³ blog 보κ΄μκ° λ°λ‘ μμ΄μ 볡μ¬λ₯Ό ν΄μ£Όκ³ μ°κ΄λ static file λ€λ κ°μ΄ λ³΅μ¬ ν΄μ€μΌ ν©λλ€.
blog 보κ΄μ git λ push ν΄μ£Όλ μ μ°¨λ νμ ν©λλ€.
μΌλ ¨μ μ μ°¨λ₯Ό shell script νμΌ νλλ‘ λ§λ€κ³ Obsidian μ shell script λ₯Ό μ€νν΄ μ£Όλ νλ¬κ·ΈμΈμ μ΄μ©νμ¬ νλ°©μ λλΌ μμ μ
λλ€.
λͺ©μ
- Obsidian μμ λ©λͺ¨ν μ 보λ₯Ό Blog λ‘ Posting νκΈ°.
- κ°κ²°ν
workflowꡬμ±
Step 00. Posting μμΉ
- ./content/index.md λ λ©μΈ νλ©΄
- ./content λ°μ markdown λ¬Έμ μμ±.
- ./content λ°μ
staticλλ ν 리 λ§λ€κ³ static 리μμ€ νμΌ μ μ₯ ( λλ ν 리 μ΄λ¦μ μμλ‘ μ νλ©΄ λ¨. ) - markdown νμΌμ νμμΌλ‘ μλμ frontmatter νμμ λ£κ³ μμ±
Step 01. Posting Template
- https://quartz.jzhao.xyz/authoring-content
- quartz4 κ° μ ν΄μ€ νμ μ frontmatter λ₯Ό Obsidian Template μΌλ‘ νλ μ€μ
---
title:
draft:
tags:
description:
date: ""
---

Step 02. PlugIn Install & Setting
-
plugin : shell commands

-
shell μμΉ / λ¨μΆν€ μ€μ

Step 03. Shell Scripte
- λ³΅μ¬ κΈ°λ₯ zsh script νμΌ
- μμ νμ§ 1μΌ μ΄λ΄μ
.mdνμΌμ€μdraft: false문ꡬ κ°μ§ νμΌμ blog μμΉλ‘ 볡μ¬. - 볡μ¬ν νμΌμμ jpg or jpeg νμΌ μ΄ μμΌλ©΄ static μμΉμ 볡μ¬
- 볡μ¬ν νμΌ print
- μμ νμ§ 1μΌ μ΄λ΄μ
#!/bin/zsh
# μ λ κ²½λ‘ μ¬μ©
SRC_PATH="/Home/MEMO"
DST_PATH="/Home/blog/content"
BLOG_PATH="/Home/blog/"
STATIC_SRC_PATH="${SRC_PATH}/Static_file"
STATIC_DST_PATH="${DST_PATH}/static"
# μ΄λλ νμΌ μ΄λ¦μ μ μ₯ν λ°°μ΄
moved_files=()
# λλ ν 리 μ‘΄μ¬ μ¬λΆ νμΈ
check_directories() {
for dir in "$SRC_PATH" "$DST_PATH" "$STATIC_SRC_PATH"; do
if [ ! -d "$dir" ]; then
echo "Error: Directory $dir does not exist"
exit 1
fi
done
}
git_push() {
cd $BLOG_PATH
# λ³κ²½λ νμΌ λͺ©λ‘ κ°μ Έμ€κΈ°
ADDED_FILES=($(git status -s | awk '$1 == "A" {print $2}'))
MODIFIED_FILES=($(git status -s | awk '$1 == "M" {print $2}'))
DELETED_FILES=($(git status -s | awk '$1 == "D" {print $2}'))
# λ³κ²½λ νμΌ κ°μ νμΈ
TOTAL_FILES=$(( ${#ADDED_FILES[@]} + ${#MODIFIED_FILES[@]} + ${#DELETED_FILES[@]} ))
if [ $TOTAL_FILES -eq 0 ]; then
echo "λ³κ²½λ νμΌμ΄ μμ΅λλ€. Pushν λ΄μ©μ΄ μμ΅λλ€."
exit 0
fi
# μμ λ νμΌ μ²λ¦¬ (git rm μ€ν)
if [ ${#DELETED_FILES[@]} -gt 0 ]; then
git rm "${DELETED_FILES[@]}"
fi
# μ»€λ° λ©μμ§ κ΅¬μ±
COMMIT_MSG=""
if [ ${#ADDED_FILES[@]} -gt 0 ]; then
DISPLAY_FILES="${ADDED_FILES[@]:0:5}"
COMMIT_MSG+="π New: ${DISPLAY_FILES// /, }"
if [ ${#ADDED_FILES[@]} -gt 5 ]; then
COMMIT_MSG+=" ... μΈ ${#ADDED_FILES[@]}κ° νμΌ"
fi
COMMIT_MSG+="\n"
fi
if [ ${#MODIFIED_FILES[@]} -gt 0 ]; then
DISPLAY_FILES="${MODIFIED_FILES[@]:0:5}"
COMMIT_MSG+="π Update: ${DISPLAY_FILES// /, }"
if [ ${#MODIFIED_FILES[@]} -gt 5 ]; then
COMMIT_MSG+=" ... μΈ ${#MODIFIED_FILES[@]}κ° νμΌ"
fi
COMMIT_MSG+="\n"
fi
if [ ${#DELETED_FILES[@]} -gt 0 ]; then
DISPLAY_FILES="${DELETED_FILES[@]:0:5}"
COMMIT_MSG+="π Delete: ${DISPLAY_FILES// /, }"
if [ ${#DELETED_FILES[@]} -gt 5 ]; then
COMMIT_MSG+=" ... μΈ ${#DELETED_FILES[@]}κ° νμΌ"
fi
COMMIT_MSG+="\n"
fi
# Git μμ
μν
git add .
git commit -m "$COMMIT_MSG"
git push
echo "Push Success!"
}
# λλ ν 리 νμΈ μ€ν
check_directories
# νμ λλ ν 리 ν¬ν¨νμ¬ .md νμΌ μ€ μμ /μΆκ°λ μ§ 1μΌ μ΄λ΄μ νμΌ μ°ΎκΈ°
find "$SRC_PATH/" -type f -name "*.md" -mtime -1 | while read -r FILE; do
# "draft μνκ° false" 문ꡬ ν¬ν¨ μ¬λΆ νμΈ
if grep -q "draft: false" "$FILE"; then
# μλ³Έ νμΌ κ²½λ‘μμ νμ λλ ν 리 κ²½λ‘ μΆμΆ
RELATIVE_PATH="${FILE#$SRC_PATH}"
TARGET_PATH="$DST_PATH/${RELATIVE_PATH%/*}"
# λμ λλ ν 리 μμ± (μ€ν¨ μ μλ¬ μ²λ¦¬)
if ! mkdir -p "$TARGET_PATH" 2>/dev/null; then
echo "Error: Failed to create directory $TARGET_PATH"
continue
fi
# νμΌμ΄ μ΄λ―Έ μ‘΄μ¬νλ κ²½μ° κ²½κ³
TARGET_FILE="$TARGET_PATH/${FILE##*/}"
# νμΌ λ³΅μ¬ (μλ¬ μ²λ¦¬ ν¬ν¨)
if ! cp "$FILE" "$TARGET_FILE" 2>/dev/null; then
echo "Error: Failed to copy $FILE to $TARGET_FILE"
continue
fi
# jpg λλ jpeg νμΌμ΄ ν¬ν¨λμ΄ μλμ§ νμΈ
if grep -q "\.jpg\|\.jpeg" "$FILE"; then
# νμΌμ μΈκΈλ jpg λλ jpeg νμΌλ€μ κ²μ λ° λ³΅μ¬
grep -oE "[a-zA-Z0-9_-]+\.(jpg|jpeg)" "$FILE" | while read -r IMG_FILE; do
IMG_SOURCE="$STATIC_SRC_PATH/$IMG_FILE"
IMG_TARGET="$STATIC_DST_PATH/$IMG_FILE"
if [ -f "$IMG_SOURCE" ]; then
if ! mkdir -p "$STATIC_DST_PATH" 2>/dev/null; then
echo "Error: Failed to create directory $STATIC_DST_PATH"
continue
fi
if ! cp "$IMG_SOURCE" "$STATIC_DST_PATH/" 2>/dev/null; then
echo "Error: Failed to copy $IMG_SOURCE to $STATIC_DST_PATH"
continue
fi
moved_files+=("$IMG_FILE")
fi
done
fi
# μ΄λλ νμΌ μ΄λ¦ μ μ₯
moved_files+=("${RELATIVE_PATH##*/}")
fi
done
# μ΄λλ νμΌ μ΄λ¦ μΆλ ₯
if [ ${#moved_files[@]} -gt 0 ]; then
echo "Moved Files:"
printf "%s\n" "${moved_files[@]}"
echo "Total files moved: ${#moved_files[@]}"
git_push
else
echo "No files were moved."
# delete file μ²λ¦¬
git_push
fi
exit 0Step 04. νμΈ
- μ€μ ν λ¨μΆν€ μ€ν νμ¬ μ€μ blog μμΉμ λ³΅μ¬ μ¬λΆμ git μν νμΈ