คู่มือ

วิธีโพสต์ Instagram อัตโนมัติ โพสต์ Reels, Carousel และ Stories อัตโนมัติด้วย API call เดียว

Graph API ทางการของ Instagram ต้องผ่าน Facebook app review ต้องมีบัญชี Business ที่ผูกกับ Facebook Page และต้องทำ OAuth หลายขั้นตอน Upload-Post จัดการทั้งหมดนี้ให้เบื้องหลัง เรียก API ครั้งเดียว endpoint เดียว แล้ว Reel รูปภาพ หรือ carousel ของคุณก็ขึ้นโพสต์ คู่มือนี้รวมทุกอย่างที่ต้องใช้ในการโพสต์ Instagram อัตโนมัติ พร้อมตัวอย่างโค้ดจริง

ทำไมต้องโพสต์ Instagram อัตโนมัติผ่าน API

ถ้าเคยโพสต์เองผ่านแอป Instagram คุณคงรู้ขั้นตอนดี: เปิดแอป เลือกไฟล์ เขียนแคปชัน ใส่แฮชแท็ก แท็กคน เลือกรูปปก แล้วค่อยกดโพสต์ ทีนี้ลองคูณด้วยวันละ 5 โพสต์ในบัญชีลูกค้าหลายบัญชี

หน้าแพลตฟอร์ม Instagram อธิบายว่า Upload-Post รองรับอะไรบ้างบน Instagram สรุปสั้นๆ คือ คุณโพสต์ Reels, รูปเดี่ยว, carousel (โพสต์หลายรูป) และ Stories ได้ผ่าน endpoint เดียวของ social media API ไม่ต้องผ่าน Facebook app review ไม่ต้องคอยรีเฟรชโทเคน และไม่ต้องปวดหัวกับ Graph API

Upload-Post ให้โพสต์ Instagram ได้สูงสุด 50 โพสต์ต่อบัญชีใน 24 ชั่วโมงล่าสุด ซึ่งมากพอสำหรับงานเกือบทุกแบบ ถ้าต้องการโพสต์ไปยังแพลตฟอร์มอื่นพร้อมกันด้วย ดูวิธีโพสต์ทุกแพลตฟอร์มพร้อมกัน

โพสต์ Instagram Reel ผ่าน API

Reels คือรูปแบบคอนเทนต์หลักของ Instagram ถ้าจะโพสต์วิดีโอเป็น Reel ให้ส่งคำขอ POST ไปที่ endpoint อัปโหลด โดยตั้ง media_type เป็น REELS และกำหนดได้ด้วยว่าจะให้ Reel แสดงในฟีดอย่างไรผ่าน share_mode

curl -X POST https://api.upload-post.com/api/upload \
  -H "Authorization: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=เบื้องหลังการเปิดตัวสินค้าใหม่ของเรา" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "share_mode=FEED_AND_REELS" \
  -F "audio_name=Original Audio" \
  -F "cover_url=https://example.com/cover.jpg"

พารามิเตอร์เฉพาะของ Instagram แต่ละตัวทำหน้าที่ดังนี้:

  • media_type=REELS บอก Instagram ให้โพสต์เป็น Reel แทนวิดีโอฟีดธรรมดา
  • share_mode=FEED_AND_REELS เผยแพร่ทั้งในแท็บ Reels และฟีดหลัก ใช้ REELS_ONLY ถ้าไม่อยากให้ขึ้นในกริดฟีด
  • audio_name ตั้งชื่อแทร็กเสียงที่ผู้ชมเห็นบน Reel
  • cover_url ใช้รูปปกที่กำหนดเอง ถ้าไม่ใส่ Instagram จะเลือกเฟรมจากวิดีโอให้

เมื่ออัปโหลดสำเร็จ API จะส่ง job ID และสถานะของแต่ละแพลตฟอร์มกลับมา:

{
  "success": true,
  "job_id": "job_reel_abc123",
  "platforms": {
    "instagram": {
      "status": "processing",
      "user": "mybrand"
    }
  }
}

