iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Motion Imaging の公式サイト(Next.js 16 / Vercel Hobby)と、SNS自動投稿(Vercel Cron)をまとめたリポジトリ。 コードはすべて src/ 配下(2026-09-24 に app/ から移動)。 vercel.json の schedule は UTC。下表は日本時間。 一番簡単なのは Vercel → Settings → Cron Jobs → Run。キーは不要で、結果は Logs で確認できる。 ブラウザから直接実行する場合は ?key= を付ける。対応しているパラメータはエンドポイントごとに違う。README 전문 보기 ↗
Motion Imaging の公式サイト(Next.js 16 / Vercel Hobby)と、SNS自動投稿(Vercel Cron)をまとめたリポジトリ。
| パス | 内容 |
|---|---|
/ /migoron /about | 公開ページ |
/admin | 管理画面(パスワード保護。後述) |
/api/post-* | SNS自動投稿(cronから実行) |
partyconnect/ | 別アプリ(パーティコネクト)。詳細は partyconnect/README.md |
コードはすべて src/ 配下(2026-09-24 に app/ から移動)。
vercel.json の schedule は UTC。下表は日本時間。
| 時刻(JST) | エンドポイント | 投稿先 | 内容 | 画像 |
|---|---|---|---|---|
| 6:00 | /api/post-instagram | Instagram @motion.imaging +Threads | 宮古島・石垣島の写真(6投稿ごとに交互) | post-instagram/images/ig_motion_imaging/ |
| 6:10 | /api/post-jake-images | Instagram @jake_images_ +Threads | ポートレート(EXIF付き) | post-instagram/images/ig_jake_images/portrait/ |
| 6:20 | /api/post-morning-all | X ミゴロン +Threads | 花畑指数(1本) | post-images/flower/ |
| 18:05 | /api/post-evening | X ミゴロン +Threads | 星空指数(実際の天気から算出) | post-images/star/ |
| 21:15 | /api/post-daily | X ミゴロン +Threads | 翌日の雲海指数・富士山指数(2本) | post-images/cloud/ fuji/ |
| 22:40 | /api/verify-predictions | (投稿なし) | ミゴロン予報の答え合わせ(下記) | なし |
| 7:30 | /api/post-sukuado-morning | X スクアド +Threads | 朝枠 | なし |
| 7:31 | /api/post-sukuado-morning-question | X スクアド +Threads | 朝の質問 | なし |
| 22:00 | /api/post-sukuado-night | X スクアド +Threads | 夜枠 | post-images/scad-night/ |
| 22:01 | /api/post-sukuado-promo | X スクアド +Threads | 告知 | なし |
| 7:30 | /api/post-jake-ai-morning | X jake_images +Threads | 生成AI情報(Gemini生成、失敗時は固定文) | なし |
| 22:00 | /api/post-jake-ai-night | X jake_images +Threads | 生成AI情報 +「30日振り返り」(day30で自動停止) | 振り返りのみ post-images/jake-ai/ |
*_posted_date などで当日分を予約してから投稿する(SET NX)。一番簡単なのは Vercel → Settings → Cron Jobs → Run。キーは不要で、結果は Logs で確認できる。
ブラウザから直接実行する場合は ?key=<CRON_SECRET> を付ける。対応しているパラメータはエンドポイントごとに違う。
| パラメータ | 意味 |
|---|---|
force=1 | 当日投稿済みでも実行する(実際に投稿される) |
dry=1 | 投稿せず、本文と文字数だけ返す |
report=1 | 前回の実行レポートを表示する |
noimage=1 | 画像なしで投稿する |
/adminhttps://motionimaging.vercel.app/admin。ユーザー名は何でもよく、パスワードは ADMIN_PASSWORD。未設定のときは誰も開けない。
| 項目 | 内容 | データ元 |
|---|---|---|
| 自動投稿の稼働状況 | 上表13本それぞれの「正常/一部注意/失敗/止まっている可能性(26時間以上実行なし)」、エラー内容、最後に成功した日時 | 各cronがRedisの job_status:<id> に記録(src/lib/job-status.js) |
| ミゴロン予報の答え合わせ | 直近7日・28日の的中率、Brierスコア、予測とのズレ(点)。星空・雲海・富士山・花畑別 | Redisの pred:<種別>:<日付>(src/lib/prediction-log.js) |
| SNSトークン | Instagram 2つ・Threads 3つが今使えるか(開くたびに確認) | Meta API の /me |
| パーティコネクト | 主催者・開催予定・開催済み・延べ参加者・成立ペア | Supabase(参加者の個人情報は取得しない) |
未実装:各アプリのアクセス数(Hobbyプランでは取得APIに制限あり)、API使用量(Gemini・X)。
指数(星空・雲海・富士山・花畑)の点数はGeminiではなくコードで決まる。Geminiが書くのは「ミゴロンメモ」の一文だけ。
src/app/api/_lib/migoron-scoring.js(Open-Meteoの天気から計算。係数はここに集約)。スポットと花の見頃期間は src/app/api/_lib/spots.json。上限は95%。src/app/api/_lib/migoron-format.js。1行目は点数から決まる結論型のフック(例「明日の朝、竹田城跡で雲海が出そう☁️」)。見出しの末尾に「出現期待度」(星空・雲海)/「見え期待度」(富士山)/「見頃期待度」(花畑)を付けて、%が何の数字か分かるようにしている。X の重み付き280字に収まるよう各routeの plans で段階的に削る。pred:<star|cloud|fuji|flower>:<対象日> に保存する(120日保持)。dry run では保存しない。/api/verify-predictions(毎晩22:40 JST)が、対象日が昨日以前で未検証の予測を、Open-Meteoの過去値から同じ式で再計算して判定する。対象日の7日前まで遡って再試行する。
(予測点/100 − 結果(0か1))² の平均。0に近いほど良く、常に50%と答えると0.25になるので、0.25を下回れば当て推量より上。?report=1(&days=7|28)で取得できる。JSONの snsText はSNS発信用の下書き(自動投稿はしていない)。?dry=1 は検証結果を表示するだけで保存しない。https://raw.githubusercontent.com/<owner>/<repo>/main/src/app/api/...)からXやInstagramに渡している。フォルダを移動したり名前を変えたりすると、コード内のURLも直さないと画像が404になる。.JPG と .jpg は別物)。| フォルダ | ファイル名 | 枚数 | 枚数の環境変数 |
|---|---|---|---|
post-images/flower/ | 花00201.jpg〜 | 17 | FLOWER_IMAGE_COUNT |
post-images/fuji/ | 富士山00101.jpg〜 | 11 | FUJI_IMAGE_COUNT |
post-images/star/ | 星00301.jpg〜 | 8 | STAR_IMAGE_COUNT |
post-images/cloud/ | 雲海0001.JPG〜(4桁・大文字) | 11 | CLOUD_IMAGE_COUNT |
post-images/scad-night/ | 01.jpg〜 | 8 | SCAD_NIGHT_IMAGE_COUNT |
post-images/jake-ai/ | AI00001.JPG〜 | 8 | JAKE_AI_IMAGE_COUNT |
post-instagram/images/ig_motion_imaging/miyakojima/ | 01.jpg〜47.jpg | 46(16.jpgが欠番) | MIYAKOJIMA_IMAGE_COUNT(既定47) |
post-instagram/images/ig_motion_imaging/ishigaki/ | 01.jpg〜106.jpg | 106 | ISHIGAKI_IMAGE_COUNT(既定106) |
post-instagram/images/ig_jake_images/portrait/ | 01.jpg〜61.jpg + exif.csv | 61 | JAKE_IMAGE_COUNT |
写真を追加したら、枚数の環境変数も合わせて更新する。@motion.imaging のInstagramは、番号の写真が無い(欠番・枚数の設定ミス)場合は自動で次の番号に進む(最大10枚まで)。
| 用途 | 変数 |
|---|---|
| 共通 | CRON_SECRET KV_REST_API_URL KV_REST_API_TOKEN(Upstash Redis) GEMINI_API_KEY GITHUB_REPO_OWNER GITHUB_REPO_NAME GITHUB_BRANCH |
| X ミゴロン | X_API_KEY X_API_SECRET X_ACCESS_TOKEN X_ACCESS_SECRET |
| X スクアド | SCAD_X_API_KEY SCAD_X_API_SECRET SCAD_X_ACCESS_TOKEN SCAD_X_ACCESS_SECRET |
| X jake_images | JAKE_X_API_KEY JAKE_X_API_SECRET JAKE_X_ACCESS_TOKEN JAKE_X_ACCESS_SECRET |
INSTAGRAM_ACCESS_TOKEN INSTAGRAM_BUSINESS_ACCOUNT_ID(motion) / JAKE_IMAGES_ACCESS_TOKEN JAKE_IMAGES_ACCOUNT_ID(jake) | |
| Threads | THREADS_MOTION_TOKEN(ミゴロン・motion) THREADS_JAKE_TOKEN(jake) THREADS_SUKUADO_TOKEN(スクアド) |
| 管理画面 | ADMIN_PASSWORD PARTYCONNECT_SUPABASE_SECRET_KEY(PARTYCONNECT_SUPABASE_URL は省略可) |
| 画像枚数 | 上の画像表を参照 |
環境変数を変えたら Redeploy しないと反映されない。
Metaのトークンは約60日で切れる。また、Facebook側のパスワード変更やセキュリティ判定で期限前でも無効になる(エラー code=190)。自動延長の仕組みはまだ無いので、管理画面の「SNSトークン」が「無効」になったら次の手順で更新する。
IGAA…、Threadsは THAA…)をコピーする。数字だけの値はアカウントIDなので違う。注意(Threads):同意画面には、ブラウザでThreadsにログインしているアカウントが出る。「jake_images_として続行」と出ているときに進むと、どの行のボタンを押してもjake用のトークンになる。motion用を作るときは、その画面に motion.imaging が表示されることを必ず確認する。
| 時期 | 症状 | 原因 | 対応 |
|---|---|---|---|
| 2026-09-13 | 雲海指数が内容違いで2回投稿された | 「投稿済みか確認→投稿→フラグを立てる」の間にcronが二重起動 | 投稿前に SET NX で当日分を予約する方式に変更(朝・夕・夜すべて) |
| 2026-09 | 富士山指数で「Your media IDs are invalid」 | 画像がカメラ原寸(最大9504px) | 全画像を長辺2048pxに縮小 |
| 2026-10-16 | 星空指数が全地点35%に張り付いた | 夜間9時間の天気コードの最悪値で上限を掛けていた(1時間の曇りで全地点が頭打ち) | 時間別に評価し、最も条件の良い連続3時間で採点するよう変更 |
| 2026-09 | 星空指数が雨の日に95% | 星空指数が天気を見ていなかった | open-meteo の雲量・天気から算出するよう変更 |
| 2026-09-15頃〜09-28 | Instagram 2アカウントの投稿が止まっていた | Metaトークンの無効化(code=190) | トークンを再発行。気づけなかった反省から管理画面を追加 |
| 2026-09-24〜09-25 | 全アカウントで画像が付かない/Instagramが投稿できない | app/→src/app/ 移動で画像URLが404 | 全7ファイルのURLを src/app/... に修正 |
| 2026-10-05(未発生) | 宮古島 16.jpg 欠番、石垣島の枚数設定が実際より3枚多い | 該当番号の日にInstagram投稿が失敗する状態だった | 欠番を飛ばす処理を追加、石垣島の既定枚数を106に修正 |