SNS投稿テキストの自動作成
フォルダに存在する画像のファイル名を読み取ってSNS用の投稿テキストを自動作成する方法について紹介します。
ChatGPT君をフル活用しますよ!
pythonは実行できるという人はすぐ試せます
pythonが実行できないという人は、、、すみません、ChatGPT君に聞いてください。
ChatGPTを使ったことがないという人は、ChatGPTの有用性をこの記事で学んでぜひ一度ChatGPTを使ってみてください。
前提条件
私は過去作品をこのようにファイル名で管理しています。
「シリーズ名#番号_日本語タイトル-英語タイトル」
今回はInstagramの投稿テキストを作成します。
普通に作るとなるとファイル名をコピーしてテンプレの内容に入れ替えとちょっと手間がかかってしまいます。
これを何十ファイルも繰り返すのはちょっとしんどいので自動化してみましょう。
ChatGPTを使うときの心得
基本的に一発で最終成果物を得ることを期待しません。
対話を通して改善することで最終成果物に近づけていくというのが重要です。
何かわからないことがあったらしつこくChatGPT君に聞きましょう。
内容をもっと説明してもらったり、自分の理解を確かめることも重要です。
それが指示の精度を改善して最終的な成果物に近づけます。
自動化方法
ここからは私とChatGPT君とのやり取りを時系列で紹介していきます。
指示1「それっぽいの作って」
(私は慣れてるので最初の指示から難易度高いかも…)
ChatGPTの回答1
import os
# 対象のディレクトリパスを指定します。
directory_path = "/path/to/your/directory"
# 指定されたディレクトリ内のすべてのファイルを読み取ります。
for filename in os.listdir(directory_path):
# ファイル名が指定した形式に一致するかどうかを確認します。
if filename.startswith("少女絶景紀行#") and filename.endswith(".png"):
# ファイル名から番号とタイトルを抽出します。
num, title = filename[len("少女絶景紀行#"):].split("_", 1)
title = title.rsplit(".", 1)[0]
# テンプレートに番号とタイトルを挿入します。
template = f"""
◀︎Follow me!!
{title}
#少女絶景紀行 No.{num}
#Girls_Scenic_Journey
#aiart #aiillustration #aiイラスト #illustgram#イラストグラム #aiartworks #AI美女
"""
# 生成されたテンプレートをプリントします。
print(template)
回答1の所感
入力パスをコード中に書くのは面倒なので、呼び出しコマンドの引数で指定したい
「少女絶景紀行#」もあれば「風光名明媚着物#」もあるから両方処理できるようにしないと
そういえば、ファイル名の末尾が「*.png」じゃないのもあったと思い出す
少女絶景紀行#13_絶壁から見る海の展望 - Awe-inspiring vista of the sea from a sheer cliff
少女絶景紀行#14_雲間に佇む - Lingering among the Clouds.png
指示2「実行形式とファイル名の例外対応を修正」
ChatGPTの回答2
import os
import sys
import re
# コマンドライン引数からディレクトリパスを取得します。
directory_path = sys.argv[1]
# 指定されたディレクトリ内のすべてのファイルを読み取ります。
filenames = sorted(os.listdir(directory_path))
for filename in filenames:
# ファイル名から番号を抽出する正規表現パターンを作成します。
num_pattern = re.compile(r"#(\d+)_")
num_match = num_pattern.search(filename)
if num_match is not None:
num = num_match.group(1)
# ファイル名からタイトルを抽出します。'_'と'.png'またはファイル名末尾の間の部分を取得します。
title = filename.split("_", 1)[1].rsplit(".", 1)[0]
# テンプレートに番号とタイトルを挿入します。
template = f"""
◀︎Follow me!!
{title}
#少女絶景紀行 No.{num}
#Girls_Scenic_Journey
#aiart #aiillustration #aiイラスト #illustgram#イラストグラム #aiartworks #AI美女
"""
# 生成されたテンプレートをプリントします。
print(template)
回答2の所感
いい感じっぽいので実行してみよう。
回答2の実行結果
うーん…ソートはしているけどNo.10から始まってる
これは直したい
指示3「ファイルのソート順を修正」
ChatGPTの回答
import os
import sys
import re
# コマンドライン引数からディレクトリパスを取得します。
directory_path = sys.argv[1]
# 指定されたディレクトリ内のすべてのファイルを読み取ります。
filenames = os.listdir(directory_path)
# ファイル名から番号を抽出する正規表現パターンを作成します。
num_pattern = re.compile(r"#(\d+)_")
# ファイル名のリストを自然な順序にソートします。
filenames.sort(key=lambda filename: int(num_pattern.search(filename).group(1)) if num_pattern.search(filename) else float('inf'))
for filename in filenames:
num_match = num_pattern.search(filename)
if num_match is not None:
num = num_match.group(1)
# ファイル名からタイトルを抽出します。'_'と'.png'またはファイル名末尾の間の部分を取得します。
title = filename.split("_", 1)[1].rsplit(".", 1)[0]
# テンプレートに番号とタイトルを挿入します。
template = f"""
◀︎Follow me!!
{title}
#少女絶景紀行 No.{num}
#Girls_Scenic_Journey
#aiart #aiillustration #aiイラスト #illustgram#イラストグラム #aiartworks #AI美女
"""
# 生成されたテンプレートをプリントします。
print(template)
回答3の所感
対応してくれてるっっぽいので試してみよう
回答の方のは何か気を利かせてくれてるけど気にしなくてもよさそう
回答3の実行結果
いい感じにテキストが出ました!
これで良さそうですね。
他にプリントではなくテキストファイルに保存するようにしたり、文字の前に空白が入っていたりしたので削除してもらいました。
詳細なやり取りはこちらのリンクを見てください。
最後に
どうでしたでしょうか?
1ファイルずつポチポチしていると数百枚の画像を処理するのに数時間は使ったかもしれませんが、ChatGPTくんと連携すればわずか10分程度で終わっています。
私はプログラミングの経験が多少あるので指示文の精度が高いですが、初心者の人でもChatGPTと対話する根気さえあれば色々な処理をプログラミングで自動化できるようになれます。
皆さんの参考になれば幸いです。
この記事が気に入ったらサポートをしてみませんか?