Skip to content
 
 

Repository files navigation

Community Service Hour

https://hour.gg/

Learn tech, pitch projects, ask anything, earn badges.

Join live Participate Add to calendar Past episodes
Twitch, X Spaces, Rumble, YouTube Ask anything, earn badges ICS, Google Calendar, IRL workshops Apple Podcasts, Spotify, TikTok

Production process

When a show is over, please edit the episode file (anybody can pull request):

  • title from the show notes
  • description from the show notes, up to 400 characters
  • badges from the show notes
  • Add quick notes and links below the --- front matter
    • Add useful keywords and hyperlinks for items we discussed
    • Add hyperlinks (X or homepage preferred) for people that we mention
    • This part requires human research, ChatGPT does not know everybody's profile/homepage URL
    • After the quick notes, add <!--end of quick notes-->
    • Paste transcript or other automated notes after this

After the video is edited, fill in:

  • timeline using timecode tool

  • youtube-full the YouTube URL

  • discussion the X URL

  • enclosure-length and itunes-duration

    EPISODE=2023-10-10-episode-97
    export SIZE=$(ssh media.phor.net 'stat -c %s **/media/csh/'$EPISODE.m4a)
    # yq -i --front-matter="process" '.enclosure-length = env(SIZE)' _episodes/$EPISODE.md # MESSES UP WHITESPACE
    sed -i '' "s/enclosure-length:.*/enclosure-length: $SIZE/" _episodes/$EPISODE.md
    
    export DURATION=$(ssh media.phor.net 'ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 **/media/csh/'$EPISODE.m4a '| cut -d. -f1')
    sed -i '' "s/itunes-duration:.*/itunes-duration: $DURATION/" _episodes/$EPISODE.md
  • Upload the audio file, then set posted: true

Details

Here is the production process:

graph LR
s[Live show]
v[Video cut]
v2[TikTok]
yt[YouTube]
tw[Tweet]
pm[Podcast m4a file]
hggdraft[episode.md draft]
hggpublished[hour.gg and podcast]

v--Publish-->yt
v--Cut-->v2
yt--Link-->tw
v2--Link-->tw
s--Edit-->v
s--Pull request-->hggdraft
v--Timecodes-->pm
v--Timecodes-->hggdraft
pm--Add filesizes-->hggpublished
hggdraft-->hggpublished

click yt "https://www.youtube.com/playlist?list=PLaMigeN8Exx-ChNPpO-j6pFQ3F8oJWrBN"
click hgg "https://github.com/community-service/hour.gg/tree/main/_drafts"
click draft "https://github.com/community-service/hour.gg/tree/main/_drafts"
click v2 "https://www.tiktok.com/@fulldecent"
Loading

Upcoming episodes

Draft upcoming episodes like this (do all episodes through the next February to save time):

# todo: use yq here
NUMBER="62"
EPISODE="2023-02-07-episode-$NUMBER"
TIME="2023-02-07 18:00:00 -0500"
URL="https://media.phor.net/csh/$EPISODE.m4a"
UUID=$(uuidgen)
cp _drafts/YYYY-MM-DD-episode-N.md _drafts/$EPISODE.md
sed -i '' -e "s/guid: .*/guid: \"$UUID\"/" _drafts/$EPISODE.md
sed -i '' -e "s/title: .*/title: \"Episode $NUMBER\"/" _drafts/$EPISODE.md
sed -i '' -e "s|enclosure-url: .*|enclosure-url: \"$URL\"|" _drafts/$EPISODE.md
sed -i '' -e "s/episode: .*/episode: $NUMBER/" _drafts/$EPISODE.md

YouTube description template

PASTE TIMELINE HERE

JOIN TUESDAYS AT 6PM NEW YORK // https://hour.gg // with your cohosts William Entriken and Daniel Tedesco

PASTE KEYWORDS/HASHTAGS HERE

MEDIA CREDITS
“Block Shape Diamond” by Tamiya @ Sketchfab, modified, CC BY 4.0.
“Diamond” by DarkPixel Studios @ Sketchfab, modified, CC BY 4.0.
“Sentence photo” by creativeart @ freepik, modified.
“Scary Island” by Verified Picasso @ YouTube.
“Tech texture vector” by starline @ freepik, modified.
Motion graphics by Gisela Leyva

Do transcript

#!/bin/zsh

# Define the path to the whisper.cpp directory and model
whisper_path="$HOME/Developer/whisper.cpp"
model_path="$whisper_path/models/ggml-base.en.bin"

# Loop through all .m4a files in the current directory
for episode in *.m4a; do
  base="${episode:r}"
  ffmpeg -i "${episode}" -ar 16000 -ac 2 -f wav - | \
  "${whisper_path}/main" --language en --diarize --output-txt --model "${model_path}" --output-file "${base}" -
  echo "Finished processing ${episode}"
done

❯ openai api chat.completions.create --model gpt-4-1106-preview -g system "You are a helpful chatbot" -g user 'hello'





export episode=2021-12-21-episode-3


ffmpeg -i 2021-12-21-episode-3.m4a -ar 16000 -f wav - | ~/Developer/whisper.cpp/main --language en --output-txt --model ~/Developer/whisper.cpp/models/ggml-base.en.bin --output-file 2021-12-21-episode-3-CPP -


for remote_file_path in $(ssh apps.phor.net "ls domains/phor.net/public_html/media/csh/*.m4a"); do
  echo "Downloading ${remote_file_path}"
  filename=$(basename -- "$remote_file_path")
  ssh apps.phor.net "cat ${remote_file_path}" | whisper - --language English | tee "${filename}.transcript.txt"
done

Our tech stack

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages