Seafile does not currently handle symlinks as I had expected. Instead of treating a symlink like a single file, it will treat it as a folder and sync all the content within it. On the one hand, this means the content will be available on Seafile even if the endpoint is not within a Library, but can result in huge amounts of server storage wastage through duplication, and infinite loops.
Luckily, it looks like this is an open issue that is going to be addressed, but for now one user has posted a useful workaround.
Seafile has support for ignoring files that match a pattern specified in a specific file location, similar to how a
.gitignore file works in git. Simply create a file called
seafile-ignore.txt at the top of your libraries. In this file, specify a pattern that will only match your symlinks. Since Nautilus will create links with the name "Link to ..." I simply added one line to my seafile-ignore file like so:
Link to *
Now my symlinks will no longer be synced to seafile, but I have to keep the "Link to ..." naming scheme.