Blogspot to facebook

 Dưới đây là một ví dụ mẫu sử dụng Google Apps Script để tự động lấy bài viết mới nhất từ RSS feed của Blogspot và đăng lên nhiều Trang Facebook (mỗi trang có Page ID và Page Access Token riêng). Bạn có thể triển khai mã này trong Google Apps Script (trên script.google.com) và đặt trigger chạy định kỳ (ví dụ, mỗi giờ) để tự động cập nhật.

Lưu ý: Blogspot không hỗ trợ mã server‑side tự động như WordPress, nên chúng ta sử dụng Google Apps Script – một môi trường chạy mã JavaScript của Google – để thực hiện tác vụ tự động này.


javascript
// Auto post new Blogspot posts to multiple Facebook Pages using Google Apps Script // Đường dẫn RSS feed của Blogspot (chỉnh sửa URL cho blog của bạn) var BLOG_RSS_URL = 'https://yourblog.blogspot.com/feeds/posts/default?alt=rss'; // Danh sách các Trang Facebook cần đăng bài // Mỗi phần tử là đối tượng với thuộc tính: id (Page ID) và token (Page Access Token) var FACEBOOK_PAGES = [ { id: 'PAGE_ID_1', token: 'PAGE_ACCESS_TOKEN_1' }, { id: 'PAGE_ID_2', token: 'PAGE_ACCESS_TOKEN_2' } // Thêm nhiều trang nếu cần ]; // Khóa để lưu trữ ID bài đăng cuối cùng đã được xử lý var LAST_POST_ID_KEY = 'LAST_POST_ID'; /** * Hàm chính chạy định kỳ: lấy bài đăng mới nhất từ Blogspot và đăng lên các Trang Facebook. */ function autoPostToFacebook() { var latestPost = fetchLatestPost(); if (!latestPost) { Logger.log('Không tìm thấy bài đăng nào.'); return; } var scriptProperties = PropertiesService.getScriptProperties(); var lastPostId = scriptProperties.getProperty(LAST_POST_ID_KEY); // Nếu bài đăng mới chưa được xử lý (so sánh bằng ID) if (latestPost.id === lastPostId) { Logger.log('Không có bài đăng mới để đăng.'); return; } // Tạo nội dung đăng (tiêu đề, trích dẫn và link) var message = latestPost.title + "\n\n" + latestPost.description + "\n\nXem thêm: " + latestPost.link; // Đăng bài lên từng Trang Facebook FACEBOOK_PAGES.forEach(function(page) { postToFacebook(page.id, page.token, message, latestPost.link, latestPost.image); }); // Cập nhật ID bài đăng đã xử lý scriptProperties.setProperty(LAST_POST_ID_KEY, latestPost.id); } /** * Hàm lấy bài đăng mới nhất từ RSS feed của Blogspot. * Sử dụng XmlService để phân tích cấu trúc XML. */ function fetchLatestPost() { try { var response = UrlFetchApp.fetch(BLOG_RSS_URL); var xml = response.getContentText(); var document = XmlService.parse(xml); var root = document.getRootElement(); var channel = root.getChild('channel'); var items = channel.getChildren('item'); if (items.length === 0) { return null; } var item = items[0]; // bài đăng mới nhất // Lấy thông tin bài đăng var postId = item.getChild('guid').getText(); var title = item.getChild('title').getText(); var link = item.getChild('link').getText(); // Lấy trích dẫn từ phần description (loại bỏ HTML) var descriptionHtml = item.getChild('description').getText(); var description = stripHtml(descriptionHtml); // Cố gắng lấy URL ảnh nếu có từ phần media (nếu blog của bạn có tích hợp ảnh) var image = null; var mediaNS = XmlService.getNamespace('media', 'http://search.yahoo.com/mrss/'); var thumbnail = item.getChild('thumbnail', mediaNS); if (thumbnail) { image = thumbnail.getAttribute('url').getValue(); } else { var mediaContent = item.getChild('content', mediaNS); if (mediaContent) { image = mediaContent.getAttribute('url').getValue(); } } return { id: postId, title: title, link: link, description: description, image: image }; } catch (e) { Logger.log('Lỗi khi lấy bài đăng: ' + e); return null; } } /** * Hàm loại bỏ các thẻ HTML khỏi chuỗi. */ function stripHtml(html) { return html.replace(/<[^>]*>/g, '').trim(); } /** * Hàm đăng bài lên Facebook bằng Facebook Graph API. * @param {string} pageId - ID của Trang Facebook. * @param {string} accessToken - Access Token của Trang. * @param {string} message - Nội dung bài đăng. * @param {string} link - Link bài đăng. * @param {string} image - (Tùy chọn) URL ảnh đại diện. */ function postToFacebook(pageId, accessToken, message, link, image) { var fbApiUrl = 'https://graph.facebook.com/' + pageId + '/feed'; var payload = { message: message, link: link, access_token: accessToken }; // Nếu có ảnh, thêm vào payload (tham số picture) if (image) { payload.picture = image; } var options = { method: 'post', payload: payload, muteHttpExceptions: true }; try { var response = UrlFetchApp.fetch(fbApiUrl, options); var responseCode = response.getResponseCode(); var responseText = response.getContentText(); Logger.log('Đăng bài lên Trang Facebook ' + pageId + ': ' + responseCode + ' ' + responseText); } catch (e) { Logger.log('Lỗi khi đăng bài lên Trang ' + pageId + ': ' + e); } }

