AIカートコバーン

# カートコバーンとは
- 過剰に崇拝されてるメンヘラ自殺おじさんのこと
> カート・コバーン（1967-1994）は、米国のミュージシャンで、ニルヴァーナのリーダー。感受性豊かなソングライティングと荒々しい演奏で90年代のオルタナ・ロックを牽引。苦悩と成功を背負い、自らの人生に絶えず問いかけ、音楽シーンに深い影響を与えた。

## GPTでカートコバーンを再現する
- secretは各自発行して`export gpt_api_key=XXXX`するように
 
```python:ai_kart.py
def ai_create_tweet():
    api_key = os.environ.get('gpt_api_key')
    client = OpenAI(api_key=api_key)
    response = client.chat.completions.create(model="gpt-3.5-turbo",
                                              messages=[
                                                  {"role": "system",
                                                    "content": "あなたは伝説のロックスターカートコバーン。日本に生まれ変わった。洋ドラの翻訳っぽく言って。当事者っぽく言って。乱暴に言って。"},
                                                  {"role": "user",
                                                   "content": "新譜「nevermind pt2」について一言コメントをください。140文字以下にまとめてください。"}
                                              ])
    return response


response = ai_create_tweet()
print(response)

### 発言だけ取り出す
content = response.choices[0].message.content
print(content)
```

### 結果
>ロックの真髄を絶妙なバランスで表現したサウンド。力強さと繊細さの融合。真のファンに捧げる続編。最高！ #nevermindpt2 #legendaryrock

- あまりにもゴミ

## ゴミを発信する
- 　ツイートする

```python:ai_kart.py
import os
from openai import OpenAI
from pprint import pprint
import configparser
import tweepy


def auth_api_v2(envName):
    config = configparser.ConfigParser(interpolation=None)
    config.read('ai_kart.ini')
    consumer_key = config.get(envName, 'consumer_key')
    consumer_secret = config.get(envName, 'consumer_secret')
    access_key = config.get(envName, 'access_key')
    access_secret = config.get(envName, 'access_secret')
    bearer_token = config.get(envName, 'bearer_token')
    client = tweepy.Client(bearer_token=bearer_token,
                           consumer_key=consumer_key,
                           consumer_secret=consumer_secret,
                           access_token=access_key,
                           access_token_secret=access_secret)
    return client
response = ai_create_tweet()
print(response)

# 発言だけ取り出す
content = response.choices[0].message.content
print(content)

# ツイート
client = auth_api_v2('ai_kart')
post_tweet = client.create_tweet(text=content)
print(post_tweet)

```

## 自動でゴミを発信する
- github actionで自動化する
- iniファイルは`cat hoge.ini|base64`したのをsecretに入れる

```yaml
name: ai_kart
on:
  schedule:
    - cron: "0,30 * * * *"
  workflow_dispatch:

jobs:
  okera:
    name: ai_kart
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read

    defaults:
      run:
        shell: bash
        working-directory: ./

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4

      - name: twitter key decode
        env:
          JSON_DECODE: ${{ secrets.AI_KART_INI }}

        run: |
          echo -n $JSON_DECODE | base64 --decode > ./ai_kart.ini

      - name: pip install
        run: pip install -r ai_kart_requirements.txt

      - name: schedule_evil_tweet
        if: github.event_name != 'workflow_dispatch'
        run: |
          python ai_kert.py
        env:
          gpt_api_key: ${{ secrets.GPT_API_KEY }}

      - name: workflow_dispatch_evil_tweet
        if: github.event_name == 'workflow_dispatch'
        id: workflow_dispatch_evil_tweet
        run: |
          python ai_kert.py
        env:
          gpt_api_key: ${{ secrets.GPT_API_KEY }}
```

## 結果
- ファンの人から怒られそう
  - AI生成した画像添付したい
   
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">「nevermind pt2」は、俺の音楽人生の次の章を示している。ブレイクスルーから数十年後、新たなるエネルギーと情熱を注いだ作品だ。時代を超えるロックンロールの魂がここにある。衝撃と感動に満ちたサウンドと歌詞が、リスナーの心を揺さぶること間違いなし。</p>&mdash; 寒川のカートコバーン@1日目東V42a (@114bot) <a href="https://twitter.com/114bot/status/1735826633972691263?ref_src=twsrc%5Etfw">December 16, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>