ใช้ share_to_feed=true หรือ share_to_feed=false แทน share_mode ก็ได้ ผลลัพธ์เหมือนกัน และใช้ thumb_offset เพื่อเลือกเฟรมที่ต้องการจากวิดีโอมาเป็นภาพย่อ (ค่าเป็นมิลลิวินาที)

โพสต์รูปภาพและ carousel

สำหรับรูปเดี่ยวหรือโพสต์ carousel (หลายรูป) ให้ใช้ endpoint /api/upload_photos อัปโหลดหลายไฟล์ด้วยพารามิเตอร์ photos[] ระบบจะสร้างเป็น carousel ให้อัตโนมัติ

curl -X POST https://api.upload-post.com/api/upload_photos \
  -H "Authorization: Apikey your-api-key-here" \
  -F "photos[][email protected]" \
  -F "photos[][email protected]" \
  -F "photos[][email protected]" \
  -F "user=mybrand" \
  -F "title=3 สินค้าแนะนำประจำเดือนนี้" \
  -F "platform[]=instagram" \
  -F "instagram_first_comment=#productpicks #trending #shopnow"

เมื่อส่งมากกว่าหนึ่งไฟล์ใน photos[] Instagram จะสร้างโพสต์แบบ carousel ผู้ใช้ปัดดูรูปตามลำดับที่คุณอัปโหลด ถ้าส่งไฟล์เดียวจะเป็นโพสต์รูปปกติ Instagram รองรับสูงสุด 10 รูปต่อ carousel

ใช้ instagram_title เพื่อตั้งแคปชันเฉพาะ Instagram เมื่อโพสต์คอนเทนต์เดียวกันไปหลายแพลตฟอร์มพร้อมกัน เหมาะเวลาที่แคปชัน Instagram ต้องใช้แฮชแท็กหรือการ mention ต่างจากแพลตฟอร์มอื่น

โพสต์คอมเมนต์แรกอัตโนมัติ

พารามิเตอร์ instagram_first_comment จะเพิ่มคอมเมนต์ในโพสต์ทันทีหลังโพสต์ขึ้น เป็นเทคนิค Instagram ที่นิยมมาก: ให้แคปชันดูสะอาด แล้วย้ายแฮชแท็กทั้งหมดไปไว้ในคอมเมนต์แรก

curl -X POST https://api.upload-post.com/api/upload \
  -H "Authorization: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=สอนใช้แอปของเราแบบเร็วๆ" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "instagram_first_comment=#tutorial #howto #apptips #tech #productdemo"

ทำไมต้องใส่แฮชแท็กในคอมเมนต์แรกแทนแคปชัน? อัลกอริทึมของ Instagram มองแฮชแท็กในคอมเมนต์แรกเหมือนแฮชแท็กในแคปชันในแง่การค้นพบ แต่แคปชันของคุณจะดูสะอาดกว่า หลายแบรนด์และครีเอเตอร์เลือกวิธีนี้เพราะทำให้โพสต์โฟกัสที่ข้อความ ไม่ใช่กำแพงแฮชแท็ก

ใช้ collaborators และแท็กผู้ใช้

โพสต์ Collab ของ Instagram ให้สองบัญชีเป็นเจ้าของคอนเทนต์ร่วมกัน โพสต์จะขึ้นในทั้งสองโปรไฟล์ และ engagement (ไลก์ คอมเมนต์ แชร์) นับรวมกัน ใช้พารามิเตอร์ collaborators เพื่อเชิญผู้ร่วมโพสต์

curl -X POST https://api.upload-post.com/api/upload \
  -H "Authorization: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=ยินดีที่ได้ประกาศความร่วมมือกับ @partneraccount" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "collaborators=partneraccount,otheraccount" \
  -F "user_tags=partneraccount,photographer_jane" \
  -F "location_id=123456789"
  • collaborators รับรายชื่อ username ของ Instagram คั่นด้วยจุลภาค ผู้ถูกเชิญจะได้รับแจ้งเตือนให้กดยอมรับ
  • user_tags แท็กผู้ใช้ในตัวโพสต์ เหมือนการแท็กคนในรูปผ่านแอป
  • location_id ใส่ตำแหน่งให้โพสต์ หา location ID ได้จากการค้นหาตำแหน่งของ Instagram หรือ Facebook Places API

