#!/usr/bin/env bash # Usage: new-post.sh "Post Title" # Creates a new blog post in the Obsidian vault with correct frontmatter and folder structure. set -euo pipefail VAULT='/Users/adrian/Obsidian/Web/adrian-altner-com' if [[ -z "${1:-}" ]]; then echo "Usage: new-post.sh \"Post Title\"" >&2 exit 1 fi TITLE="$1" SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9 -]//g' | sed 's/ \+/-/g' | sed 's/^-\+//;s/-\+$//') DATE_FOLDER=$(date +%Y/%m/%d) PUBLISH_DATE=$(date +%Y-%m-%dT%H:%M:%S%z) DIR="$VAULT/content/blog/posts/$DATE_FOLDER" FILE="$DIR/$SLUG.md" mkdir -p "$DIR" if [[ -f "$FILE" ]]; then echo "File already exists: $FILE" >&2 exit 1 fi cat > "$FILE" << EOF --- title: "$TITLE" description: "" publishDate: $PUBLISH_DATE tags: [] category: general draft: true syndication: --- EOF echo "Created: $FILE"