Website đọc truyện chạy được ngay, kèm crawler tự động
Source viết bằng Laravel 12, cấu trúc rõ ràng, không mã hoá, không ioncube. Toàn bộ phần đọc cho độc giả, phần quản trị và phần crawler đều nằm trong source — bạn sửa được tất cả.
Không cần Node/npm, không phải build. Giao diện dùng Tailwind qua CDN nên tải lên hosting là chạy, không phải cài thêm gì.
Phần dành cho độc giả
-
Trang chủ: truyện mới cập nhật, truyện đọc nhiều, danh sách thể loại
-
Danh sách truyện có phân trang, lọc truyện full / đang ra, sắp xếp theo mới cập nhật hoặc lượt đọc
-
Trang truyện: ảnh bìa, tác giả, thể loại, mô tả, mục lục chương có phân trang
-
Trang đọc: chuyển chương trước/sau, chỉnh cỡ chữ (lưu lại theo máy người đọc)
-
Tìm kiếm theo tên truyện và tên tác giả
-
Giao diện responsive, đọc tốt trên điện thoại
Crawler tự động
-
truyen:import — nhập một hoặc nhiều truyện theo slug
-
truyen:crawl-all — quét danh mục nguồn, tự nhập những truyện chưa có
-
truyen:update — cập nhật chương mới cho truyện đã có
-
truyen:tick — nhịp nền gộp cả hai việc, chỉ cần một dòng cron duy nhất
Crawler tự làm sạch nội dung: gỡ khối quảng cáo, gỡ đoạn chữ bị ẩn bằng CSS và gỡ link ngược về trang nguồn trong từng chương; đồng thời gỡ từ khoá thương hiệu của nguồn ra khỏi phần mô tả truyện. Đây là thứ quyết định trang của bạn trông sạch hay trông như đi cóp.
Sạch cả ảnh bìa. Bìa của nhiều trang nguồn bị đóng dấu tên họ ngay trong ảnh — tải về cũng không gỡ được. Source có sẵn bộ sinh ảnh bìa từ tên truyện (SVG, nhẹ, nét ở mọi kích thước, mỗi truyện một màu cố định), bật bằng một dòng trong .env. Trang của bạn sẽ không còn logo của ai khác.
Nhập lại nhiều lần không bị trùng chương nhờ ràng buộc duy nhất trên cặp truyện + slug chương. Mỗi nhịp đều có trần thời gian, nên một bộ truyện vài nghìn chương không chiếm cả tiến trình.
Thứ tự ưu tiên thông minh: truyện đang thiếu chương so với nguồn được bù trước (ưu tiên truyện nhiều lượt đọc), rồi mới tới truyện đang ra, cuối cùng là truyện đã full chỉ ngó lại mỗi 7 ngày.
Thêm nguồn truyện khác
Mỗi nguồn là một class chỉ cài 5 hàm. Chép file driver có sẵn rồi sửa phần chọn CSS/XPath cho khớp HTML trang mới, khai báo một dòng trong config/crawler.php là xong. Phần ghi dữ liệu dùng chung cho mọi nguồn, bạn không phải viết lại.
SEO đã làm sẵn
-
sitemap.xml tự chia nhỏ theo số chương (Google giới hạn 50.000 URL mỗi tệp)
-
robots.txt sinh động, đã chặn khu quản trị và trang tìm kiếm
-
Thẻ canonical, Open Graph, schema
Book trên trang truyện
-
Đường dẫn tiếng Việt không dấu:
/truyen/ten-truyen/chuong-1
Trang quản trị
-
Thống kê: số truyện, số chương, số thể loại, chương mới 24h, số truyện đang thiếu chương
-
Nút chạy crawl ngay, không cần đợi cron
-
Danh sách chương vừa nhập
Kèm theo
-
Thư mục
vendor có sẵn — không cần chạy composer nếu hosting không cho
-
File
README.md hướng dẫn cài đặt, cấu hình, thêm nguồn mới và xử lý lỗi thường gặp
-
.env.example đã chú thích rõ từng dòng
Lưu ý: crawler là công cụ kỹ thuật. Người mua tự chịu trách nhiệm về việc chọn nguồn và về bản quyền nội dung đăng trên website của mình.
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
Yêu cầu
-
PHP 8.2 trở lên, có extension
dom, mbstring, pdo, openssl
-
MySQL 5.7+ / MariaDB 10.3+
Các bước
-
Giải nén source vào thư mục web. Document root phải trỏ vào thư mục
public/, không phải thư mục gốc.
-
Chép
.env.example thành .env, điền thông tin CSDL.
-
Chạy
php artisan key:generate
-
Chạy
php artisan migrate để tạo bảng.
-
Chạy
php artisan db:seed để tạo tài khoản quản trị.
-
Cấp quyền ghi:
chmod -R 775 storage bootstrap/cache
Tài khoản quản trị mặc định là admin@example.com / doi-mat-khau-ngay. Muốn đặt khác thì thêm ADMIN_EMAIL và ADMIN_PASSWORD vào .env trước khi chạy db:seed. Đổi mật khẩu ngay sau khi cài xong.
Bật crawl tự động
Thêm một dòng cron duy nhất:
* * * * * cd /duong/dan/den/du-an && php artisan schedule:run >> /dev/null 2>&1
Thử nhập một truyện trước cho chắc:
php artisan truyen:import ten-slug-truyen --chapters=20
Nếu nhà mạng chặn trang nguồn
Khai proxy trong .env, dùng socks5h:// (có chữ h) để tên miền được phân giải tại proxy:
CRAWLER_PROXY=socks5h://127.0.0.1:1080
Lỗi thường gặp
-
Trang trắng / lỗi 500 sau khi cài: thiếu
APP_KEY hoặc thư mục storage/ không ghi được.
-
Crawl không ra chương nào: trang nguồn đã đổi HTML, sửa phần chọn CSS/XPath trong driver; hoặc mạng không vào được nguồn, khai
CRAWLER_PROXY.
-
Bị nguồn chặn sau một lúc: tăng
CRAWLER_DELAY lên 2–3 giây, giảm CRAWLER_IMPORT_CAP.
-
Bấm "Chạy crawl" trong admin không thấy gì: nút đó đẩy việc vào hàng đợi, cần chạy
php artisan queue:work, hoặc đợi nhịp cron kế tiếp.
File README.md trong source có bản hướng dẫn đầy đủ hơn.
Nguồn: Topcode.vn