ตั้งเวลาโพสต์ Instagram

เพิ่ม scheduled_date ในคำขออัปโหลดใดก็ได้เพื่อโพสต์ในเวลาที่ต้องการ วันที่ต้องเป็นรูปแบบ ISO-8601 และกำหนด timezone เพิ่มได้

curl -X POST https://api.upload-post.com/api/upload \
  -H "Authorization: Apikey your-api-key-here" \
  -F "[email protected]" \
  -F "user=mybrand" \
  -F "title=อรุณสวัสดิ์! วันนี้มีคอนเทนต์ใหม่" \
  -F "platform[]=instagram" \
  -F "media_type=REELS" \
  -F "scheduled_date=2025-09-15T09:00:00Z" \
  -F "timezone=America/New_York"

ใช้ add_to_queue=true แทนการระบุวันที่ก็ได้ ระบบคิวจะเลือกช่วงเวลาว่างถัดไปตามตารางที่คุณตั้งไว้ เหมาะกับการอัปโหลดคอนเทนต์ทีละมากๆ โดยไม่ต้องเลือกเวลาเอง ดูคู่มือตั้งเวลาโพสต์ฉบับเต็มสำหรับการตั้งค่าคิว แก้ไขโพสต์ที่ตั้งเวลาไว้ และจัดการปฏิทินคอนเทนต์

ทำให้เป็นอัตโนมัติด้วย Python

Python SDK อย่างเป็นทางการช่วยให้เขียนสคริปต์อัตโนมัติได้ง่าย ติดตั้งด้วย pip install upload-post แล้วใช้ UploadPostClient เพื่อเรียก API ดูขั้นตอนทั้งหมดได้ในคู่มือโพสต์อัตโนมัติด้วย Python

นี่คือสคริปต์เต็มที่โพสต์ Reel อัปโหลด carousel รูปภาพ และตั้งเวลาคอนเทนต์สำหรับทั้งสัปดาห์:

from upload_post import UploadPostClient
from datetime import datetime, timedelta

client = UploadPostClient(api_key="your-api-key-here")

# 1. โพสต์ Reel ทันที
reel_response = client.upload_video(
    video_path="/path/to/reel.mp4",
    title="พาชมสินค้าใหม่",
    user="mybrand",
    platforms=["instagram"],
    media_type="REELS",
    share_mode="FEED_AND_REELS",
    instagram_first_comment="#newproduct #walkthrough #tech"
)
print(f"อัปโหลด Reel แล้ว: {reel_response['job_id']}")

# 2. โพสต์ carousel รูปภาพ
carousel_response = client.upload_photos(
    photo_paths=[
        "/path/to/photo1.jpg",
        "/path/to/photo2.jpg",
        "/path/to/photo3.jpg"
    ],
    title="สามมุม หนึ่งสินค้า",
    user="mybrand",
    platforms=["instagram"],
    collaborators="partneraccount"
)
print(f"อัปโหลด carousel แล้ว: {carousel_response['job_id']}")

# 3. ตั้งเวลา Reels สำหรับ 7 วันข้างหน้า
videos = [
    "monday.mp4", "tuesday.mp4", "wednesday.mp4",
    "thursday.mp4", "friday.mp4", "saturday.mp4", "sunday.mp4"
]

for i, video in enumerate(videos):
    publish_date = (datetime.now() + timedelta(days=i + 1)).replace(
        hour=10, minute=0, second=0, microsecond=0
    )
    response = client.upload_video(
        video_path=f"/path/to/{video}",
        title=f"วันที่ {i + 1} ของซีรีส์สัปดาห์เปิดตัว",
        user="mybrand",
        platforms=["instagram"],
        media_type="REELS",
        scheduled_date=publish_date.isoformat(),
        timezone="Europe/Madrid"
    )
    print(f"ตั้งเวลา {video} ไว้ที่ {publish_date}: {response['job_id']}")

