#!/usr/bin/env bash # Usage: new-note.sh "Note Title" [--mdx] # Creates a new note in the Obsidian vault with correct frontmatter and folder structure. # Use --mdx for notes that need a cover image or custom components (creates .mdx file). set -euo pipefail VAULT='/Users/adrian/Obsidian/Web/adrian-altner-com' if [[ -z "${1:-}" ]]; then echo "Usage: new-note.sh \"Note Title\" [--mdx]" >&2 exit 1 fi TITLE="$1" MDX=false if [[ "${2:-}" == "--mdx" ]]; then MDX=true fi 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-%d) DIR="$VAULT/content/notes/$DATE_FOLDER" if $MDX; then EXT="mdx" else EXT="md" fi FILE="$DIR/$SLUG.$EXT" mkdir -p "$DIR" if [[ -f "$FILE" ]]; then echo "File already exists: $FILE" >&2 exit 1 fi if $MDX; then cat > "$FILE" << EOF --- title: "$TITLE" publishDate: $PUBLISH_DATE description: "" cover: "./$SLUG.jpg" coverAlt: "" tags: - draft: false syndication: --- EOF else cat > "$FILE" << EOF --- title: "$TITLE" publishDate: $PUBLISH_DATE description: "" tags: - draft: false syndication: --- EOF fi echo "Created: $FILE"