✅ Workflow làm được những gì?
- Chạy theo lịch tự động (ví dụ 15:00 mỗi ngày)
- Lọc đúng bài viết trong Notion theo ngày hiện tại
- Lấy và gom nội dung từ các block Notion, định dạng lại phù hợp với LinkedIn
- Tự động tải hình ảnh liên quan (nếu có)
- Đăng bài lên LinkedIn hoàn toàn tự động
- Cập nhật trạng thái bài viết trong Notion để dễ quản lý và không bị đăng trùng
💡 Phù hợp cho những ai:
- Làm personal branding trên LinkedIn nhưng muốn tối ưu thời gian
- Lên lịch và quản lý nội dung trên Notion
- Muốn có quy trình đăng bài ổn định, chuyên nghiệp và ít sai sót
1. Chuẩn bị trước khi import
- Tạo tài khoản & cài n8n
- Có thể dùng n8n Cloud hoặc tự host trên VPS / Docker.
- Chuẩn bị tài khoản & quyền truy cập
- Tài khoản Notion: tạo Integration và cấp quyền cho database chứa bài viết.
- Tài khoản LinkedIn: đã kết nối được với n8n (qua node LinkedIn) và có quyền đăng bài cho trang cá nhân hoặc Company Page mà bạn chọn.
2. Import workflow vào n8n
- Mở giao diện n8n → chọn Workflows → Import from File.
- Chọn file 0008-notion_linkedin_pub.json.
- Sau khi import, bạn sẽ thấy workflow có tên Notion to Linkedin với các node:
- Schedule Trigger
- Filter the table for the day's post
- Fetch the content on the page
- Aggregate the Notion blocks
- Format the post
- Download image
- Merge
- Publish on LinkedIn
- Update post status in notion database
- Một số Sticky Note để ghi chú.
3. Thiết lập Credentials cho Notion & LinkedIn
3.1. Notion
- Vào Settings → API trên Notion, tạo một Integration mới.
- Copy Internal Integration Token.
- Trên n8n:
- Vào Credentials → tạo mới Notion API credential.
- Dán token vừa copy.
- Quay lại Notion, mở database chứa bài viết (Ví dụ trong JSON đang dùng database ID: f09dc21b-1070-4d5a-bf7f-a9ab3dbb69fb – tên hiển thị là Postagens).
- Chia sẻ database đó cho Integration vừa tạo (Share → thêm Integration).
3.2. LinkedIn
- Trong n8n, tạo LinkedIn credential (theo hướng dẫn n8n – OAuth app LinkedIn).
- Kết nối, đảm bảo bạn đã:
- Liên kết với trang cá nhân và/hoặc Company Page.
- Có quyền w_member_social / w_organization_social tùy nơi đăng.
4. Cấu hình chi tiết từng node chính
4.1. Schedule Trigger – Lên lịch chạy
- Node: Schedule Trigger
- Trong JSON đang đặt:
- Rule interval → triggerAtHour: 15 → nghĩa là 15:00 mỗi ngày.
- Bạn có thể chỉnh lại:
- Tần suất (mỗi ngày, mỗi giờ, mỗi tuần…)
- Giờ chạy phù hợp múi giờ server.
4.2. Filter the table for the day's post – Lọc bài đăng trong Notion
- Node: Filter the table for the day's post (Notion node)
- Các thiết lập quan trọng:
- resource: databasePage
- operation: getAll
- databaseId: trỏ tới database bài viết của bạn
- filters:
- Field: Date|date
- Condition: equals
- Date: ={{ $today.format("yyyy/mM/dd") }}
- Việc bạn cần làm:
- Đảm bảo database Notion của bạn có property Date (kiểu date), tên khớp hoặc sửa lại filter cho đúng.
- Nếu bạn dùng tên property khác (ví dụ Ngày đăng), hãy sửa key lại tương ứng trong node.
4.3. Fetch the content on the page – Lấy nội dung từng bài
- Node: Fetch the content on the page (Notion node)
- Lấy blockId từ {{ $json.url }} của mỗi page trong database.
- Đảm bảo:
- Các page trong database là Notion page có nội dung dạng blocks (text, image, v.v.).
4.4. Aggregate the Notion blocks – Gom nội dung & ảnh
- Node: Aggregate the Notion blocks (Aggregate node)
- Đang gom:
- content
- image.file.url
- Yêu cầu:
- Workflow Notion đã chuẩn hóa để text ra trường content, ảnh ra image.file.url.
- Nếu cấu trúc block Notion của bạn khác, có thể cần chỉnh lại cách map/scripting trước node này.
4.5. Format the post – Định dạng bài LinkedIn
- Node: Format the post (Code node)
- Code đang làm nhiệm vụ:
- Ghép các dòng text trong mảng content thành một chuỗi formattedText.
- Nếu một dòng bắt đầu bằng - (gạch đầu dòng), sẽ thêm khoảng trống dòng phía trên để giống bullet list trên LinkedIn.
- Bạn có thể tùy chỉnh logic trong đoạn JS này:
- Thêm hashtag, CTA, link, signature cá nhân…
4.6. Download image – Tải ảnh từ Notion
- Node: Download image (HTTP Request)
- URL: ={{ $json.url[0] }} – lấy ảnh đầu tiên trong danh sách.
- Nếu bài viết không có ảnh, cần:
- Đảm bảo workflow vẫn chạy an toàn (ví dụ kiểm tra null trong bước trước đó, hoặc cho phép bài không ảnh).
4.7. Merge – Ghép text & ảnh
- Node: Merge
- Mode: combine – mergeByPosition
- Ghép output từ:
- Format the post (text)
- Download image (file binary)
- Kết quả: mỗi item chứa đầy đủ text + ảnh để đưa sang LinkedIn.
4.8. Publish on LinkedIn – Đăng bài
- Node: Publish on LinkedIn (LinkedIn node)
- Tham số quan trọng:
- person: "CcS-_lLyzG"
- Đây là ID profile/organization trong môi trường mẫu. Bạn phải đổi thành ID tương ứng trong tài khoản của bạn (chọn từ dropdown khi LinkedIn credential kết nối thành công).
- text: ={{ $json.formattedText }}
- shareMediaCategory: IMAGE (đăng bài có ảnh)
- Kiểm tra:
- Test với 1 bài demo trước khi bật schedule.
4.9. Update post status in notion database – Cập nhật trạng thái
- Node: Update post status in notion database (Notion node)
- Hoạt động:
- Tìm đúng page theo URL từ node Filter the table for the day's post.
- Cập nhật property Status|select thành "Published".
- Bạn cần:
- Đảm bảo database có property Status kiểu select và đã tạo option Published.
- Nếu dùng tên khác (ví dụ Trạng thái), sửa lại key trong node.
5. Kiểm tra & chạy thử
- Tạm thời tắt Schedule Trigger, sau đó bấm Execute Workflow từ node Filter the table for the day's post với một ngày có bài viết.
- Kiểm tra từng node:
- Có lấy đúng page Notion không?
- Nội dung text có đẹp & đúng format không?
- Ảnh tải về OK không?
- LinkedIn có đăng bài thành công (ở chế độ test) không?
- Notion có đổi Status sang Published không?
- Khi mọi thứ hoạt động đúng:
- Bật active cho workflow.
- Để Schedule Trigger tự động chạy mỗi ngày.
6. Gợi ý tùy biến thêm
- Thêm node IF để:
- Nếu hôm nay không có bài nào → không đăng, không báo lỗi.
- Thêm gửi thông báo:
- Qua email / Telegram / Slack sau khi đăng thành công.
- Thêm logic:
- Tự động gắn hashtag, thêm UTM link, thêm CTA cuối bài.