สคริปต์นี้ตั้งเวลาโพสต์ Reel วันละหนึ่งตัวตอน 10:00 น. ตามเวลามาดริด ตลอดทั้งสัปดาห์ ปรับ hour, timezone และ path ของไฟล์ให้ตรงกับงานของคุณ (เช่น Asia/Bangkok) ถ้าต้องอัปโหลดวิดีโอจำนวนมาก ให้อ่าน path ของวิดีโอจากโฟลเดอร์หรือไฟล์ CSV แล้ววนลูปแบบเดียวกัน

ทำอัตโนมัติแบบไม่ต้องเขียนโค้ด: n8n และ Make.com

ถ้าชอบสร้าง workflow แบบลากวางมากกว่าเขียนโค้ด ทั้ง n8n และ Make.com ใช้กับ Upload-Post ได้ทันที

n8n

n8n คือเครื่องมือ workflow automation แบบ open source ใช้ HTTP Request node เรียก Upload-Post API ได้เลย เรามีเทมเพลต n8n สำหรับ Instagram Reels ที่อ่านไฟล์วิดีโอจาก Google Drive ดึงแคปชันจาก Google Sheet แล้วโพสต์เป็น Reels ให้อัตโนมัติ ดูเทมเพลต n8n ทั้งหมดเพื่อหารูปแบบอื่นๆ

Make.com

Make.com (ชื่อเดิม Integromat) ทำงานเป็น scenario เพิ่มโมดูล HTTP ตั้งค่า endpoint ของ Upload-Post กับ API key แล้วเชื่อมกับ trigger อะไรก็ได้ เช่น แถวใหม่ใน Google Sheets ไฟล์ใหม่ใน Dropbox หรือตัวตั้งเวลา ผลลัพธ์เหมือนเขียนโค้ด แต่ใช้การลากวาง

ทั้งสองเครื่องมือรองรับพารามิเตอร์ตั้งเวลา (scheduled_date, add_to_queue) คุณจึงสร้างปฏิทินคอนเทนต์ Instagram ได้ครบโดยไม่ต้องเปิด terminal

ข้อกำหนดคอนเทนต์ของ Instagram

Upload-Post ปรับคอนเทนต์ให้อัตโนมัติเท่าที่ทำได้ (ด้วย FFmpeg API ในตัว) แต่การรู้ว่า Instagram ต้องการอะไรจะช่วยให้คุณเตรียมไฟล์ได้คุณภาพดีที่สุด

รูปแบบ สเปก รายละเอียด
วิดีโอ (Reels) ขนาดไฟล์สูงสุด 1 GB
ไฟล์ที่รองรับ MP4, MOV
อัตราส่วนภาพ แนะนำ 9:16 รองรับ 1:1 และ 4:5
ความยาว 3 วินาทีถึง 15 นาที
ความละเอียด แนะนำ 1080x1920
รูปภาพ ขนาดไฟล์สูงสุด 8 MB
ไฟล์ที่รองรับ JPEG, PNG
อัตราส่วนภาพ 1:1, 4:5, 1.91:1
ขนาดสูงสุด 1440x1440 (สี่เหลี่ยมจัตุรัส), 1080x1350 (แนวตั้ง)
Carousel จำนวนรูปสูงสุด 10 ต่อโพสต์
สื่อผสม รวมรูปภาพและวิดีโอในโพสต์เดียวได้

คำถามที่พบบ่อย

โพสต์ Instagram อัตโนมัติทำอย่างไร?

เชื่อมบัญชี Instagram Business หรือ Creator เข้ากับ Upload-Post แล้วส่งคำขอ POST ไปที่ endpoint /api/upload พร้อม platform[]=instagram คุณโพสต์ Reels (media_type=REELS), carousel รูปภาพ และรูปเดี่ยว ตั้งเวลาด้วย scheduled_date โพสต์ Stories (media_type=STORIES) และเพิ่มคอมเมนต์แรกอัตโนมัติได้ ทั้งหมดใน API call เดียว โดยไม่ต้องผ่าน Meta app review หรือตั้งค่า Graph API ตัวอย่าง cURL และ Python ด้านบนแสดงวิธีทำไว้ครบ