Hướng dẫn triển khai

  1. Tùy chỉnh các tham số:

    • Thay đổi biến BLOG_RSS_URL thành URL RSS feed của blog Blogspot của bạn (đảm bảo thêm ?alt=rss vào cuối URL nếu cần).
    • Trong mảng FACEBOOK_PAGES, thay thế PAGE_ID_1, PAGE_ACCESS_TOKEN_1,… bằng thông tin của các Trang Facebook mà bạn muốn đăng bài.
  2. Triển khai mã:

    • Vào Google Apps Script và tạo một dự án mới.
    • Sao chép toàn bộ mã trên vào tập tin mã nguồn của dự án.
  3. Thiết lập trigger:

    • Vào menu Edit > Current project's triggers và tạo trigger chạy hàm autoPostToFacebook theo lịch (ví dụ, mỗi giờ) để kiểm tra và đăng bài mới.
  4. Kiểm tra và debug:

    • Xem log trong Apps Script Logger để theo dõi quá trình và kiểm tra các lỗi nếu có.

Lưu ý

  • Mã trên chỉ là ví dụ mẫu cơ bản. Trong thực tế, bạn có thể mở rộng để kiểm tra bài đăng mới theo thời gian, xử lý lỗi phức tạp, hoặc cấu hình động qua PropertiesService hoặc một giao diện web đơn giản.
  • Đảm bảo rằng ứng dụng Facebook của bạn có các quyền cần thiết (ví dụ: pages_manage_posts) để cho phép đăng bài qua Graph API.
  • Bạn cần tạo và quản lý các Access Token của các Trang Facebook của mình, có thể dùng các công cụ như Facebook Graph API Explorer để tạo token.

Với mã này, mỗi khi trigger chạy, Apps Script sẽ kiểm tra RSS feed của Blogspot, nếu có bài đăng mới, nó sẽ đăng bài với nội dung tùy chỉnh (tiêu đề, trích dẫn, link và ảnh nếu có) lên tất cả các Trang Facebook được cấu hình.

Comments

Popular posts from this blog

The World at a Crossroads: Donald Trump’s Presidency and Its Global Impact

Cho tam giác ABC vuông tại A có AB < AC. Vẽ AH vuông góc với BC ( H thuộc BC), D là điểm trên cạnh AC sao cho AD=AB. Vẽ DE vuông góc với BC( E thuộc BC). Chứng minh rằng : HA=HE.

Cho tam giác ABC vuông ở B, kéo dài AC về phía C một đoạn CD=AB=1, góc CBD=30 độ. Tính AC.