มี Instagram API สำหรับโพสต์ Reels และรูปอัตโนมัติไหม?

มี Upload-Post เปิดใช้ Content Publishing API อย่างเป็นทางการของ Instagram ผ่าน endpoint เดียว ส่ง platform[]=instagram พร้อมวิดีโอหรือรูป แล้ว API จะจัดการสร้าง container, เช็กสถานะ และเผยแพร่ Reels, carousel และรูปในฟีดให้ เป็น API ทางการตัวเดียวกับที่เครื่องมือตั้งเวลาโพสต์ที่ได้รับอนุญาตตัวอื่นใช้ ไม่ใช่บอตหรือการสั่งงานผ่านเบราว์เซอร์

ใช้กับบัญชี Instagram ส่วนตัวได้ไหม?

ไม่ได้ API ของ Instagram รองรับเฉพาะบัญชี Business และ Creator บัญชีส่วนตัวเข้าถึงผ่าน API ทางการไม่ได้เลย ข่าวดีคือการเปลี่ยนเป็นบัญชี Business หรือ Creator ทำได้ฟรีและใช้เวลาประมาณ 30 วินาทีในการตั้งค่าแอป Instagram Upload-Post เชื่อมต่อผ่าน Instagram Login จึงไม่ต้องผูกกับ Facebook Page

โพสต์ Instagram Stories ผ่าน API ได้ไหม?

ได้ ส่ง media_type=STORIES พร้อม platform[]=instagram ไปที่ endpoint วิดีโอ (/api/upload) หรือ endpoint รูปภาพ (/api/upload_photos) Stories จะไม่แสดงแคปชันและแท็กตำแหน่งไม่ได้ และสื่อแนวตั้ง 9:16 ให้ผลดีที่สุด

โพสต์อัตโนมัติจะทำให้บัญชีโดน shadowban ไหม?

Upload-Post เผยแพร่ผ่าน Content Publishing API อย่างเป็นทางการของ Instagram ซึ่งเป็นช่องทางเดียวกับที่เครื่องมือตั้งเวลาโพสต์ที่ได้รับอนุญาตตัวอื่นใช้ โพสต์ของคุณจึงไม่ถูกมองว่าเป็นระบบอัตโนมัติแบบที่บอตบนเบราว์เซอร์โดน แต่การที่ Instagram จะแสดงโพสต์ให้คนเห็นมากหรือน้อยยังขึ้นอยู่กับตัวคอนเทนต์เอง นอกจากนี้ Upload-Post จำกัดแต่ละบัญชีไว้ที่ 50 โพสต์ต่อ 24 ชั่วโมงล่าสุด เพื่อให้อยู่ในขีดจำกัดการเผยแพร่ของ Instagram อย่างสบาย ถ้าตอนนี้คุณใช้เครื่องมืออย่าง Hootsuite หรือ Later อยู่ Upload-Post คือทางเลือกที่เหมาะกับนักพัฒนาและใช้สิทธิ์เข้าถึงแบบทางการเหมือนกัน

มีแผนฟรีไหม?

มี ทุกบัญชี Upload-Post ได้อัปโหลดฟรี 10 ครั้งต่อเดือน ไม่ต้องใช้บัตรเครดิต เพียงพอสำหรับทดสอบ API ลอง workflow และเช็กว่าทุกอย่างทำงานได้ก่อนตัดสินใจจ่ายเงิน ดูปฏิทินวันสำคัญสำหรับโซเชียลมีเดียเพื่อวางแผนโพสต์แรกๆ ให้ตรงกับเทศกาลที่กำลังจะมาถึง หรือใช้เครื่องมือตัดรูปลง IG แบบตารางเพื่อแบ่งแบนเนอร์เป็นหลายช่อง แล้วตั้งเวลาโพสต์ตามลำดับ

เริ่มโพสต์ Instagram อัตโนมัติวันนี้

API call เดียว ครบทั้ง Reels, รูปภาพ, carousel, คอมเมนต์แรก, collaborators และการตั้งเวลา

ไม่ต้องใช้บัตรเครดิต อัปโหลดฟรี 10 ครั้ง